diff --git a/idea/src/org/jetbrains/jet/lang/resolve/SubstitutingScope.java b/idea/src/org/jetbrains/jet/lang/resolve/SubstitutingScope.java index 2202a37753d..5194eeb5e5c 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/SubstitutingScope.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/SubstitutingScope.java @@ -21,8 +21,8 @@ public class SubstitutingScope implements JetScope { @Override public PropertyDescriptor getProperty(String name) { PropertyDescriptor property = workerScope.getProperty(name); - if (property == null) { - return null; + if (property == null || substitutionContext.isEmpty()) { + return property; } return new LazySubstitutedPropertyDescriptorImpl(property, substitutionContext); } diff --git a/idea/testData/resolve/Basic.jet b/idea/testData/resolve/Basic.jet index 0190967038f..ab749fb025e 100644 --- a/idea/testData/resolve/Basic.jet +++ b/idea/testData/resolve/Basic.jet @@ -7,6 +7,7 @@ class A { fun fooB() = foo(1) fun foo() : Int = 1.plus(1) fun foo1() : B = new B() + val a : Int } class C : A { diff --git a/idea/tests/org/jetbrains/jet/resolve/JetResolveTest.java b/idea/tests/org/jetbrains/jet/resolve/JetResolveTest.java index fa7511f59ec..1c16bea3266 100644 --- a/idea/tests/org/jetbrains/jet/resolve/JetResolveTest.java +++ b/idea/tests/org/jetbrains/jet/resolve/JetResolveTest.java @@ -90,6 +90,12 @@ public class JetResolveTest extends LightDaemonAnalyzerTestCase { assertSame(intPlus, FunctionDescriptorUtil.getOriginal(mustBePlus)); } + { + PropertyDescriptor a = classA.getMemberScope(Collections.emptyList()).getProperty("a"); + JetProperty aDecl = (JetProperty) classADecl.getDeclarations().get(5); + PropertyDescriptor mustBeA = bindingContext.getPropertyDescriptor(aDecl); + assertSame(a, mustBeA); + } JetClass classCDecl = (JetClass) declarations.get(1); ClassDescriptor classC = bindingContext.getClassDescriptor(classCDecl);