public void migrateClassTypeParameter( final PsiReferenceParameterList referenceParameterList, final PsiClassType migrationType) { final PsiClass psiClass = PsiTreeUtil.getParentOfType(referenceParameterList, PsiClass.class); LOG.assertTrue(psiClass != null); final PsiClass superClass = psiClass.getSuperClass(); LOG.assertTrue(superClass != null); myLabeler.getTypeEvaluator().setType(new TypeMigrationUsageInfo(superClass), migrationType); final Map<PsiElement, Pair<PsiReference[], PsiType>> roots = new HashMap<PsiElement, Pair<PsiReference[], PsiType>>(); markTypeParameterUsages(psiClass, migrationType, referenceParameterList, roots); final Set<PsiElement> processed = new HashSet<PsiElement>(); for (Map.Entry<PsiElement, Pair<PsiReference[], PsiType>> entry : roots.entrySet()) { final PsiElement member = entry.getKey(); final PsiType type = entry.getValue().second; if (member instanceof PsiParameter && ((PsiParameter) member).getDeclarationScope() instanceof PsiMethod) { myLabeler.migrateMethodCallExpressions(type, (PsiParameter) member, psiClass); } final PsiReference[] references = entry.getValue().first; for (PsiReference usage : references) { myLabeler.migrateRootUsageExpression(usage, processed); } } }
private static void addParametersForSuper( @NotNull PsiClass typeDefinition, GrLightMethodBuilder fieldsConstructor, boolean superFields, boolean superProperties, Set<PsiClass> visited, Set<String> excludes) { PsiClass parent = typeDefinition.getSuperClass(); if (parent != null && visited.add(parent) && !GroovyCommonClassNames.GROOVY_OBJECT_SUPPORT.equals(parent.getQualifiedName())) { addParametersForSuper( parent, fieldsConstructor, superFields, superProperties, visited, excludes); addParameters(parent, fieldsConstructor, superProperties, superFields, true, excludes); } }
public static void addAvailableSystemScripts( final Collection<String> result, @NotNull Module module) { VirtualFile scriptRoot = null; GlobalSearchScope searchScope = GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module, false); for (PsiClass aClass : JavaPsiFacade.getInstance(module.getProject()).findClasses("CreateApp_", searchScope)) { PsiClass superClass = aClass.getSuperClass(); if (superClass != null && GroovyCommonClassNames.GROOVY_LANG_SCRIPT.equals(superClass.getQualifiedName())) { PsiFile psiFile = aClass.getContainingFile(); if (psiFile != null) { VirtualFile file = psiFile.getVirtualFile(); if (file != null && file.getFileSystem() instanceof ArchiveFileSystem) { VirtualFile parent = file.getParent(); if (parent != null && parent.findChild("Console.class") != null) { scriptRoot = parent; break; } } } } } if (scriptRoot == null) return; Pattern scriptPattern = Pattern.compile("([A-Za-z0-9]+)_?\\.class"); for (VirtualFile file : scriptRoot.getChildren()) { Matcher matcher = scriptPattern.matcher(file.getName()); if (matcher.matches()) { result.add(GroovyNamesUtil.camelToSnake(matcher.group(1))); } } }