diff --git a/idea/src/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolver.java b/idea/src/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolver.java index 9830d2373ec..0231cbf4dfa 100644 --- a/idea/src/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolver.java +++ b/idea/src/org/jetbrains/jet/plugin/references/StandardLibraryReferenceResolver.java @@ -16,6 +16,8 @@ package org.jetbrains.jet.plugin.references; +import com.google.common.base.Predicate; +import com.google.common.base.Predicates; import com.intellij.openapi.components.AbstractProjectComponent; import com.intellij.openapi.project.Project; import com.intellij.openapi.startup.StartupManager; @@ -89,7 +91,14 @@ public class StandardLibraryReferenceResolver extends AbstractProjectComponent { scope.changeLockLevel(WritableScope.LockLevel.BOTH); jetNamespace.setMemberScope(scope); - TopDownAnalyzer.processStandardLibraryNamespace(myProject, context, scope, jetNamespace, getJetFiles("jet.src")); + Predicate jetFilesIndependentOfUnit = new Predicate() { + @Override + public boolean apply(@Nullable JetFile file) { + return "Unit.jet".equals(file.getName()); + } + }; + TopDownAnalyzer.processStandardLibraryNamespace(myProject, context, scope, jetNamespace, + getJetFiles("jet", jetFilesIndependentOfUnit)); ClassDescriptor tuple0 = context.get(BindingContext.FQNAME_TO_CLASS_DESCRIPTOR, TUPLE0_FQ_NAME); assert tuple0 != null; @@ -99,14 +108,16 @@ public class StandardLibraryReferenceResolver extends AbstractProjectComponent { scope.addClassifierAlias(KotlinBuiltIns.getInstance().UNIT_ALIAS, tuple0); jetNamespace.setMemberScope(scope); - TopDownAnalyzer.processStandardLibraryNamespace(myProject, context, scope, jetNamespace, getJetFiles("jet")); + TopDownAnalyzer.processStandardLibraryNamespace(myProject, context, scope, jetNamespace, + getJetFiles("jet", Predicates.not(jetFilesIndependentOfUnit))); + AnalyzingUtils.throwExceptionOnErrors(context.getBindingContext()); bindingContext = context.getBindingContext(); } } - private List getJetFiles(String dir) { + private List getJetFiles(String dir, final Predicate filter) { URL url = StandardLibraryReferenceResolver.class.getResource("/" + dir + "/"); VirtualFile vf = VfsUtil.findFileByURL(url); assert vf != null; @@ -116,7 +127,11 @@ public class StandardLibraryReferenceResolver extends AbstractProjectComponent { return ContainerUtil.mapNotNull(psiDirectory.getFiles(), new Function() { @Override public JetFile fun(PsiFile file) { - return file instanceof JetFile ? (JetFile) file : null; + if (file instanceof JetFile) { + JetFile jetFile = (JetFile) file; + return filter.apply(jetFile) ? jetFile : null; + } + return null; } }); } diff --git a/idea/testData/resolve/std/any.kt b/idea/testData/resolve/std/any.kt index 3ffb22ab63f..1850510855b 100644 --- a/idea/testData/resolve/std/any.kt +++ b/idea/testData/resolve/std/any.kt @@ -1,2 +1,2 @@ var x : Any? -//jet.src/Any.jet:Any \ No newline at end of file +//jet/Any.jet:Any \ No newline at end of file diff --git a/idea/testData/resolve/std/function.kt b/idea/testData/resolve/std/function.kt index ce71f6e13f7..2593e1db921 100644 --- a/idea/testData/resolve/std/function.kt +++ b/idea/testData/resolve/std/function.kt @@ -1,4 +1,4 @@ fun f(p : () -> String) { p.invoke() } -//jet.src/Functions.jet:invoke \ No newline at end of file +//jet/Functions.jet:invoke \ No newline at end of file diff --git a/idea/testData/resolve/std/nothing.kt b/idea/testData/resolve/std/nothing.kt index 85036d6d450..ec6fff2eb4f 100644 --- a/idea/testData/resolve/std/nothing.kt +++ b/idea/testData/resolve/std/nothing.kt @@ -1,2 +1,2 @@ var x : Nothing -//jet.src/Nothing.jet:Nothing \ No newline at end of file +//jet/Nothing.jet:Nothing \ No newline at end of file diff --git a/idea/testData/resolve/std/tupleElement.kt b/idea/testData/resolve/std/tupleElement.kt index 46e9f59593b..3bd36a4c288 100644 --- a/idea/testData/resolve/std/tupleElement.kt +++ b/idea/testData/resolve/std/tupleElement.kt @@ -1,2 +1,2 @@ var x = #(1, 2)._1 -//jet.src/Tuples.jet:_1 \ No newline at end of file +//jet/Tuples.jet:_1 \ No newline at end of file diff --git a/idea/testData/resolve/std/unit.kt b/idea/testData/resolve/std/unit.kt index 52cacf55e73..463178f6e47 100644 --- a/idea/testData/resolve/std/unit.kt +++ b/idea/testData/resolve/std/unit.kt @@ -1,2 +1,2 @@ var x : Unit? -//jet.src/Unit.jet:Tuple0 \ No newline at end of file +//jet/Unit.jet:Tuple0 \ No newline at end of file