blob: 07e4dc2591a2b3f09e50b85c273694537204696b [file] [log] [blame]
// Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.graph;
import com.android.tools.r8.errors.Unreachable;
import java.util.Map;
public class FinalInitClassLens extends InitClassLens {
private final Map<DexType, DexField> mapping;
FinalInitClassLens(Map<DexType, DexField> mapping) {
this.mapping = mapping;
}
@Override
public DexField getInitClassField(DexType type) {
DexField field = mapping.get(type);
if (field != null) {
return field;
}
throw new Unreachable("Unexpected InitClass instruction for `" + type.toSourceString() + "`");
}
@Override
public boolean isFinal() {
return true;
}
@Override
public InitClassLens rewrittenWithLens(GraphLens lens) {
InitClassLens.Builder builder = InitClassLens.builder();
mapping.forEach(
(type, field) -> {
DexType rewrittenType = lens.lookupType(type);
DexField rewrittenField = lens.lookupField(field);
builder.map(rewrittenType, rewrittenField);
});
return builder.build();
}
}