当前位置: 首页>>代码示例>>Java>>正文


Java PsiDeclarationStatement.getDeclaredElements方法代码示例

本文整理汇总了Java中com.intellij.psi.PsiDeclarationStatement.getDeclaredElements方法的典型用法代码示例。如果您正苦于以下问题:Java PsiDeclarationStatement.getDeclaredElements方法的具体用法?Java PsiDeclarationStatement.getDeclaredElements怎么用?Java PsiDeclarationStatement.getDeclaredElements使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.intellij.psi.PsiDeclarationStatement的用法示例。


在下文中一共展示了PsiDeclarationStatement.getDeclaredElements方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: findMethodCall

import com.intellij.psi.PsiDeclarationStatement; //导入方法依赖的package包/类
private PsiMethodCallExpression findMethodCall(PsiElement element) {
    // This covers the case if there is a method being used to initialize a variable..
    // i.e int a = random();
    if (element instanceof PsiDeclarationStatement) {
        PsiDeclarationStatement declarationStatement = (PsiDeclarationStatement) element;
        for (PsiElement declarationElement : declarationStatement.getDeclaredElements()) {
            if (declarationElement instanceof PsiVariable) {
                PsiVariable variable = (PsiVariable) declarationElement;
                PsiExpression initializer = variable.getInitializer();
                if (initializer instanceof PsiMethodCallExpression) {
                    return (PsiMethodCallExpression) initializer;
                }
            }
        }
    }
    if (element instanceof PsiExpressionStatement) {
        PsiExpression expression = ((PsiExpressionStatement) element).getExpression();
        if (expression instanceof PsiMethodCallExpression) {
            return (PsiMethodCallExpression) expression;
        }
    }
    return null;
}
 
开发者ID:mParticle,项目名称:mparticle-android-sdk,代码行数:24,代码来源:MpApiDetector.java

示例2: visitDeclarationStatement

import com.intellij.psi.PsiDeclarationStatement; //导入方法依赖的package包/类
@Override
public void visitDeclarationStatement(
  @NotNull PsiDeclarationStatement statement) {
  if (assignedFrom) {
    return;
  }
  super.visitDeclarationStatement(statement);
  final PsiElement[] declaredElements = statement.getDeclaredElements();
  for (PsiElement declaredElement : declaredElements) {
    if (declaredElement instanceof PsiVariable) {
      final PsiVariable declaredVariable =
        (PsiVariable)declaredElement;
      final PsiExpression initializer =
        declaredVariable.getInitializer();
      if (initializer != null &&
          VariableAccessUtils.mayEvaluateToVariable(initializer,
                                                    variable)) {
        assignedFrom = true;
        return;
      }
    }
  }
}
 
开发者ID:consulo,项目名称:consulo-java,代码行数:24,代码来源:VariableAssignedFromVisitor.java

示例3: getVariable

import com.intellij.psi.PsiDeclarationStatement; //导入方法依赖的package包/类
/**
 * ローカル変数取得 (宣言文で定義された変数)
 * @param declaration ルートノード
 * @return ローカル変数 (空要素の場合もあります)
 */
public static @Nullable PsiLocalVariable getVariable(PsiDeclarationStatement declaration) {
    PsiElement[] elements = declaration.getDeclaredElements();
    for (PsiElement element : elements) {
        if (element instanceof PsiLocalVariable) {
            PsiLocalVariable valiable = (PsiLocalVariable) element;
            return valiable;
        }
    }
    return null;
}
 
开发者ID:cch-robo,项目名称:Android_Lint_SRP_Practice_Example,代码行数:16,代码来源:ElementUtil.java

示例4: from

import com.intellij.psi.PsiDeclarationStatement; //导入方法依赖的package包/类
@Nullable
public static CountingLoop from(PsiForStatement forStatement)
{
	// check that initialization is for(int/long i = <initial_value>;...;...)
	PsiDeclarationStatement initialization = tryCast(forStatement.getInitialization(), PsiDeclarationStatement.class);
	if(initialization == null || initialization.getDeclaredElements().length != 1)
	{
		return null;
	}
	PsiLocalVariable counter = tryCast(initialization.getDeclaredElements()[0], PsiLocalVariable.class);
	if(counter == null)
	{
		return null;
	}
	if(!counter.getType().equals(PsiType.INT) && !counter.getType().equals(PsiType.LONG))
	{
		return null;
	}

	PsiExpression initializer = PsiUtil.skipParenthesizedExprDown(counter.getInitializer());
	if(initializer == null)
	{
		return null;
	}

	// check that increment is like for(...;...;i++)
	if(!VariableAccessUtils.variableIsIncremented(counter, forStatement.getUpdate()))
	{
		return null;
	}

	// check that condition is like for(...;i<bound;...) or for(...;i<=bound;...)
	PsiBinaryExpression condition = tryCast(forStatement.getCondition(), PsiBinaryExpression.class);
	if(condition == null)
	{
		return null;
	}
	IElementType type = condition.getOperationTokenType();
	boolean closed = false;
	PsiExpression bound;
	PsiExpression ref;
	if(type.equals(JavaTokenType.LE))
	{
		bound = condition.getROperand();
		ref = condition.getLOperand();
		closed = true;
	}
	else if(type.equals(JavaTokenType.LT))
	{
		bound = condition.getROperand();
		ref = condition.getLOperand();
	}
	else if(type.equals(JavaTokenType.GE))
	{
		bound = condition.getLOperand();
		ref = condition.getROperand();
		closed = true;
	}
	else if(type.equals(JavaTokenType.GT))
	{
		bound = condition.getLOperand();
		ref = condition.getROperand();
	}
	else
	{
		return null;
	}
	if(bound == null || !ExpressionUtils.isReferenceTo(ref, counter))
	{
		return null;
	}
	if(!TypeConversionUtil.areTypesAssignmentCompatible(counter.getType(), bound))
	{
		return null;
	}
	return new CountingLoop(forStatement, counter, initializer, bound, closed);
}
 
开发者ID:consulo,项目名称:consulo-java,代码行数:78,代码来源:CountingLoop.java


注:本文中的com.intellij.psi.PsiDeclarationStatement.getDeclaredElements方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。