diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationStub.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationStub.java index 203cb588b22..9c84a0abf94 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationStub.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedDeclarationStub.java @@ -18,12 +18,13 @@ package org.jetbrains.jet.lang.psi; import com.intellij.lang.ASTNode; import com.intellij.psi.PsiElement; +import com.intellij.psi.search.LocalSearchScope; +import com.intellij.psi.search.SearchScope; import com.intellij.psi.stubs.IStubElementType; import com.intellij.psi.stubs.NamedStub; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lexer.JetTokens; @@ -80,4 +81,15 @@ abstract class JetNamedDeclarationStub extends JetDeclarati PsiElement identifier = getNameIdentifier(); return identifier != null ? identifier.getTextRange().getStartOffset() : getTextRange().getStartOffset(); } + + @NotNull + @Override + public SearchScope getUseScope() { + JetElement enclosingBlock = JetPsiUtil.getEnclosingBlockForLocalDeclaration(this); + if (enclosingBlock != null) { + return new LocalSearchScope(enclosingBlock); + } + + return super.getUseScope(); + } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetObjectDeclarationName.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetObjectDeclarationName.java index 73b597dacdf..3fbc07d0c97 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetObjectDeclarationName.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetObjectDeclarationName.java @@ -17,6 +17,8 @@ package org.jetbrains.jet.lang.psi; import com.intellij.lang.ASTNode; +import com.intellij.psi.search.SearchScope; +import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; public class JetObjectDeclarationName extends JetNamedDeclarationNotStubbed { @@ -34,4 +36,11 @@ public class JetObjectDeclarationName extends JetNamedDeclarationNotStubbed { public R accept(@NotNull JetVisitor visitor, D data) { return visitor.visitObjectDeclarationName(this, data); } + + @NotNull + @Override + public SearchScope getUseScope() { + JetObjectDeclaration objectDeclaration = PsiTreeUtil.getParentOfType(this, JetObjectDeclaration.class); + return objectDeclaration != null ? objectDeclaration.getUseScope() : super.getUseScope(); + } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetProperty.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetProperty.java index 09a2607e3d4..37d8c331753 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetProperty.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetProperty.java @@ -89,16 +89,6 @@ public class JetProperty extends JetTypeParameterListOwnerStub