Add test on bytecode text
Test data should be a Kotlin source file with zero or more comments e.g. of the form: '// 1 INVOKEVIRTUAL'. The test then checks that the generated bytecode for this file contains exactly one occurrence of the string 'INVOKEVIRTUAL'
This commit is contained in:
+3
-1
@@ -14,4 +14,6 @@ class Tester() {
|
|||||||
fun S.component4() = ((a + b) as java.lang.String).substring(2)
|
fun S.component4() = ((a + b) as java.lang.String).substring(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun box() = Tester().box()
|
fun box() = Tester().box()
|
||||||
|
|
||||||
|
// 1 NEW S
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
fun foo() = 10!!.toString()
|
||||||
|
|
||||||
|
// 0 IFNONNULL
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
val a : Int? = 10
|
||||||
|
|
||||||
|
fun foo() = a!!.toString()
|
||||||
|
|
||||||
|
// 1 IFNONNULL
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
val a : Int? = 10
|
||||||
|
|
||||||
|
fun foo() = a?.toString()
|
||||||
|
|
||||||
|
// 1 IFNULL
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
fun foo() = 10?.toString()
|
||||||
|
|
||||||
|
// 0 IFNULL
|
||||||
+4
-1
@@ -15,4 +15,7 @@ class B {
|
|||||||
fun foo() {
|
fun foo() {
|
||||||
foo = 2
|
foo = 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0 INVOKEVIRTUAL
|
||||||
|
// 4 INVOKESPECIAL
|
||||||
+2
-1
@@ -12,5 +12,6 @@ class Child: Base<String>() {
|
|||||||
override fun bar() {
|
override fun bar() {
|
||||||
super.bar()
|
super.bar()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 1 bridge
|
||||||
+3
@@ -11,3 +11,6 @@ class B {
|
|||||||
fun box(): String {
|
fun box(): String {
|
||||||
return "OK"
|
return "OK"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0 INVOKEVIRTUAL
|
||||||
|
// 3 INVOKESPECIAL
|
||||||
+2
@@ -7,3 +7,5 @@ fun foo() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0 GETSTATIC
|
||||||
+2
@@ -7,3 +7,5 @@ fun foo(b: Boolean) {
|
|||||||
z(b)
|
z(b)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0 GETSTATIC
|
||||||
+2
@@ -3,3 +3,5 @@ fun foo(b: Boolean) {
|
|||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0 GETSTATIC
|
||||||
+2
@@ -21,3 +21,5 @@ fun foo() {
|
|||||||
z()
|
z()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0 GETSTATIC
|
||||||
+2
@@ -7,3 +7,5 @@ fun foo(x: Int) {
|
|||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0 GETSTATIC
|
||||||
+2
@@ -7,3 +7,5 @@ fun foo(x: Int) {
|
|||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 0 GETSTATIC
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2013 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.jet.codegen;
|
||||||
|
|
||||||
|
import com.intellij.openapi.util.io.FileUtil;
|
||||||
|
import com.intellij.openapi.util.text.StringUtil;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.ConfigurationKind;
|
||||||
|
import org.jetbrains.jet.utils.ExceptionUtils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
public abstract class AbstractBytecodeTextTest extends CodegenTestCase {
|
||||||
|
private static final Pattern EXPECTED_OCCURRENCES_PATTERN = Pattern.compile("^\\s*//\\s*(\\d+)\\s*(.*)$");
|
||||||
|
|
||||||
|
public void doTest(@NotNull String filename) throws Exception {
|
||||||
|
createEnvironmentWithMockJdkAndIdeaAnnotations(ConfigurationKind.JDK_ONLY);
|
||||||
|
loadFileByFullPath(filename);
|
||||||
|
List<OccurrenceInfo> expected = readExpectedOccurrences(filename);
|
||||||
|
countAndCompareActualOccurrences(expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void countAndCompareActualOccurrences(@NotNull List<OccurrenceInfo> expectedOccurrences) {
|
||||||
|
StringBuilder expected = new StringBuilder();
|
||||||
|
StringBuilder actual = new StringBuilder();
|
||||||
|
|
||||||
|
String text = generateToText();
|
||||||
|
for (OccurrenceInfo info : expectedOccurrences) {
|
||||||
|
expected.append(info.numberOfOccurrences).append(" ").append(info.needle).append("\n");
|
||||||
|
int actualCount = StringUtil.getOccurrenceCount(text, info.needle);
|
||||||
|
actual.append(actualCount).append(" ").append(info.needle).append("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
assertEquals(expected.toString(), actual.toString());
|
||||||
|
}
|
||||||
|
catch (Throwable e) {
|
||||||
|
System.out.println(text);
|
||||||
|
ExceptionUtils.rethrow(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private List<OccurrenceInfo> readExpectedOccurrences(@NotNull String filename) throws Exception {
|
||||||
|
List<OccurrenceInfo> result = new ArrayList<OccurrenceInfo>();
|
||||||
|
String[] lines = FileUtil.loadFile(new File(filename), true).split("\n");
|
||||||
|
|
||||||
|
for (String line : lines) {
|
||||||
|
Matcher matcher = EXPECTED_OCCURRENCES_PATTERN.matcher(line);
|
||||||
|
if (matcher.matches()) {
|
||||||
|
int numberOfOccurrences = Integer.parseInt(matcher.group(1));
|
||||||
|
String needle = matcher.group(2);
|
||||||
|
result.add(new OccurrenceInfo(numberOfOccurrences, needle));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class OccurrenceInfo {
|
||||||
|
private final int numberOfOccurrences;
|
||||||
|
private final String needle;
|
||||||
|
|
||||||
|
private OccurrenceInfo(int numberOfOccurrences, @NotNull String needle) {
|
||||||
|
this.numberOfOccurrences = numberOfOccurrences;
|
||||||
|
this.needle = needle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,124 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2013 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.jet.codegen;
|
||||||
|
|
||||||
|
import junit.framework.Assert;
|
||||||
|
import junit.framework.Test;
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
import org.jetbrains.jet.JetTestUtils;
|
||||||
|
import org.jetbrains.jet.test.InnerTestClasses;
|
||||||
|
import org.jetbrains.jet.test.TestMetadata;
|
||||||
|
|
||||||
|
import org.jetbrains.jet.codegen.AbstractBytecodeTextTest;
|
||||||
|
|
||||||
|
/** This class is generated by {@link org.jetbrains.jet.generators.tests.GenerateTests}. DO NOT MODIFY MANUALLY */
|
||||||
|
@SuppressWarnings("all")
|
||||||
|
@TestMetadata("compiler/testData/codegen/bytecodeText")
|
||||||
|
@InnerTestClasses({BytecodeTextTestGenerated.Statements.class})
|
||||||
|
public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
|
||||||
|
public void testAllFilesPresentInBytecodeText() throws Exception {
|
||||||
|
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/codegen/bytecodeText"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("componentEvaluatesOnlyOnce.kt")
|
||||||
|
public void testComponentEvaluatesOnlyOnce() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/componentEvaluatesOnlyOnce.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("intConstantNotNull.kt")
|
||||||
|
public void testIntConstantNotNull() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/intConstantNotNull.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("intConstantNullable.kt")
|
||||||
|
public void testIntConstantNullable() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/intConstantNullable.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("intConstantNullableSafeCall.kt")
|
||||||
|
public void testIntConstantNullableSafeCall() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/intConstantNullableSafeCall.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("intConstantSafeCall.kt")
|
||||||
|
public void testIntConstantSafeCall() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/intConstantSafeCall.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt2202.kt")
|
||||||
|
public void testKt2202() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/kt2202.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt2887.kt")
|
||||||
|
public void testKt2887() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/kt2887.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("privateDefaultArgs.kt")
|
||||||
|
public void testPrivateDefaultArgs() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/privateDefaultArgs.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compiler/testData/codegen/bytecodeText/statements")
|
||||||
|
public static class Statements extends AbstractBytecodeTextTest {
|
||||||
|
public void testAllFilesPresentInStatements() throws Exception {
|
||||||
|
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/codegen/bytecodeText/statements"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("ifSingleBranch.kt")
|
||||||
|
public void testIfSingleBranch() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/statements/ifSingleBranch.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("ifThenElse.kt")
|
||||||
|
public void testIfThenElse() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/statements/ifThenElse.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("ifThenElseEmpty.kt")
|
||||||
|
public void testIfThenElseEmpty() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/statements/ifThenElseEmpty.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("tryCatchFinally.kt")
|
||||||
|
public void testTryCatchFinally() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/statements/tryCatchFinally.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("when.kt")
|
||||||
|
public void testWhen() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/statements/when.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("whenSubject.kt")
|
||||||
|
public void testWhenSubject() throws Exception {
|
||||||
|
doTest("compiler/testData/codegen/bytecodeText/statements/whenSubject.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Test suite() {
|
||||||
|
TestSuite suite = new TestSuite("BytecodeTextTestGenerated");
|
||||||
|
suite.addTestSuite(BytecodeTextTestGenerated.class);
|
||||||
|
suite.addTestSuite(Statements.class);
|
||||||
|
return suite;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2013 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.jet.codegen;
|
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.jetbrains.jet.ConfigurationKind;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This test is separate from MultiDeclTestGenerated because we specifically test generated bytecode
|
|
||||||
* that expression does not evaluated several time
|
|
||||||
*/
|
|
||||||
public class ComponentGenTest extends CodegenTestCase {
|
|
||||||
public void testComponent() {
|
|
||||||
createEnvironmentWithMockJdkAndIdeaAnnotations(ConfigurationKind.JDK_ONLY);
|
|
||||||
loadFile("componentEvaluatesOnlyOnce.kt");
|
|
||||||
assertEquals(1, StringUtils.countMatches(generateToText(), "NEW S\n"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -54,11 +54,4 @@ public class FunctionGenTest extends CodegenTestCase {
|
|||||||
assertTrue((Boolean) foo.invoke(null, "lala"));
|
assertTrue((Boolean) foo.invoke(null, "lala"));
|
||||||
assertFalse((Boolean) foo.invoke(null, "mama"));
|
assertFalse((Boolean) foo.invoke(null, "mama"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testPrivateDefaultArgs() throws Exception {
|
|
||||||
loadFile("functions/privateDefaultArgs.kt");
|
|
||||||
String text = generateToText();
|
|
||||||
assertFalse(text.contains("INVOKEVIRTUAL"));
|
|
||||||
assertTrue(text.contains("INVOKESPECIAL"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -271,24 +271,4 @@ public class PrimitiveTypesTest extends CodegenTestCase {
|
|||||||
final Method main = generateFunction();
|
final Method main = generateFunction();
|
||||||
assertEquals(expected, main.invoke(null, arg1, arg2));
|
assertEquals(expected, main.invoke(null, arg1, arg2));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSureNonnull () throws Exception {
|
|
||||||
loadText("fun box() = 10!!.toString()");
|
|
||||||
assertFalse(generateToText().contains("IFNONNULL"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSureNullable () throws Exception {
|
|
||||||
loadText("val a : Int? = 10; fun box() = a!!.toString()");
|
|
||||||
assertTrue(generateToText().contains("IFNONNULL"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSafeNonnull () throws Exception {
|
|
||||||
loadText("fun box() = 10?.toString()");
|
|
||||||
assertFalse(generateToText().contains("IFNULL"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testSafeNullable () throws Exception {
|
|
||||||
loadText("val a : Int? = 10; fun box() = a?.toString()");
|
|
||||||
assertTrue(generateToText().contains("IFNULL"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -259,12 +259,4 @@ public class PropertyGenTest extends CodegenTestCase {
|
|||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testKt2202() {
|
|
||||||
loadFile("properties/kt2202.kt");
|
|
||||||
String text = generateToText();
|
|
||||||
assertFalse(text.contains("INVOKEVIRTUAL"));
|
|
||||||
assertTrue(text.contains("INVOKESPECIAL"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,63 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2013 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.jet.codegen;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.jet.ConfigurationKind;
|
|
||||||
|
|
||||||
public class StatementGenTest extends CodegenTestCase {
|
|
||||||
@Override
|
|
||||||
protected void setUp() throws Exception {
|
|
||||||
super.setUp();
|
|
||||||
createEnvironmentWithMockJdkAndIdeaAnnotations(ConfigurationKind.JDK_ONLY);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void doTest() {
|
|
||||||
loadFile("statements/" + getTestName(true) + ".kt");
|
|
||||||
String text = generateToText();
|
|
||||||
// 'getstatic' means we refer to Unit.VALUE, which we shouldn't since these tests contain only statements
|
|
||||||
assertNoGetStatic(text);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void assertNoGetStatic(@NotNull String text) {
|
|
||||||
assertFalse(text, text.toLowerCase().contains("getstatic"));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testIfSingleBranch() {
|
|
||||||
doTest();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testIfThenElse() {
|
|
||||||
doTest();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testIfThenElseEmpty() {
|
|
||||||
doTest();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testTryCatchFinally() {
|
|
||||||
doTest();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testWhen() {
|
|
||||||
doTest();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testWhenSubject() {
|
|
||||||
doTest();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2013 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.jet.codegen;
|
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.jetbrains.jet.ConfigurationKind;
|
|
||||||
|
|
||||||
public class SuperGenTest extends CodegenTestCase {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void setUp() throws Exception {
|
|
||||||
super.setUp();
|
|
||||||
createEnvironmentWithMockJdkAndIdeaAnnotations(ConfigurationKind.JDK_ONLY);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testKt2887() {
|
|
||||||
loadFile("super/kt2887.kt");
|
|
||||||
String text = generateToText();
|
|
||||||
// There should be exactly one bridge in this example
|
|
||||||
assertEquals(1, StringUtils.countMatches(text, "bridge"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -20,6 +20,7 @@ import junit.framework.TestCase;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.checkers.AbstractDiagnosticsTestWithEagerResolve;
|
import org.jetbrains.jet.checkers.AbstractDiagnosticsTestWithEagerResolve;
|
||||||
import org.jetbrains.jet.checkers.AbstractJetPsiCheckerTest;
|
import org.jetbrains.jet.checkers.AbstractJetPsiCheckerTest;
|
||||||
|
import org.jetbrains.jet.codegen.AbstractBytecodeTextTest;
|
||||||
import org.jetbrains.jet.codegen.AbstractCheckLocalVariablesTableTest;
|
import org.jetbrains.jet.codegen.AbstractCheckLocalVariablesTableTest;
|
||||||
import org.jetbrains.jet.codegen.defaultConstructor.AbstractDefaultConstructorCodegenTest;
|
import org.jetbrains.jet.codegen.defaultConstructor.AbstractDefaultConstructorCodegenTest;
|
||||||
import org.jetbrains.jet.codegen.flags.AbstractWriteFlagsTest;
|
import org.jetbrains.jet.codegen.flags.AbstractWriteFlagsTest;
|
||||||
@@ -96,6 +97,13 @@ public class GenerateTests {
|
|||||||
testModel("compiler/testData/codegen/boxWithStdlib", "doTestWithStdlib")
|
testModel("compiler/testData/codegen/boxWithStdlib", "doTestWithStdlib")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
generateTest(
|
||||||
|
"compiler/tests/",
|
||||||
|
"BytecodeTextTestGenerated",
|
||||||
|
AbstractBytecodeTextTest.class,
|
||||||
|
testModel("compiler/testData/codegen/bytecodeText")
|
||||||
|
);
|
||||||
|
|
||||||
generateTest(
|
generateTest(
|
||||||
"compiler/tests/",
|
"compiler/tests/",
|
||||||
"CheckLocalVariablesTableTestGenerated",
|
"CheckLocalVariablesTableTestGenerated",
|
||||||
|
|||||||
Reference in New Issue
Block a user