Don't test line numbers on *Package classes

Package classes in line number tests only contain "1" as the first line number
of a single function, so there's no point in testing it. The test was failing
due to the latest changes in the order of generation of classfiles (first $src,
then facade)
This commit is contained in:
Alexander Udalov
2013-07-17 16:03:06 +04:00
committed by Pavel V. Talanov
parent f77dd0bad6
commit 9cb19d17b0
9 changed files with 20 additions and 16 deletions
@@ -29,7 +29,6 @@ import org.jetbrains.jet.cli.jvm.compiler.CompileEnvironmentUtil;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetPsiFactory;
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.parsing.JetParsingTest;
@@ -51,7 +50,7 @@ public class LineNumberTest extends TestCaseWithTmpdir {
private static final Pattern TEST_LINE_NUMBER_PATTERN = Pattern.compile("^.*test." + LINE_NUMBER_FUN + "\\(\\).*$");
@NotNull
private String getTestDataPath() {
private static String getTestDataPath() {
return JetParsingTest.getTestDataDir() + "/lineNumber";
}
@@ -94,7 +93,8 @@ public class LineNumberTest extends TestCaseWithTmpdir {
JetFile psiFile = createPsiFile(filename);
GenerationState state = GenerationUtils.compileFileGetGenerationStateForTest(psiFile);
List<Integer> expectedLineNumbers, actualLineNumbers;
List<Integer> expectedLineNumbers;
List<Integer> actualLineNumbers;
if (custom) {
expectedLineNumbers = extractCustomLineNumbersFromSource(psiFile);
actualLineNumbers = extractActualLineNumbersFromBytecode(state, false);
@@ -109,10 +109,14 @@ public class LineNumberTest extends TestCaseWithTmpdir {
}
@NotNull
private List<Integer> extractActualLineNumbersFromBytecode(@NotNull GenerationState state, boolean testFunInvoke) {
private static List<Integer> extractActualLineNumbersFromBytecode(@NotNull GenerationState state, boolean testFunInvoke) {
ClassFileFactory factory = state.getFactory();
List<Integer> actualLineNumbers = Lists.newArrayList();
for (String filename : factory.files()) {
if (PackageClassUtils.isPackageClassFqName(new FqName(FileUtil.getNameWithoutExtension(filename)))) {
// Don't test line numbers in *Package facade classes
continue;
}
ClassReader cr = new ClassReader(factory.asBytes(filename));
try {
List<Integer> lineNumbers = testFunInvoke ? readTestFunLineNumbers(cr) : readAllLineNumbers(cr);
@@ -136,7 +140,7 @@ public class LineNumberTest extends TestCaseWithTmpdir {
}
@NotNull
private List<Integer> extractCustomLineNumbersFromSource(@NotNull JetFile file) {
private static List<Integer> extractCustomLineNumbersFromSource(@NotNull JetFile file) {
String fileContent = file.getText();
List<Integer> lineNumbers = Lists.newArrayList();
String[] lines = StringUtil.convertLineSeparators(fileContent).split("\n");
@@ -154,7 +158,7 @@ public class LineNumberTest extends TestCaseWithTmpdir {
}
@NotNull
private List<Integer> extractSelectedLineNumbersFromSource(@NotNull JetFile file) {
private static List<Integer> extractSelectedLineNumbersFromSource(@NotNull JetFile file) {
String fileContent = file.getText();
List<Integer> lineNumbers = Lists.newArrayList();
String[] lines = StringUtil.convertLineSeparators(fileContent).split("\n");
@@ -170,7 +174,7 @@ public class LineNumberTest extends TestCaseWithTmpdir {
}
@NotNull
private List<Integer> readTestFunLineNumbers(@NotNull ClassReader cr) {
private static List<Integer> readTestFunLineNumbers(@NotNull ClassReader cr) {
final List<Label> labels = Lists.newArrayList();
final Map<Label, Integer> labels2LineNumbers = Maps.newHashMap();
@@ -215,7 +219,7 @@ public class LineNumberTest extends TestCaseWithTmpdir {
}
@NotNull
private List<Integer> readAllLineNumbers(@NotNull ClassReader reader) {
private static List<Integer> readAllLineNumbers(@NotNull ClassReader reader) {
final List<Integer> result = new ArrayList<Integer>();
reader.accept(new ClassVisitor(Opcodes.ASM4) {
@Override