Search in sources :

Example 1 with JSClassResolver

use of com.intellij.lang.javascript.psi.resolve.JSClassResolver in project intellij-plugins by JetBrains.

the class FlexHighlightingTest method testFxPrivate.

@JSTestOptions({ JSTestOption.WithFlexFacet, JSTestOption.WithGumboSdk })
public void testFxPrivate() throws Exception {
    doTestFor(true, getTestName(false) + ".mxml");
    final JSClassResolver resolver = JSDialectSpecificHandlersFactory.forLanguage(JavaScriptSupportLoader.ECMA_SCRIPT_L4).getClassResolver();
    final JSClass jsClass = (JSClass) resolver.findClassByQName("mx.controls.CheckBox", GlobalSearchScope.moduleWithLibrariesScope(myModule));
    final Collection<PsiReference> usages = ReferencesSearch.search(jsClass, GlobalSearchScope.moduleScope(myModule)).findAll();
    assertEquals(1, usages.size());
}
Also used : JSClassResolver(com.intellij.lang.javascript.psi.resolve.JSClassResolver) JSClass(com.intellij.lang.javascript.psi.ecmal4.JSClass)

Example 2 with JSClassResolver

use of com.intellij.lang.javascript.psi.resolve.JSClassResolver in project intellij-plugins by JetBrains.

the class ActionScriptHighlightingTest method testBindableClassImplicitlyImplementsIEventDispatcher2.

@JSTestOptions(JSTestOption.WithFlexSdk)
public void testBindableClassImplicitlyImplementsIEventDispatcher2() throws Exception {
    doTestFor(true, new File(getTestDataPath() + BASE_PATH + getTestName(false)), (Runnable) null, getTestName(false) + "/Main.js2");
    final JSClassResolver resolver = JSDialectSpecificHandlersFactory.forLanguage(JavaScriptSupportLoader.ECMA_SCRIPT_L4).getClassResolver();
    assertNotNull(((JSClass) resolver.findClassByQName("OtherClass", myModule.getModuleScope())).getStub());
    assertNotNull(((JSClass) resolver.findClassByQName("OtherClass2", myModule.getModuleScope())).getStub());
}
Also used : JSClassResolver(com.intellij.lang.javascript.psi.resolve.JSClassResolver) VirtualFile(com.intellij.openapi.vfs.VirtualFile) File(java.io.File)

Example 3 with JSClassResolver

use of com.intellij.lang.javascript.psi.resolve.JSClassResolver in project intellij-plugins by JetBrains.

the class ActionScriptHighlightingTest method testCorrectScopeForSuperclassCheck7.

public void testCorrectScopeForSuperclassCheck7() throws Exception {
    // same FQNs in different modules
    final Module module2 = doCreateRealModuleIn("module2", myProject, FlexModuleType.getInstance());
    myAfterCommitRunnable = () -> copyFileToModule(module2, getTestDataPath() + BASE_PATH + getTestName(false) + "_2.js2");
    configureByFiles(null, BASE_PATH + getTestName(false) + ".js2");
    final JSClassResolver resolver = JSDialectSpecificHandlersFactory.forLanguage(JavaScriptSupportLoader.ECMA_SCRIPT_L4).getClassResolver();
    final PsiElement class1 = resolver.findClassByQName("com.foo.Foo", myModule.getModuleScope());
    assertNotNull(class1);
    final PsiElement class2 = resolver.findClassByQName("com.foo.Foo", module2.getModuleScope());
    assertNotNull(class2);
    assertFalse(class1.isEquivalentTo(class2));
}
Also used : JSClassResolver(com.intellij.lang.javascript.psi.resolve.JSClassResolver) Module(com.intellij.openapi.module.Module)

Example 4 with JSClassResolver

use of com.intellij.lang.javascript.psi.resolve.JSClassResolver in project intellij-plugins by JetBrains.

the class FlexMoveMembersTest method performAction.

private void performAction(String sourceClassName, final String targetClassName, final String visibility, final String[] memberNames) throws Exception {
    final JSClassResolver resolver = JSDialectSpecificHandlersFactory.forLanguage(JavaScriptSupportLoader.ECMA_SCRIPT_L4).getClassResolver();
    final JSClass sourceClass = (JSClass) resolver.findClassByQName(sourceClassName, ActionScriptMoveMembersDialog.getScope(myProject));
    assertNotNull("Class " + sourceClassName + " not found", sourceClass);
    JSClass targetClass = (JSClass) resolver.findClassByQName(targetClassName, ActionScriptMoveMembersDialog.getScope(myProject));
    assertNotNull("Class " + targetClassName + " not found", targetClass);
    final List<JSMemberInfo> memberInfos = new ArrayList<>();
    JSMemberInfo.extractStaticMembers(sourceClass, memberInfos, new MemberInfoBase.Filter<JSAttributeListOwner>() {

        @Override
        public boolean includeMember(JSAttributeListOwner member) {
            return memberNames.length == 0 || ArrayUtil.contains(member.getName(), memberNames);
        }
    });
    JSMemberInfo.sortByOffset(memberInfos);
    for (JSMemberInfo memberInfo : memberInfos) {
        memberInfo.setChecked(true);
    }
    new JSMoveMembersProcessor(myProject, null, sourceClass, ActionScriptMoveMembersDialog.getScope(myProject), new JSMoveMembersOptions() {

        @Override
        public JSAttributeListOwner[] getSelectedMembers() {
            final JSMemberInfo[] selected = JSMemberInfo.getSelected(memberInfos, sourceClass, Conditions.alwaysTrue());
            JSAttributeListOwner[] result = new JSAttributeListOwner[selected.length];
            for (int i = 0; i < result.length; i++) {
                result[i] = selected[i].getMember();
            }
            return result;
        }

        @Override
        public String getTargetClassName() {
            return targetClassName;
        }

        @Override
        public String getMemberVisibility() {
            return visibility;
        }
    }).run();
    myProject.getComponent(PostprocessReformattingAspect.class).doPostponedFormatting();
    FileDocumentManager.getInstance().saveAllDocuments();
}
Also used : JSClassResolver(com.intellij.lang.javascript.psi.resolve.JSClassResolver) JSMoveMembersProcessor(com.intellij.lang.javascript.refactoring.moveMembers.JSMoveMembersProcessor) ArrayList(java.util.ArrayList) JSMemberInfo(com.intellij.lang.javascript.refactoring.util.JSMemberInfo) MemberInfoBase(com.intellij.refactoring.classMembers.MemberInfoBase) PostprocessReformattingAspect(com.intellij.psi.impl.source.PostprocessReformattingAspect) JSMoveMembersOptions(com.intellij.lang.javascript.refactoring.moveMembers.JSMoveMembersOptions) JSAttributeListOwner(com.intellij.lang.javascript.psi.ecmal4.JSAttributeListOwner) JSClass(com.intellij.lang.javascript.psi.ecmal4.JSClass)

