com.intellij.psi.util.PsiTreeUtil#getChildOfType ( )源码实例Demo

下面列出了com.intellij.psi.util.PsiTreeUtil#getChildOfType ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: litho   文件: PsiAnnotationProxyUtils.java
private Object invoke(Method method, Object[] args) throws IllegalAccessException {
  Class<?> returnType = method.getReturnType();
  if (returnType.isEnum()) {
    PsiAnnotation currentAnnotation =
        AnnotationUtil.findAnnotationInHierarchy(
            mListOwner, Collections.singleton(mAnnotationClass.getCanonicalName()));
    PsiReferenceExpression declaredValue =
        (PsiReferenceExpression) currentAnnotation.findAttributeValue(method.getName());
    if (declaredValue == null) {
      return method.getDefaultValue();
    }
    PsiIdentifier identifier = PsiTreeUtil.getChildOfType(declaredValue, PsiIdentifier.class);
    return Enum.valueOf((Class<Enum>) returnType, identifier.getText());
  }

  try {
    if (args == null) {
      return method.invoke(mStubbed);
    }
    return method.invoke(mStubbed, args);
  } catch (InvocationTargetException e) {
    return method.getDefaultValue();
  }
}
 
源代码2 项目: consulo-csharp   文件: ReplaceTypeQuickFix.java
@Override
public void invoke(@Nonnull Project project, Editor editor, PsiFile file) throws IncorrectOperationException
{
	DotNetType element = myPointer.getElement();
	if(element == null)
	{
		return;
	}

	CSharpFragmentFileImpl typeFragment = CSharpFragmentFactory.createTypeFragment(project, myTypeText, element);

	DotNetType newType = PsiTreeUtil.getChildOfType(typeFragment, DotNetType.class);
	if(newType == null)
	{
		return;
	}

	element.replace(newType);
}
 
源代码3 项目: intellij-haxe   文件: HaxePsiFieldImpl.java
@NotNull
@Override
public PsiType getType() {
  PsiType psiType = null;
  final HaxeTypeTag tag = PsiTreeUtil.getChildOfType(this, HaxeTypeTag.class);
  if (tag != null) {
    final HaxeTypeOrAnonymous toa = tag.getTypeOrAnonymous();
    final HaxeType type = (toa != null) ? toa.getType() : null;
    psiType = (type != null) ? type.getPsiType() : null;
  }
  return psiType != null ? psiType : HaxePsiTypeAdapter.DYNAMIC;
}
 
default PsiElement argumentsToken() {
    if (this instanceof CypherFunctionInvocation) {
        return PsiTreeUtil.getChildOfType(this, CypherArgumentList.class);
    }
    if (this instanceof CypherProcedureInvocation) {
        return PsiTreeUtil.getChildOfType(this, CypherArgumentList.class);
    } else {
        return this;
    }

}
 
@Override
public List<ThriftDeclaration> findSubDeclarations() {
  ThriftDeclarationBody body = PsiTreeUtil.getChildOfType(this, ThriftDeclarationBody.class);
  if (body == null) {
    return Collections.emptyList();
  }
  return PsiTreeUtil.getChildrenOfTypeAsList(body, ThriftDeclaration.class);
}
 
源代码6 项目: intellij   文件: JavascriptTestContextProvider.java
@Nullable
private static PsiElement findTestSuiteReference(PsiElement element) {
  if (element instanceof JSVarStatement) {
    // variable assignment might be
    // testSuite = goog.require('goog.testing.testSuite')
    JSVariable variable = PsiTreeUtil.getChildOfType(element, JSVariable.class);
    if (variable != null && isImportingTestSuite(variable)) {
      return variable;
    }
  } else if (element instanceof JSExpressionStatement) {
    // expression statement might be
    // goog.require('goog.testing.testSuite')
    if (isImportingTestSuite(element)) {
      JSLiteralExpression literal =
          PsiTreeUtil.findChildOfType(element, JSLiteralExpression.class);
      // this should be 'goog.testing.testSuite'
      if (literal == null) {
        return null;
      }
      for (PsiReference reference : literal.getReferences()) {
        if (reference instanceof JSGclModuleReference) {
          // this should be testSuite, and should resolve to the function
          return reference.resolve();
        }
      }
    }
  }
  return null;
}
 
