diff --git a/idea/src/org/jetbrains/jet/lang/resolve/AnalyzingUtils.java b/idea/src/org/jetbrains/jet/lang/resolve/AnalyzingUtils.java index d20100828ad..0956d5b91f2 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/AnalyzingUtils.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/AnalyzingUtils.java @@ -1,6 +1,9 @@ package org.jetbrains.jet.lang.resolve; import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiElementVisitor; +import com.intellij.psi.PsiErrorElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.ErrorHandler; import org.jetbrains.jet.lang.JetSemanticServices; @@ -15,6 +18,20 @@ import org.jetbrains.jet.lang.types.ModuleDescriptor; * @author abreslav */ public class AnalyzingUtils { + public static void checkForSyntacticErrors(@NotNull PsiElement root) { + root.acceptChildren(new PsiElementVisitor() { + @Override + public void visitElement(PsiElement element) { + element.acceptChildren(this); + } + + @Override + public void visitErrorElement(PsiErrorElement element) { + throw new IllegalArgumentException(element.getErrorDescription()); + } + }); + } + public static BindingContext analyzeFile(@NotNull JetFile file, @NotNull ErrorHandler errorHandler) { JetNamespace rootNamespace = file.getRootNamespace(); return analyzeNamespace(rootNamespace, errorHandler, JetControlFlowDataTraceFactory.EMPTY); diff --git a/idea/tests/org/jetbrains/jet/codegen/CodegenTestCase.java b/idea/tests/org/jetbrains/jet/codegen/CodegenTestCase.java index 56375b2f5f1..a62c81fc4a0 100644 --- a/idea/tests/org/jetbrains/jet/codegen/CodegenTestCase.java +++ b/idea/tests/org/jetbrains/jet/codegen/CodegenTestCase.java @@ -7,6 +7,7 @@ import org.jetbrains.jet.JetLightProjectDescriptor; import org.jetbrains.jet.lang.JetFileType; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetNamespace; +import org.jetbrains.jet.lang.resolve.AnalyzingUtils; import org.jetbrains.jet.parsing.JetParsingTest; import java.lang.reflect.Method; @@ -41,6 +42,7 @@ public abstract class CodegenTestCase extends LightCodeInsightFixtureTestCase { protected String generateToText() { Codegens state = new Codegens(getProject(), true); JetFile jetFile = (JetFile) myFixture.getFile(); + AnalyzingUtils.checkForSyntacticErrors(jetFile); JetNamespace namespace = jetFile.getRootNamespace(); NamespaceCodegen codegen = state.forNamespace(namespace); codegen.generate(namespace); @@ -80,6 +82,7 @@ public abstract class CodegenTestCase extends LightCodeInsightFixtureTestCase { protected Codegens generateClassesInFile() { Codegens state = new Codegens(getProject(), false); JetFile jetFile = (JetFile) myFixture.getFile(); + AnalyzingUtils.checkForSyntacticErrors(jetFile); final JetNamespace namespace = jetFile.getRootNamespace(); NamespaceCodegen codegen = state.forNamespace(namespace); diff --git a/idea/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java b/idea/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java index 16f256eb009..786fb584c8a 100644 --- a/idea/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java +++ b/idea/tests/org/jetbrains/jet/codegen/PrimitiveTypesTest.java @@ -157,19 +157,19 @@ public class PrimitiveTypesTest extends CodegenTestCase { } public void testPreIncrement() throws Exception { - loadText("fun foo(a: Int): Int { var x = a; ++x; return x;"); + loadText("fun foo(a: Int): Int { var x = a; ++x; return x;}"); final Method main = generateFunction(); assertEquals(11, main.invoke(null, 10)); } public void testPreIncrementValue() throws Exception { - loadText("fun foo(a: Int): Int { var x = a; return ++x;"); + loadText("fun foo(a: Int): Int { var x = a; return ++x;}"); final Method main = generateFunction(); assertEquals(11, main.invoke(null, 10)); } public void testPreDecrement() throws Exception { - loadText("fun foo(a: Int): Int { return --a;"); + loadText("fun foo(a: Int): Int { return --a;}"); final Method main = generateFunction(); assertEquals(9, main.invoke(null, 10)); }