From 9dd910736206d1a1bc84a5bafc0aa0e4f25e3a6c Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 22 Nov 2011 16:15:57 +0300 Subject: [PATCH 1/2] Supporting "kotlin.running.in.server.mode" to throw exception from the analyzer to be logged by the server --- .../jet/lang/resolve/java/AnalyzerFacade.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacade.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacade.java index 826e741d31a..6ad38396927 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacade.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacade.java @@ -68,6 +68,18 @@ public class AnalyzerFacade { throw e; } catch (Throwable e) { + // This is needed for the Web Demo server to log the exceptions coming from the analyzer instead of showing them in the editor. + if (System.getProperty("kotlin.running.in.server.mode", "false").equals("true")) { + if (e instanceof RuntimeException) { + RuntimeException runtimeException = (RuntimeException) e; + throw runtimeException; + } + if (e instanceof Error) { + Error error = (Error) e; + throw error; + } + throw new RuntimeException(e); + } e.printStackTrace(); BindingTraceContext bindingTraceContext = new BindingTraceContext(); bindingTraceContext.report(Errors.EXCEPTION_WHILE_ANALYZING.on(file, e)); From 91cb701956a234d8c415289bfbe59f2d36801b50 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Tue, 22 Nov 2011 16:55:07 +0400 Subject: [PATCH 2/2] KT-526 Unresolved reference for inner static class === namespace demo class Foo { class object { class Bar { } } } class User { fun main() : Unit { var boo : Foo.Bar? /* <-- unresolved reference to Bar */ = null } } === --- .../jetbrains/jet/lang/resolve/TypeResolver.java | 7 +++++-- .../kt526UnresolvedReferenceInnerStatic.jet | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 compiler/testData/checkerWithErrorTypes/quick/regressions/kt526UnresolvedReferenceInnerStatic.jet diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java index 5fd39256dfe..654135be994 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java @@ -286,8 +286,11 @@ public class TypeResolver { private JetScope resolveClassLookupScope(JetScope scope, JetUserType userType) { ClassifierDescriptor classifierDescriptor = resolveClassWithoutErrorReporting(scope, userType); if (classifierDescriptor instanceof ClassDescriptor) { - List typeArguments = resolveTypeProjections(scope, classifierDescriptor.getTypeConstructor(), userType.getTypeArguments()); - return ((ClassDescriptor) classifierDescriptor).getMemberScope(typeArguments); + ClassDescriptor classDescriptor = (ClassDescriptor) classifierDescriptor; + JetType classObjectType = classDescriptor.getClassObjectType(); + if (classObjectType != null) { + return classObjectType.getMemberScope(); + } } NamespaceDescriptor namespaceDescriptor = resolveNamespace(scope, userType); diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt526UnresolvedReferenceInnerStatic.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt526UnresolvedReferenceInnerStatic.jet new file mode 100644 index 00000000000..b918b0d4c17 --- /dev/null +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt526UnresolvedReferenceInnerStatic.jet @@ -0,0 +1,16 @@ +// http://youtrack.jetbrains.net/issue/KT-526 +// KT-526 Unresolved reference for inner static class + +namespace demo + +class Foo { + class object { + class Bar() { } + } +} +class User { + fun main() : Unit { + var boo : Foo.Bar? /* <-- this reference is red */ = Foo.Bar() + } +} +