diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java index 1fc0f1a10a0..7b2929a30be 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java @@ -24,6 +24,7 @@ import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.descriptors.VariableAsFunctionDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.psi.*; +import org.jetbrains.jet.lang.types.lang.JetStandardClasses; /** * @author abreslav @@ -39,7 +40,18 @@ public class BindingContextUtils { if (declarationDescriptor == null) { return bindingContext.get(BindingContext.LABEL_TARGET, referenceExpression); } - return bindingContext.get(BindingContext.DESCRIPTOR_TO_DECLARATION, declarationDescriptor); + + PsiElement element = bindingContext.get(BindingContext.DESCRIPTOR_TO_DECLARATION, declarationDescriptor); + if (element != null) { + return element; + } + + // TODO: Need to have a valid stubs for standard classes + if (referenceExpression != null && JetStandardClasses.getAllStandardClasses().contains(declarationDescriptor)) { + return referenceExpression.getContainingFile(); + } + + return null; } @Nullable diff --git a/compiler/testData/resolve/regressions/kt1666.jet b/compiler/testData/resolve/regressions/kt1666.jet new file mode 100644 index 00000000000..031d6cce6e4 --- /dev/null +++ b/compiler/testData/resolve/regressions/kt1666.jet @@ -0,0 +1 @@ +~file~var x : `file`String = "" \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java b/compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java index 75b3cf8acb7..862ea23cc5b 100644 --- a/compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java +++ b/compiler/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java @@ -156,11 +156,18 @@ public abstract class ExpectedResolveData { Position position = entry.getValue(); PsiElement element = position.getElement(); - PsiElement ancestorOfType = getAncestorOfType(JetDeclaration.class, element); - if (ancestorOfType == null) { - JetNamespaceHeader header = getAncestorOfType(JetNamespaceHeader.class, element); - assert header != null : "Not a declaration: " + name; - ancestorOfType = element; + PsiElement ancestorOfType; + + if (name.equals("file")) { + ancestorOfType = element.getContainingFile(); + } + else { + ancestorOfType = getAncestorOfType(JetDeclaration.class, element); + if (ancestorOfType == null) { + JetNamespaceHeader header = getAncestorOfType(JetNamespaceHeader.class, element); + assert header != null : "Not a declaration: " + name; + ancestorOfType = element; + } } nameToDeclaration.put(name, ancestorOfType); declarationToName.put(ancestorOfType, name); diff --git a/idea/src/org/jetbrains/jet/plugin/references/JetPsiReference.java b/idea/src/org/jetbrains/jet/plugin/references/JetPsiReference.java index 040cd77f15c..1f9032e4d89 100644 --- a/idea/src/org/jetbrains/jet/plugin/references/JetPsiReference.java +++ b/idea/src/org/jetbrains/jet/plugin/references/JetPsiReference.java @@ -17,7 +17,6 @@ package org.jetbrains.jet.plugin.references; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementResolveResult; import com.intellij.psi.PsiPolyVariantReference; @@ -111,13 +110,6 @@ public abstract class JetPsiReference implements PsiPolyVariantReference { Collection declarationDescriptors = bindingContext.get(AMBIGUOUS_REFERENCE_TARGET, myExpression); if (declarationDescriptors != null) return null; - - VirtualFile elementFile = file.getVirtualFile(); - if (elementFile != null && elementFile.getNameWithoutExtension().equals(getElement().getText())) { - LOG.warn("Possible problem with file rename: " + elementFile.getNameWithoutExtension() + - ", element: " + getElement()); - } - // TODO: Need a better resolution for Intrinsic function (KT-975) return file; }