diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java b/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java index a378304ac3d..db142585742 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java @@ -8,6 +8,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import com.intellij.psi.PsiElement; import com.intellij.util.containers.Stack; +import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods; import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; @@ -23,6 +24,7 @@ import java.util.Collections; import java.util.List; public class GenerationState { + @NotNull private final ClassFileFactory factory; private final Project project; @@ -38,6 +40,7 @@ public class GenerationState { this.intrinsics = new IntrinsicMethods(project, standardLibrary); } + @NotNull public ClassFileFactory getFactory() { return factory; } diff --git a/compiler/backend/src/org/jetbrains/jet/compiler/CompileSession.java b/compiler/backend/src/org/jetbrains/jet/compiler/CompileSession.java index 494291f1d52..282fe666fa7 100644 --- a/compiler/backend/src/org/jetbrains/jet/compiler/CompileSession.java +++ b/compiler/backend/src/org/jetbrains/jet/compiler/CompileSession.java @@ -4,6 +4,7 @@ import com.google.common.base.Predicates; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; +import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.JetCoreEnvironment; import org.jetbrains.jet.codegen.ClassBuilderFactory; import org.jetbrains.jet.codegen.ClassFileFactory; @@ -107,6 +108,7 @@ public class CompileSession { return !errorCollector.hasErrors; } + @NotNull public ClassFileFactory generate() { GenerationState generationState = new GenerationState(myEnvironment.getProject(), ClassBuilderFactory.BINARIES); generationState.compileCorrectFiles(myBindingContext, mySourceFiles); diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java index 28a91e2dafa..e29335cad53 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java @@ -1,6 +1,7 @@ package org.jetbrains.jet.codegen; import com.intellij.openapi.util.text.StringUtil; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.JetLiteFixture; import org.jetbrains.jet.lang.psi.JetFile; @@ -109,13 +110,13 @@ public abstract class CodegenTestCase extends JetLiteFixture { return loadRootNamespaceClass(state); } - protected Class loadRootNamespaceClass(ClassFileFactory state) { + protected Class loadRootNamespaceClass(@NotNull ClassFileFactory state) { String fqName = NamespaceCodegen.getJVMClassName(JetPsiUtil.getFQName(myFile)).replace("/", "."); Map classMap = loadAllClasses(state); return classMap.get(fqName); } - protected Class loadClass(String fqName, ClassFileFactory state) { + protected Class loadClass(String fqName, @NotNull ClassFileFactory state) { List files = state.files(); for (String file : files) { if (file.equals(fqName.replace('.', '/') + ".class")) { @@ -128,7 +129,7 @@ public abstract class CodegenTestCase extends JetLiteFixture { return null; } - protected Map loadAllClasses(ClassFileFactory state) { + protected Map loadAllClasses(@NotNull ClassFileFactory state) { Map result = new HashMap(); for (String fileName : state.files()) { String className = StringUtil.trimEnd(fileName, ".class").replace('/', '.'); @@ -139,6 +140,7 @@ public abstract class CodegenTestCase extends JetLiteFixture { return result; } + @NotNull protected ClassFileFactory generateClassesInFile() { try { GenerationState state = new GenerationState(getProject(), ClassBuilderFactory.BINARIES); @@ -200,7 +202,7 @@ public abstract class CodegenTestCase extends JetLiteFixture { assertTrue(Math.abs(returnValue - currentTime) <= 1L); } - protected Class loadImplementationClass(ClassFileFactory codegens, final String name) { + protected Class loadImplementationClass(@NotNull ClassFileFactory codegens, final String name) { return loadClass(name, codegens); } diff --git a/compiler/tests/org/jetbrains/jet/codegen/StdlibTest.java b/compiler/tests/org/jetbrains/jet/codegen/StdlibTest.java index f16bdf4617b..434aa5106ca 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/StdlibTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/StdlibTest.java @@ -1,5 +1,7 @@ package org.jetbrains.jet.codegen; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.compiler.CompileEnvironment; import org.jetbrains.jet.compiler.CompileSession; @@ -30,6 +32,7 @@ public class StdlibTest extends CodegenTestCase { return session.generateText(); } + @NotNull protected ClassFileFactory generateClassesInFile() { try { CompileSession session = new CompileSession(myEnvironment); @@ -38,7 +41,7 @@ public class StdlibTest extends CodegenTestCase { session.addStdLibSources(true); if (!session.analyze(System.out)) { - return null; + throw new RuntimeException(); } return session.generate();