Example 5 with JSClassResolver

use of com.intellij.lang.javascript.psi.resolve.JSClassResolver in project intellij-plugins by JetBrains.

the class FlexPullUpTest method performAction.

private void performAction(String from, String to, final int docCommentPolicy, String[] expectedConflicts, final String[] toPullUp) {
    final JSClassResolver resolver = JSDialectSpecificHandlersFactory.forLanguage(JavaScriptSupportLoader.ECMA_SCRIPT_L4).getClassResolver();
    final JSClass sourceClass = (JSClass) resolver.findClassByQName(from, GlobalSearchScope.projectScope(getProject()));
    assertNotNull("source class not found: " + sourceClass, sourceClass);
    final JSClass targetClass = (JSClass) resolver.findClassByQName(to, GlobalSearchScope.projectScope(getProject()));
    assertNotNull("target class not found: " + targetClass, targetClass);
    assertTrue("Source should be a subclass of target", JSInheritanceUtil.isParentClass(sourceClass, targetClass));
    final List<JSMemberInfo> memberInfos = getMemberInfos(toPullUp, sourceClass, false);
    final JSMemberInfo[] infosArray = JSMemberInfo.getSelected(memberInfos, sourceClass, Conditions.alwaysTrue());
    MultiMap<PsiElement, String> conflicts = JSPullUpConflictsUtil.checkConflicts(infosArray, sourceClass, targetClass, new JSInterfaceContainmentVerifier() {

        @Override
        public boolean checkedInterfacesContain(JSFunction psiMethod) {
            return JSPullUpHelper.checkedInterfacesContain(memberInfos, psiMethod);
        }
    }, JSVisibilityUtil.DEFAULT_OPTIONS);
    ArrayList<String> messages = new ArrayList<>(conflicts.values());
    for (int i = 0; i < messages.size(); i++) {
        messages.set(i, messages.get(i).replaceAll("<[^>]+>", ""));
    }
    assertSameElements(messages, expectedConflicts);
    if (conflicts.isEmpty()) {
        WriteCommandAction.runWriteCommandAction(null, () -> {
            new JSPullUpHelper(sourceClass, targetClass, infosArray, docCommentPolicy).moveMembersToBase();
            myProject.getComponent(PostprocessReformattingAspect.class).doPostponedFormatting();
        });
        FileDocumentManager.getInstance().saveAllDocuments();
    }
}
Also used : JSClassResolver(com.intellij.lang.javascript.psi.resolve.JSClassResolver) ArrayList(java.util.ArrayList) JSMemberInfo(com.intellij.lang.javascript.refactoring.util.JSMemberInfo) JSPullUpHelper(com.intellij.lang.javascript.refactoring.memberPullUp.JSPullUpHelper) JSInterfaceContainmentVerifier(com.intellij.lang.javascript.refactoring.util.JSInterfaceContainmentVerifier) PostprocessReformattingAspect(com.intellij.psi.impl.source.PostprocessReformattingAspect) JSFunction(com.intellij.lang.javascript.psi.JSFunction) JSClass(com.intellij.lang.javascript.psi.ecmal4.JSClass) PsiElement(com.intellij.psi.PsiElement)

Aggregations

JSClassResolver (com.intellij.lang.javascript.psi.resolve.JSClassResolver)5 JSClass (com.intellij.lang.javascript.psi.ecmal4.JSClass)3 JSMemberInfo (com.intellij.lang.javascript.refactoring.util.JSMemberInfo)2 PostprocessReformattingAspect (com.intellij.psi.impl.source.PostprocessReformattingAspect)2 ArrayList (java.util.ArrayList)2 JSFunction (com.intellij.lang.javascript.psi.JSFunction)1 JSAttributeListOwner (com.intellij.lang.javascript.psi.ecmal4.JSAttributeListOwner)1 JSPullUpHelper (com.intellij.lang.javascript.refactoring.memberPullUp.JSPullUpHelper)1 JSMoveMembersOptions (com.intellij.lang.javascript.refactoring.moveMembers.JSMoveMembersOptions)1 JSMoveMembersProcessor (com.intellij.lang.javascript.refactoring.moveMembers.JSMoveMembersProcessor)1 JSInterfaceContainmentVerifier (com.intellij.lang.javascript.refactoring.util.JSInterfaceContainmentVerifier)1 Module (com.intellij.openapi.module.Module)1 VirtualFile (com.intellij.openapi.vfs.VirtualFile)1 PsiElement (com.intellij.psi.PsiElement)1 MemberInfoBase (com.intellij.refactoring.classMembers.MemberInfoBase)1 File (java.io.File)1