From 00142a77754bee8757b903ca0a1834510fa5e350 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 12 Mar 2012 16:42:10 +0400 Subject: [PATCH] Assertions and a possible fix for EA-34423 - NPE: GenerationState.compileCorrectFiles --- .../src/org/jetbrains/jet/codegen/GenerationState.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java b/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java index b97d21418c9..d474f7f5b01 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/GenerationState.java @@ -22,6 +22,7 @@ package org.jetbrains.jet.codegen; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.containers.Stack; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.codegen.intrinsics.IntrinsicMethods; @@ -132,17 +133,19 @@ public class GenerationState { compileCorrectFiles(bindingContext, files, CompilationErrorHandler.THROW_EXCEPTION, annotate); } - public void compileCorrectFiles(BindingContext bindingContext, List files, CompilationErrorHandler errorHandler, boolean annotate) { + public void compileCorrectFiles(BindingContext bindingContext, List files, @NotNull CompilationErrorHandler errorHandler, boolean annotate) { ClosureAnnotator closureAnnotator = !annotate ? null : new ClosureAnnotator(bindingContext, files); typeMapper = new JetTypeMapper(standardLibrary, bindingContext, closureAnnotator); bindingContexts.push(bindingContext); try { for (JetFile namespace : files) { + if (namespace == null) throw new IllegalArgumentException("A null file given for compilation"); try { generateNamespace(namespace); } catch (Throwable e) { - errorHandler.reportException(e, namespace.getContainingFile().getVirtualFile().getUrl()); + VirtualFile virtualFile = namespace.getContainingFile().getVirtualFile(); + errorHandler.reportException(e, virtualFile == null ? "no file" : virtualFile.getUrl()); DiagnosticUtils.throwIfRunningOnServer(e); if (ApplicationManager.getApplication().isInternal()) { e.printStackTrace();