@NotNull
public SQFCodeBlock getBlock() {
	SQFCodeBlock block = PsiTreeUtil.getChildOfType(this, SQFCodeBlock.class);
	if (block == null) {
		throw new IllegalStateException("the block returned shouldn't be null");
	}
	return block;
}
 
/**
 * fo<caret>o:
 *   class: foo
 *   arguments: []
 */
@Nullable
public static ServiceYamlContainer create(@NotNull YAMLKeyValue yamlServiceKeyValue) {
    YAMLMapping childOfType = PsiTreeUtil.getChildOfType(yamlServiceKeyValue, YAMLMapping.class);
    if(childOfType == null) {
        return null;
    }

    String serviceClass = null;

    YAMLKeyValue aClass = childOfType.getKeyValueByKey("class");
    if(aClass != null) {
        // service:
        //  class: Foobar
        YAMLValue value = aClass.getValue();
        if(value instanceof YAMLScalar) {
            serviceClass =  ((YAMLScalar) value).getTextValue();
        }
    } else {
        // Foobar:
        //  argument: ~
        String keyText = yamlServiceKeyValue.getKeyText();

        if(StringUtils.isNotBlank(keyText) && YamlHelper.isClassServiceId(keyText)) {
            serviceClass = keyText;
        }
    }

    if (StringUtils.isBlank(serviceClass)) {
        return null;
    }

    return new ServiceYamlContainer(yamlServiceKeyValue, childOfType.getKeyValueByKey("arguments"), serviceClass);
}
 
源代码9 项目: intellij-haskforce   文件: HaskellTyconImpl.java
@Override
@Nullable
public HaskellConsym getConsym() {
  return PsiTreeUtil.getChildOfType(this, HaskellConsym.class);
}
 
源代码10 项目: intellij-haxe   文件: HaxeElementGenerator.java
@Nullable
public static HaxePackageStatement createPackageStatementFromPath(Project myProject, String path) {
  final PsiFile dummyFile = createDummyFile(myProject, "package " + path + ";");
  return PsiTreeUtil.getChildOfType(dummyFile, HaxePackageStatement.class);
}
 
源代码11 项目: intellij-haskforce   文件: HaskellBkindImpl.java
@Override
@Nullable
public HaskellBkind getBkind() {
  return PsiTreeUtil.getChildOfType(this, HaskellBkind.class);
}
 
@Nullable
@Override
public PhpType getType(PsiElement psiElement) {
    if (DumbService.getInstance(psiElement.getProject()).isDumb() || !TYPO3CMSProjectSettings.isEnabled(psiElement)) {
        return null;
    }

    // $GLOBALS['TYPO3_DB']
    if (!(psiElement instanceof ArrayAccessExpression)) {
        return null;
    }

    VariableImpl variable = PsiTreeUtil.getChildOfType(psiElement, VariableImpl.class);
    if (variable == null || !variable.getName().equals("GLOBALS")) {
        return null;
    }

    ArrayIndex arrayIndex = PsiTreeUtil.getChildOfType(psiElement, ArrayIndex.class);
    if (arrayIndex == null) {
        return null;
    }

    StringLiteralExpression arrayIndexName = PsiTreeUtil.getChildOfType(arrayIndex, StringLiteralExpressionImpl.class);
    if (arrayIndexName == null) {
        return null;
    }

    switch (arrayIndexName.getContents()) {
        case "TYPO3_DB":
            return new PhpType().add("#C\\TYPO3\\CMS\\Core\\Database\\DatabaseConnection");
        case "TSFE":
            return new PhpType().add("#C\\TYPO3\\CMS\\Frontend\\Controller\\TypoScriptFrontendController");
        case "BE_USER":
            return new PhpType().add("#C\\TYPO3\\CMS\\Core\\Authentication\\BackendUserAuthentication");
        case "LANG":
            return new PhpType().add("#C\\TYPO3\\CMS\\Lang\\LanguageService");
        case "TYPO3_REQUEST":
            return new PhpType().add("#C\\Psr\\Http\\Message\\ServerRequestInterface");
        default:
            return null;
    }
}
 
