From 4178188e154098f4521a934b3f6cd6aa6e5f3c06 Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Tue, 13 Jun 2017 20:54:44 +0300 Subject: [PATCH] Fix name retrieval on exception reporting during analysis --- .../frontend/src/org/jetbrains/kotlin/psi/KtScript.java | 5 ++--- .../kotlin/resolve/ExceptionWrappingKtVisitorVoid.kt | 8 +++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtScript.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtScript.java index 16159437b6c..8126a68df03 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtScript.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtScript.java @@ -35,11 +35,10 @@ public class KtScript extends KtNamedDeclarationStub implement // make it a simple lazy value after converting to kotlin private KotlinScriptDefinition getKotlinScriptDefinition() { if (!kotlinScriptDefinitionInitialized) { - KtFile ktFile = getContainingKtFile(); - kotlinScriptDefinitionField = KotlinScriptDefinitionProviderKt.getScriptDefinition(ktFile); + kotlinScriptDefinitionField = KotlinScriptDefinitionProviderKt.getScriptDefinition(getContainingKtFile()); kotlinScriptDefinitionInitialized = true; - assert kotlinScriptDefinitionField != null : "Should not parse a script without definition: " + ktFile.toString(); } + assert kotlinScriptDefinitionField != null : "Should not parse a script without definition: " + getContainingKtFile().toString(); return kotlinScriptDefinitionField; } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ExceptionWrappingKtVisitorVoid.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ExceptionWrappingKtVisitorVoid.kt index ad9542fd6ad..355bc4ae1a9 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/ExceptionWrappingKtVisitorVoid.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/ExceptionWrappingKtVisitorVoid.kt @@ -38,7 +38,13 @@ class ExceptionWrappingKtVisitorVoid(private val delegate: KtVisitorVoid) : KtVi throw e } catch (t: Throwable) { - throw KotlinFrontEndException("Failed to analyze declaration ${dcl.name}", t, dcl) + val name = try { + dcl.name + } + catch (e: Throwable) { + "- error: ${e.message}" + } + throw KotlinFrontEndException("Failed to analyze declaration $name", t, dcl) } } }