diff options
author | Tor Norbye <tnorbye@google.com> | 2013-06-14 07:28:55 -0700 |
---|---|---|
committer | Tor Norbye <tnorbye@google.com> | 2013-06-14 07:28:55 -0700 |
commit | d9e4c285fa2c3c38c5b92cf30e77f27e243566a8 (patch) | |
tree | 354db2798801cc7730ba4a71ea9a151233309d3a /java/java-psi-impl/src/com | |
parent | 28d9ee094b1d352884aaf5b66b85b30335165c03 (diff) | |
download | idea-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')
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; } } |