use of com.intellij.psi.search.GlobalSearchScope in project intellij-community by JetBrains.
the class TypesTest method testWildcardTypeParsing.
public void testWildcardTypeParsing() throws Exception {
final GlobalSearchScope scope = GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(myModule);
final PsiClassType javaLangObject = PsiType.getJavaLangObject(myPsiManager, scope);
PsiElement element = ((PsiDeclarationStatement) myJavaFacade.getElementFactory().createStatementFromText("X<? extends Y, ? super Z<A,B>, ?> x;", null)).getDeclaredElements()[0];
PsiJavaCodeReferenceElement referenceElement = ((PsiVariable) element).getTypeElement().getInnermostComponentReferenceElement();
PsiType[] typeArguments = referenceElement.getTypeParameters();
assertEquals(3, typeArguments.length);
assertTrue(typeArguments[0] instanceof PsiWildcardType);
assertTrue(typeArguments[1] instanceof PsiWildcardType);
assertTrue(typeArguments[2] instanceof PsiWildcardType);
PsiWildcardType extendsWildcard = (PsiWildcardType) typeArguments[0];
PsiWildcardType superWildcard = (PsiWildcardType) typeArguments[1];
PsiWildcardType unboundedWildcard = (PsiWildcardType) typeArguments[2];
// extends wildcard test
assertTrue(extendsWildcard.isExtends());
assertFalse(extendsWildcard.isSuper());
assertEquals("Y", extendsWildcard.getBound().getCanonicalText());
assertEquals("Y", extendsWildcard.getExtendsBound().getCanonicalText());
assertEquals(extendsWildcard.getSuperBound(), PsiType.NULL);
// super wildcard test
assertFalse(superWildcard.isExtends());
assertTrue(superWildcard.isSuper());
assertEquals("Z<A,B>", superWildcard.getBound().getCanonicalText());
assertEquals(superWildcard.getExtendsBound(), javaLangObject);
assertEquals("Z<A,B>", superWildcard.getSuperBound().getCanonicalText());
// unbounded wildcard test
assertFalse(unboundedWildcard.isExtends());
assertFalse(unboundedWildcard.isSuper());
assertNull(unboundedWildcard.getBound());
assertEquals(unboundedWildcard.getExtendsBound(), javaLangObject);
assertEquals(unboundedWildcard.getSuperBound(), PsiType.NULL);
}
use of com.intellij.psi.search.GlobalSearchScope in project intellij-community by JetBrains.
the class Src15RepositoryUseTest method testEnumWithInitializedConstants.
public void testEnumWithInitializedConstants() throws Exception {
setupLoadingFilter();
final GlobalSearchScope moduleScope = GlobalSearchScope.moduleScope(myModule);
PsiClass enumClass = findClass("enums.OurEnumWithInitializedConstants");
assertTrue(enumClass.isEnum());
PsiField[] fields = enumClass.getFields();
assertEquals(3, fields.length);
assertTrue(fields[0] instanceof PsiEnumConstant);
assertTrue(fields[1] instanceof PsiEnumConstant);
assertTrue(fields[2] instanceof PsiEnumConstant);
PsiAnonymousClass initializingClass0 = ((PsiEnumConstant) fields[0]).getInitializingClass();
assertNotNull(initializingClass0);
PsiClass baseClass0 = initializingClass0.getBaseClassType().resolve();
assertTrue(baseClass0 == enumClass);
PsiAnonymousClass initializingClass1 = ((PsiEnumConstant) fields[1]).getInitializingClass();
assertNotNull(initializingClass1);
PsiClass baseClass1 = initializingClass1.getBaseClassType().resolve();
assertTrue(baseClass1 == enumClass);
PsiAnonymousClass initializingClass2 = ((PsiEnumConstant) fields[1]).getInitializingClass();
assertNotNull(initializingClass2);
PsiClass baseClass2 = initializingClass2.getBaseClassType().resolve();
assertTrue(baseClass2 == enumClass);
assertTrue(initializingClass0.isInheritor(enumClass, false));
assertTrue(initializingClass1.isInheritor(enumClass, false));
assertTrue(initializingClass2.isInheritor(enumClass, false));
final PsiClass[] enumInheritors = ClassInheritorsSearch.search(enumClass, moduleScope, false).toArray(PsiClass.EMPTY_ARRAY);
assertEquals(3, enumInheritors.length);
assertTrue(Arrays.asList(enumInheritors).contains(initializingClass0));
assertTrue(Arrays.asList(enumInheritors).contains(initializingClass1));
assertTrue(Arrays.asList(enumInheritors).contains(initializingClass2));
PsiMethod[] methods1 = initializingClass2.getMethods();
assertEquals(1, methods1.length);
assertEquals("foo", methods1[0].getName());
final PsiClass baseInterfaceClass = findClass("enums.OurBaseInterface");
final PsiClass[] inheritors = ClassInheritorsSearch.search(baseInterfaceClass, moduleScope, false).toArray(PsiClass.EMPTY_ARRAY);
assertEquals(1, inheritors.length);
assertTrue(inheritors[0] instanceof PsiAnonymousClass);
tearDownLoadingFilter();
assertTrue(inheritors[0].getParent().getParent() instanceof PsiExpressionList);
assertTrue(inheritors[0].getParent().getParent().getParent() == fields[2]);
final PsiExpressionList argumentList = ((PsiEnumConstant) fields[2]).getArgumentList();
assertNotNull(argumentList);
final PsiExpression[] expressions2 = argumentList.getExpressions();
assertEquals(1, expressions2.length);
assertTrue(expressions2[0] instanceof PsiNewExpression);
final PsiAnonymousClass anonymousClass2 = ((PsiNewExpression) expressions2[0]).getAnonymousClass();
assertTrue(anonymousClass2 != null);
assertTrue(anonymousClass2.isInheritor(baseInterfaceClass, false));
}
use of com.intellij.psi.search.GlobalSearchScope in project intellij-community by JetBrains.
the class PsiModificationTrackerTest method testClassShouldNotAppearWithoutEvents_WithoutPsi.
public void testClassShouldNotAppearWithoutEvents_WithoutPsi() throws Exception {
final GlobalSearchScope allScope = GlobalSearchScope.allScope(getProject());
final JavaPsiFacade facade = JavaPsiFacade.getInstance(getProject());
final PsiManager psiManager = PsiManager.getInstance(getProject());
final PsiModificationTracker tracker = psiManager.getModificationTracker();
final VirtualFile file = createTempFile("java", null, "", CharsetToolkit.UTF8_CHARSET);
final Document document = FileDocumentManager.getInstance().getDocument(file);
assertNotNull(document);
assertNull(facade.findClass("Foo", allScope));
long count1 = tracker.getJavaStructureModificationCount();
PlatformTestUtil.tryGcSoftlyReachableObjects();
assertNull(PsiDocumentManager.getInstance(getProject()).getCachedPsiFile(document));
WriteCommandAction.runWriteCommandAction(getProject(), () -> document.insertString(0, "class Foo {}"));
DocumentCommitThread.getInstance().waitForAllCommits();
assertFalse(count1 == tracker.getJavaStructureModificationCount());
assertTrue(PsiDocumentManager.getInstance(getProject()).isCommitted(document));
assertNotNull(facade.findClass("Foo", allScope));
PsiJavaFile psiFile = (PsiJavaFile) psiManager.findFile(file);
assertSize(1, psiFile.getClasses());
assertEquals("class Foo {}", psiFile.getText());
assertEquals("class Foo {}", psiFile.getNode().getText());
}
use of com.intellij.psi.search.GlobalSearchScope in project intellij-community by JetBrains.
the class ListArrayConversionRule method evaluateCollectionsType.
@Nullable
public static PsiType evaluateCollectionsType(PsiClassType classType, PsiExpression expression) {
final PsiClassType.ClassResolveResult classResolveResult = PsiUtil.resolveGenericsClassInType(classType);
final PsiClass psiClass = classResolveResult.getElement();
if (psiClass != null) {
final GlobalSearchScope allScope = GlobalSearchScope.allScope(psiClass.getProject());
final PsiClass collectionClass = JavaPsiFacade.getInstance(psiClass.getProject()).findClass(CommonClassNames.JAVA_UTIL_LIST, allScope);
if (collectionClass != null && InheritanceUtil.isInheritorOrSelf(psiClass, collectionClass, true)) {
final PsiSubstitutor derivedSubstitutor = classResolveResult.getSubstitutor();
if (PsiUtil.isRawSubstitutor(psiClass, derivedSubstitutor))
return null;
final PsiSubstitutor substitutor = TypeConversionUtil.getClassSubstitutor(collectionClass, psiClass, derivedSubstitutor);
assert substitutor != null;
final PsiType type = substitutor.substitute(collectionClass.getTypeParameters()[0]);
assert type != null;
return PsiImplUtil.normalizeWildcardTypeByPosition(type, expression);
}
}
return null;
}
use of com.intellij.psi.search.GlobalSearchScope in project intellij-community by JetBrains.
the class TypeMigrationTest method testT136.
public void testT136() {
final GlobalSearchScope scope = GlobalSearchScope.allScope(myProject);
doTestFirstParamType("foo", "Test", PsiType.getJavaLangString(myPsiManager, scope));
}
Aggregations