summaryrefslogtreecommitdiff
path: root/java/java-psi-impl/src/com
diff options
context:
space:
mode:
authorTor Norbye <tnorbye@google.com>2013-06-14 07:28:55 -0700
committerTor Norbye <tnorbye@google.com>2013-06-14 07:28:55 -0700
commitd9e4c285fa2c3c38c5b92cf30e77f27e243566a8 (patch)
tree354db2798801cc7730ba4a71ea9a151233309d3a /java/java-psi-impl/src/com
parent28d9ee094b1d352884aaf5b66b85b30335165c03 (diff)
downloadidea-d9e4c285fa2c3c38c5b92cf30e77f27e243566a8.tar.gz
Snapshot df6c5fa1206345df60a0c86fe8f67c5f7a6f478f from master branch of git://git.jetbrains.org/idea/community.git
Change-Id: I1d62dfd281ca361774653165ce8da9fb93d51005
Diffstat (limited to 'java/java-psi-impl/src/com')
-rw-r--r--java/java-psi-impl/src/com/intellij/core/JavaCoreApplicationEnvironment.java3
-rw-r--r--java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java18
-rw-r--r--java/java-psi-impl/src/com/intellij/psi/impl/PsiSubstitutorImpl.java14
-rw-r--r--java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassReferenceType.java3
-rw-r--r--java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiReferenceExpressionImpl.java14
5 files changed, 34 insertions, 18 deletions
diff --git a/java/java-psi-impl/src/com/intellij/core/JavaCoreApplicationEnvironment.java b/java/java-psi-impl/src/com/intellij/core/JavaCoreApplicationEnvironment.java
index ba6b5f1dcf77..51ae457b4fc0 100644
--- a/java/java-psi-impl/src/com/intellij/core/JavaCoreApplicationEnvironment.java
+++ b/java/java-psi-impl/src/com/intellij/core/JavaCoreApplicationEnvironment.java
@@ -51,8 +51,7 @@ public class JavaCoreApplicationEnvironment extends CoreApplicationEnvironment {
registerFileType(JavaClassFileType.INSTANCE, "class");
registerFileType(JavaFileType.INSTANCE, "java");
- registerFileType(ArchiveFileType.INSTANCE, "jar");
- registerFileType(ArchiveFileType.INSTANCE, "zip");
+ registerFileType(ArchiveFileType.INSTANCE, "jar;zip");
addExplicitExtension(FileTypeFileViewProviders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileViewProviderFactory());
addExplicitExtension(BinaryFileStubBuilders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileStubBuilder());
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java
index 7cc2bd234c35..71dff8a0704e 100644
--- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java
+++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiClassImplUtil.java
@@ -478,6 +478,7 @@ public class PsiClassImplUtil {
final List<Pair<PsiMember, PsiSubstitutor>> list = allFieldsMap.get(name);
if (list != null) {
+ boolean resolved = false;
for (final Pair<PsiMember, PsiSubstitutor> candidate : list) {
PsiMember candidateField = candidate.getFirst();
PsiClass containingClass = candidateField.getContainingClass();
@@ -489,8 +490,11 @@ public class PsiClassImplUtil {
substitutor, factory, languageLevel);
processor.handleEvent(PsiScopeProcessor.Event.SET_DECLARATION_HOLDER, containingClass);
- if (!processor.execute(candidateField, state.put(PsiSubstitutor.KEY, finalSubstitutor))) return false;
+ if (!processor.execute(candidateField, state.put(PsiSubstitutor.KEY, finalSubstitutor))) {
+ resolved = true;
+ }
}
+ if (resolved) return false;
}
}
}
@@ -514,6 +518,7 @@ public class PsiClassImplUtil {
List<Pair<PsiMember, PsiSubstitutor>> list = allClassesMap.get(name);
if (list != null) {
+ boolean resolved = false;
for (final Pair<PsiMember, PsiSubstitutor> candidate : list) {
PsiMember inner = candidate.getFirst();
PsiClass containingClass = inner.getContainingClass();
@@ -521,9 +526,12 @@ public class PsiClassImplUtil {
PsiSubstitutor finalSubstitutor = obtainFinalSubstitutor(containingClass, candidate.getSecond(), aClass,
substitutor, factory, languageLevel);
processor.handleEvent(PsiScopeProcessor.Event.SET_DECLARATION_HOLDER, containingClass);
- if (!processor.execute(inner, state.put(PsiSubstitutor.KEY, finalSubstitutor))) return false;
+ if (!processor.execute(inner, state.put(PsiSubstitutor.KEY, finalSubstitutor))) {
+ resolved = true;
+ }
}
}
+ if (resolved) return false;
}
}
}
@@ -543,6 +551,7 @@ public class PsiClassImplUtil {
Map<String, List<Pair<PsiMember, PsiSubstitutor>>> allMethodsMap = value.get(MemberType.METHOD);
List<Pair<PsiMember, PsiSubstitutor>> list = allMethodsMap.get(name);
if (list != null) {
+ boolean resolved = false;
for (final Pair<PsiMember, PsiSubstitutor> candidate : list) {
ProgressIndicatorProvider.checkCanceled();
PsiMethod candidateMethod = (PsiMethod)candidate.getFirst();
@@ -558,7 +567,10 @@ public class PsiClassImplUtil {
substitutor, factory, languageLevel);
finalSubstitutor = checkRaw(isRaw, factory, candidateMethod, finalSubstitutor);
processor.handleEvent(PsiScopeProcessor.Event.SET_DECLARATION_HOLDER, containingClass);
- if (!processor.execute(candidateMethod, state.put(PsiSubstitutor.KEY, finalSubstitutor))) return false;
+ if (!processor.execute(candidateMethod, state.put(PsiSubstitutor.KEY, finalSubstitutor))) {
+ resolved = true;
+ }
+ if (resolved) return false;
}
if (visited != null) {
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiSubstitutorImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiSubstitutorImpl.java
index 90f63f67b972..c7cd48afa8b7 100644
--- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiSubstitutorImpl.java
+++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiSubstitutorImpl.java
@@ -18,6 +18,8 @@ package com.intellij.psi.impl;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.psi.*;
import com.intellij.psi.impl.light.LightTypeParameter;
+import com.intellij.psi.util.PsiUtil;
+import com.intellij.psi.util.PsiUtilCore;
import com.intellij.psi.util.TypeConversionUtil;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
@@ -97,7 +99,7 @@ public class PsiSubstitutorImpl implements PsiSubstitutor {
//noinspection ConstantConditions
return null;
}
- assert type.isValid();
+ PsiUtil.ensureValidType(type);
PsiType substituted = type.accept(myAddingBoundsSubstitutionVisitor);
return correctExternalSubstitution(substituted, type);
}
@@ -271,20 +273,18 @@ public class PsiSubstitutorImpl implements PsiSubstitutor {
final PsiClassType.ClassResolveResult resolveResult = classType.resolveGenerics();
final PsiClass aClass = resolveResult.getElement();
if (aClass == null) return classType;
- assert classType.isValid();
- assert aClass.isValid();
+
+ PsiUtilCore.ensureValid(aClass);
if (aClass instanceof PsiTypeParameter) {
final PsiTypeParameter typeParameter = (PsiTypeParameter)aClass;
if (containsInMap(typeParameter)) {
PsiType result = substituteTypeParameter(typeParameter);
if (result != null) {
- assert result.isValid();
+ PsiUtil.ensureValidType(result);
}
return result;
}
- else {
- return classType;
- }
+ return classType;
}
final Map<PsiTypeParameter, PsiType> hashMap = new HashMap<PsiTypeParameter, PsiType>(2);
if (!processClass(aClass, resolveResult.getSubstitutor(), hashMap)) {
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassReferenceType.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassReferenceType.java
index 6eafa4f31a77..348f6ba44a28 100644
--- a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassReferenceType.java
+++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassReferenceType.java
@@ -22,6 +22,7 @@ import com.intellij.psi.*;
import com.intellij.psi.impl.light.LightClassReference;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.PsiUtil;
+import com.intellij.psi.util.PsiUtilCore;
import com.intellij.util.SmartList;
import org.jetbrains.annotations.NotNull;
@@ -137,7 +138,7 @@ public class PsiClassReferenceType extends PsiClassType {
@Override
@NotNull
public ClassResolveResult resolveGenerics() {
- LOG.assertTrue(isValid());
+ PsiUtilCore.ensureValid(myReference);
final JavaResolveResult result = myReference.advancedResolve(false);
return new DelegatingClassResolveResult(result);
}
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiReferenceExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiReferenceExpressionImpl.java
index b93bf2a60638..550da84ec9e9 100644
--- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiReferenceExpressionImpl.java
+++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiReferenceExpressionImpl.java
@@ -26,7 +26,6 @@ import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.JavaCodeStyleSettingsFacade;
import com.intellij.psi.filters.*;
-import com.intellij.psi.filters.element.ModifierFilter;
import com.intellij.psi.impl.CheckUtil;
import com.intellij.psi.impl.PsiImplUtil;
import com.intellij.psi.impl.PsiManagerEx;
@@ -47,7 +46,10 @@ import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.TypeConversionUtil;
-import com.intellij.util.*;
+import com.intellij.util.CharTable;
+import com.intellij.util.Function;
+import com.intellij.util.IncorrectOperationException;
+import com.intellij.util.NullableFunction;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -386,7 +388,9 @@ public class PsiReferenceExpressionImpl extends PsiReferenceExpressionBase imple
else if (resolve instanceof PsiMethod) {
PsiMethod method = (PsiMethod)resolve;
ret = method.getReturnType();
- LOG.assertTrue(ret == null || ret.isValid());
+ if (ret != null) {
+ PsiUtil.ensureValidType(ret);
+ }
owner = method;
}
if (ret == null) return null;
@@ -400,9 +404,9 @@ public class PsiReferenceExpressionImpl extends PsiReferenceExpressionBase imple
final PsiSubstitutor substitutor = result.getSubstitutor();
if (owner == null || !PsiUtil.isRawSubstitutor(owner, substitutor)) {
PsiType substitutedType = substitutor.substitute(ret);
- LOG.assertTrue(substitutedType.isValid());
+ PsiUtil.ensureValidType(substitutedType);
PsiType normalized = PsiImplUtil.normalizeWildcardTypeByPosition(substitutedType, expr);
- LOG.assertTrue(normalized.isValid());
+ PsiUtil.ensureValidType(normalized);
return normalized;
}
}