源代码13 项目: silex-idea-plugin   文件: Utils.java
private static Container findContainerForPimpleArrayAccess(ArrayAccessExpression arrayAccessElement, Boolean onlyParentContainers) {

        PsiElement children;
        PsiElement element = arrayAccessElement;
        while ((children = PsiTreeUtil.getChildOfType(element, ArrayAccessExpression.class)) != null) {
            element = children;
        }

        // check if var is pimple container
        Signature signature = new Signature();

        PsiElement signatureElement = PsiTreeUtil.getChildOfAnyType(element, Variable.class, FieldReference.class);
        if (signatureElement == null) {
            return null;
        }

        if (signatureElement instanceof Variable) {
            signature.set(((Variable) signatureElement).getSignature());
        }

        if (signatureElement instanceof FieldReference) {
            signature.set(((FieldReference) signatureElement).getSignature());
        }

        PhpIndex phpIndex = PhpIndex.getInstance(arrayAccessElement.getProject());

        ArrayList<String> parameters = new ArrayList<String>();
        if (!findPimpleContainer(phpIndex, signature.base, parameters)) {
            return null;
        }

        Container container = ContainerResolver.get(arrayAccessElement.getProject());

        // find proper base container from signature
        for (String parameter : parameters) {
            container = container.getContainers().get(getResolvedParameter(phpIndex, parameter));
            if (container == null)
                return null;
        }

        PsiElement lastElement = onlyParentContainers ? arrayAccessElement : arrayAccessElement.getParent();

        // find proper container
        while (!element.isEquivalentTo(lastElement) ) {

            ArrayIndex arrayIndex = ((ArrayAccessExpression)element).getIndex();
            if (arrayIndex == null) {
                return null;
            }

            PsiElement arrayIndexElement = arrayIndex.getValue();
            if (arrayIndexElement == null) {
                return null;
            }

            String containerName;

            if (arrayIndexElement instanceof StringLiteralExpression) {
                containerName = ((StringLiteralExpression) arrayIndexElement).getContents();
            }
            else if (arrayIndexElement instanceof MemberReference) {
                containerName = getResolvedParameter(phpIndex, ((MemberReference) arrayIndexElement).getSignature());
            }
            else return null;

            container = container.getContainers().get(containerName);
            if (container == null) {
                return null;
            }

            element = element.getParent();
        }

        return container;

    }
 
源代码14 项目: intellij-haskforce   文件: HaskellTypeeImpl.java
@Override
@Nullable
public HaskellVarop getVarop() {
  return PsiTreeUtil.getChildOfType(this, HaskellVarop.class);
}
 
源代码15 项目: intellij-haskforce   文件: HaskellQconImpl.java
@Override
@Nullable
public HaskellGconsym getGconsym() {
  return PsiTreeUtil.getChildOfType(this, HaskellGconsym.class);
}
 
源代码16 项目: intellij-haxe   文件: HaxeStatementUtils.java
/**
 * Retrieve the (first) catch statement that belongs to the given element.
 */
public static HaxeCatchStatement getCatchStatement(PsiElement elem) {
  return PsiTreeUtil.getChildOfType(elem, HaxeCatchStatement.class);
}
 
源代码17 项目: intellij-haskforce   文件: HaskellOqtyconImpl.java
@Override
@Nullable
public HaskellQtyconsym getQtyconsym() {
  return PsiTreeUtil.getChildOfType(this, HaskellQtyconsym.class);
}
 
源代码18 项目: intellij-haskforce   文件: HaskellTypeeImpl.java
@Override
@Nullable
public HaskellQtyconop getQtyconop() {
  return PsiTreeUtil.getChildOfType(this, HaskellQtyconop.class);
}
 
源代码19 项目: intellij-haskforce   文件: HaskellOpImpl.java
@Override
@Nullable
public HaskellConop getConop() {
  return PsiTreeUtil.getChildOfType(this, HaskellConop.class);
}
 
源代码20 项目: intellij-haskforce   文件: HaskellAtypeImpl.java
@Override
@Nullable
public HaskellVars getVars() {
  return PsiTreeUtil.getChildOfType(this, HaskellVars.class);
}