blob: fc1a01e32a5db79fbbc5874714e47ab963698761 [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.shaking.clinit;
import static com.android.tools.r8.graph.DexProgramClass.asProgramClassOrNull;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexProgramClass;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
public class ClassMayHaveInitializationSideEffectsTestBase extends TestBase {
public void assertMayHaveClassInitializationSideEffects(
AppView<AppInfoWithLiveness> appView, Class<?> clazz) {
assertMayHaveClassInitializationSideEffectsEquals(appView, clazz, true);
}
public void assertNoClassInitializationSideEffects(
AppView<AppInfoWithLiveness> appView, Class<?> clazz) {
assertMayHaveClassInitializationSideEffectsEquals(appView, clazz, false);
}
public void assertMayHaveClassInitializationSideEffectsEquals(
AppView<AppInfoWithLiveness> appView, Class<?> clazz, boolean expected) {
DexType type = toDexType(clazz, appView.dexItemFactory());
DexProgramClass programClass = asProgramClassOrNull(appView.appInfo().definitionFor(type));
assertNotNull(programClass);
assertEquals(expected, programClass.classInitializationMayHaveSideEffects(appView));
}
}