Java 类com.intellij.psi.PsiStatement 实例源码
项目:intellij-ce-playground
文件:LambdaMethodFilter.java
public LambdaMethodFilter(PsiLambdaExpression lambda, int expressionOrdinal, Range<Integer> callingExpressionLines) {
myLambdaOrdinal = expressionOrdinal;
myCallingExpressionLines = callingExpressionLines;
SourcePosition firstStatementPosition = null;
SourcePosition lastStatementPosition = null;
final PsiElement body = lambda.getBody();
if (body instanceof PsiCodeBlock) {
final PsiStatement[] statements = ((PsiCodeBlock)body).getStatements();
if (statements.length > 0) {
firstStatementPosition = SourcePosition.createFromElement(statements[0]);
if (firstStatementPosition != null) {
final PsiStatement lastStatement = statements[statements.length - 1];
lastStatementPosition =
SourcePosition.createFromOffset(firstStatementPosition.getFile(), lastStatement.getTextRange().getEndOffset());
}
}
}
else if (body != null) {
firstStatementPosition = SourcePosition.createFromElement(body);
}
myFirstStatementPosition = firstStatementPosition;
myLastStatementLine = lastStatementPosition != null ? lastStatementPosition.getLine() : -1;
}
项目:intellij-ce-playground
文件:AnonymousClassMethodFilter.java
public AnonymousClassMethodFilter(PsiMethod psiMethod, Range<Integer> lines) {
super(psiMethod, lines);
SourcePosition firstStatementPosition = null;
SourcePosition lastStatementPosition = null;
final PsiCodeBlock body = psiMethod.getBody();
if (body != null) {
final PsiStatement[] statements = body.getStatements();
if (statements.length > 0) {
firstStatementPosition = SourcePosition.createFromElement(statements[0]);
if (firstStatementPosition != null) {
final PsiStatement lastStatement = statements[statements.length - 1];
lastStatementPosition = SourcePosition.createFromOffset(firstStatementPosition.getFile(), lastStatement.getTextRange().getEndOffset());
}
}
}
myBreakpointPosition = firstStatementPosition;
myLastStatementLine = lastStatementPosition != null? lastStatementPosition.getLine() : -1;
}
项目:intellij-ce-playground
文件:PopFrameAction.java
private static List<PsiStatement> getFinallyStatements(@Nullable SourcePosition position) {
if (position == null) {
return Collections.emptyList();
}
List<PsiStatement> res = new ArrayList<PsiStatement>();
PsiElement element = position.getFile().findElementAt(position.getOffset());
PsiTryStatement tryStatement = PsiTreeUtil.getParentOfType(element, PsiTryStatement.class);
while (tryStatement != null) {
PsiCodeBlock finallyBlock = tryStatement.getFinallyBlock();
if (finallyBlock != null) {
ContainerUtil.addAll(res, finallyBlock.getStatements());
}
tryStatement = PsiTreeUtil.getParentOfType(tryStatement, PsiTryStatement.class);
}
return res;
}
项目:intellij-ce-playground
文件:ContinueOrBreakFromFinallyBlockInspection.java
@Override
public void visitContinueStatement(
@NotNull PsiContinueStatement statement) {
super.visitContinueStatement(statement);
if (!ControlFlowUtils.isInFinallyBlock(statement)) {
return;
}
final PsiStatement continuedStatement =
statement.findContinuedStatement();
if (continuedStatement == null) {
return;
}
if (ControlFlowUtils.isInFinallyBlock(continuedStatement)) {
return;
}
registerStatementError(statement);
}
项目:intellij-ce-playground
文件:MultipleReturnPointsPerMethodInspection.java
private int calculateReturnPointCount(PsiMethod method) {
final ReturnPointCountVisitor visitor =
new ReturnPointCountVisitor(ignoreGuardClauses);
method.accept(visitor);
final int count = visitor.getCount();
if (!mayFallThroughBottom(method)) {
return count;
}
final PsiCodeBlock body = method.getBody();
if (body == null) {
return count;
}
final PsiStatement[] statements = body.getStatements();
if (statements.length == 0) {
return count + 1;
}
final PsiStatement lastStatement =
statements[statements.length - 1];
if (ControlFlowUtils.statementMayCompleteNormally(lastStatement)) {
return count + 1;
}
return count;
}
项目:tools-idea
文件:IfStatementWithTooManyBranchesInspection.java
@Override
public void visitIfStatement(@NotNull PsiIfStatement statement) {
super.visitIfStatement(statement);
final PsiElement parent = statement.getParent();
if (parent instanceof PsiIfStatement) {
final PsiIfStatement parentStatement = (PsiIfStatement)parent;
final PsiStatement elseBranch = parentStatement.getElseBranch();
if (statement.equals(elseBranch)) {
return;
}
}
final int branchCount = calculateBranchCount(statement);
if (branchCount <= m_limit) {
return;
}
registerStatementError(statement, Integer.valueOf(branchCount));
}
项目:tools-idea
文件:EmptySynchronizedStatementInspection.java
@Override
public void visitSynchronizedStatement(
@NotNull PsiSynchronizedStatement statement) {
super.visitSynchronizedStatement(statement);
if (FileTypeUtils.isInJsp(statement.getContainingFile())) {
return;
}
final PsiCodeBlock body = statement.getBody();
if (body == null) {
return;
}
final PsiStatement[] statements = body.getStatements();
if (statements.length > 0) {
return;
}
registerStatementError(statement);
}
项目:tools-idea
文件:ContinueOrBreakFromFinallyBlockInspection.java
@Override
public void visitContinueStatement(
@NotNull PsiContinueStatement statement) {
super.visitContinueStatement(statement);
if (!ControlFlowUtils.isInFinallyBlock(statement)) {
return;
}
final PsiStatement continuedStatement =
statement.findContinuedStatement();
if (continuedStatement == null) {
return;
}
if (ControlFlowUtils.isInFinallyBlock(continuedStatement)) {
return;
}
registerStatementError(statement);
}
项目:tools-idea
文件:MultipleReturnPointsPerMethodInspection.java
private int calculateReturnPointCount(PsiMethod method) {
final ReturnPointCountVisitor visitor =
new ReturnPointCountVisitor(ignoreGuardClauses);
method.accept(visitor);
final int count = visitor.getCount();
if (!mayFallThroughBottom(method)) {
return count;
}
final PsiCodeBlock body = method.getBody();
if (body == null) {
return count;
}
final PsiStatement[] statements = body.getStatements();
if (statements.length == 0) {
return count + 1;
}
final PsiStatement lastStatement =
statements[statements.length - 1];
if (ControlFlowUtils.statementMayCompleteNormally(lastStatement)) {
return count + 1;
}
return count;
}
项目:lombok-intellij-plugin
文件:LombokInlineMethodHandler.java
private boolean isChainingConstructor(PsiMethod constructor) {
PsiCodeBlock body = constructor.getBody();
if (body != null) {
PsiStatement[] statements = body.getStatements();
if (statements.length == 1 && statements[0] instanceof PsiExpressionStatement) {
PsiExpression expression = ((PsiExpressionStatement) statements[0]).getExpression();
if (expression instanceof PsiMethodCallExpression) {
PsiReferenceExpression methodExpr = ((PsiMethodCallExpression) expression).getMethodExpression();
if ("this".equals(methodExpr.getReferenceName())) {
PsiElement resolved = methodExpr.resolve();
return resolved instanceof PsiMethod && ((PsiMethod) resolved).isConstructor(); //delegated via "this" call
}
}
}
}
return false;
}
项目:consulo-java
文件:BlockUtils.java
/**
* Add new statement after given anchor statement creating code block, if necessary
*
* @param anchor existing statement
* @param newStatement a new statement which should be added after an existing one
* @return added physical statement
*/
public static PsiStatement addAfter(PsiStatement anchor, PsiStatement newStatement)
{
PsiElement oldStatement = anchor;
PsiElement parent = oldStatement.getParent();
while(parent instanceof PsiLabeledStatement)
{
oldStatement = parent;
parent = oldStatement.getParent();
}
final PsiElement result;
if(parent instanceof PsiCodeBlock)
{
result = parent.addAfter(newStatement, oldStatement);
}
else
{
PsiElementFactory factory = JavaPsiFacade.getElementFactory(anchor.getProject());
final PsiBlockStatement newBlockStatement = (PsiBlockStatement) factory.createStatementFromText("{}", oldStatement);
final PsiElement codeBlock = newBlockStatement.getCodeBlock();
codeBlock.add(oldStatement);
codeBlock.add(newStatement);
result = ((PsiBlockStatement) oldStatement.replace(newBlockStatement)).getCodeBlock().getStatements()[1];
}
return (PsiStatement) result;
}
项目:consulo-java
文件:RecursiveCallLineMarkerProvider.java
@RequiredReadAction
@Override
public void collectSlowLineMarkers(@NotNull List<PsiElement> elements, @NotNull Collection<LineMarkerInfo> result)
{
final Set<PsiStatement> statements = new HashSet<>();
for(PsiElement element : elements)
{
ProgressManager.checkCanceled();
if(element instanceof PsiMethodCallExpression)
{
final PsiMethodCallExpression methodCall = (PsiMethodCallExpression) element;
final PsiStatement statement = PsiTreeUtil.getParentOfType(methodCall, PsiStatement.class, true, PsiMethod.class);
if(!statements.contains(statement) && isRecursiveMethodCall(methodCall))
{
statements.add(statement);
result.add(new RecursiveMethodCallMarkerInfo(methodCall));
}
}
}
}
项目:consulo-java
文件:DeleteSideEffectsAwareFix.java
@Override
public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException
{
PsiExpressionStatement statement = myPointer.getElement();
if(statement == null)
{
return;
}
PsiExpression expression = statement.getExpression();
List<PsiExpression> sideEffects = SideEffectChecker.extractSideEffectExpressions(expression);
PsiStatement[] statements = StatementExtractor.generateStatements(sideEffects, expression);
if(statements.length > 0)
{
BlockUtils.addBefore(statement, statements);
}
statement.delete();
}
项目:consulo-java
文件:IfStatementWithTooManyBranchesInspection.java
@Override
public void visitIfStatement(@NotNull PsiIfStatement statement) {
super.visitIfStatement(statement);
final PsiElement parent = statement.getParent();
if (parent instanceof PsiIfStatement) {
final PsiIfStatement parentStatement = (PsiIfStatement)parent;
final PsiStatement elseBranch = parentStatement.getElseBranch();
if (statement.equals(elseBranch)) {
return;
}
}
final int branchCount = calculateBranchCount(statement);
if (branchCount <= m_limit) {
return;
}
registerStatementError(statement, Integer.valueOf(branchCount));
}
项目:consulo-java
文件:TrivialIfInspection.java
private static void replaceSimplifiableAssignment(
PsiIfStatement statement)
throws IncorrectOperationException {
final PsiExpression condition = statement.getCondition();
if (condition == null) {
return;
}
final String conditionText = condition.getText();
final PsiStatement thenBranch = statement.getThenBranch();
final PsiExpressionStatement assignmentStatement =
(PsiExpressionStatement)
ControlFlowUtils.stripBraces(thenBranch);
final PsiAssignmentExpression assignmentExpression =
(PsiAssignmentExpression)assignmentStatement.getExpression();
final PsiJavaToken operator =
assignmentExpression.getOperationSign();
final String operand = operator.getText();
final PsiExpression lhs = assignmentExpression.getLExpression();
final String lhsText = lhs.getText();
replaceStatement(statement,
lhsText + operand + conditionText + ';');
}
项目:consulo-java
文件:TrivialIfInspection.java
private static void replaceSimplifiableAssignmentNegated(
PsiIfStatement statement)
throws IncorrectOperationException {
final PsiExpression condition = statement.getCondition();
if (condition == null) {
return;
}
final String conditionText =
BoolUtils.getNegatedExpressionText(condition);
final PsiStatement thenBranch = statement.getThenBranch();
final PsiExpressionStatement assignmentStatement =
(PsiExpressionStatement)
ControlFlowUtils.stripBraces(thenBranch);
final PsiAssignmentExpression assignmentExpression =
(PsiAssignmentExpression)
assignmentStatement.getExpression();
final PsiJavaToken operator =
assignmentExpression.getOperationSign();
final String operand = operator.getText();
final PsiExpression lhs = assignmentExpression.getLExpression();
final String lhsText = lhs.getText();
replaceStatement(statement,
lhsText + operand + conditionText + ';');
}
项目:consulo-java
文件:TrivialIfInspection.java
public static boolean isSimplifiableImplicitReturn(
PsiIfStatement ifStatement) {
if (ifStatement.getElseBranch() != null) {
return false;
}
PsiStatement thenBranch = ifStatement.getThenBranch();
thenBranch = ControlFlowUtils.stripBraces(thenBranch);
final PsiElement nextStatement =
PsiTreeUtil.skipSiblingsForward(ifStatement,
PsiWhiteSpace.class);
if (!(nextStatement instanceof PsiStatement)) {
return false;
}
final PsiStatement elseBranch = (PsiStatement)nextStatement;
return ConditionalUtils.isReturn(thenBranch, PsiKeyword.TRUE)
&& ConditionalUtils.isReturn(elseBranch, PsiKeyword.FALSE);
}
项目:consulo-java
文件:TrivialIfInspection.java
public static boolean isSimplifiableImplicitReturnNegated(
PsiIfStatement ifStatement) {
if (ifStatement.getElseBranch() != null) {
return false;
}
PsiStatement thenBranch = ifStatement.getThenBranch();
thenBranch = ControlFlowUtils.stripBraces(thenBranch);
final PsiElement nextStatement =
PsiTreeUtil.skipSiblingsForward(ifStatement,
PsiWhiteSpace.class);
if (!(nextStatement instanceof PsiStatement)) {
return false;
}
final PsiStatement elseBranch = (PsiStatement)nextStatement;
return ConditionalUtils.isReturn(thenBranch, PsiKeyword.FALSE)
&& ConditionalUtils.isReturn(elseBranch, PsiKeyword.TRUE);
}
项目:consulo-java
文件:InfiniteLoopStatementInspection.java
private void checkStatement(PsiStatement statement)
{
if(ControlFlowUtils.statementMayCompleteNormally(statement))
{
return;
}
if(ControlFlowUtils.containsReturn(statement))
{
return;
}
if(ControlFlowUtils.containsSystemExit(statement))
{
return;
}
registerStatementError(statement);
}
项目:consulo-java
文件:EmptySynchronizedStatementInspection.java
@Override
public void visitSynchronizedStatement(
@NotNull PsiSynchronizedStatement statement) {
super.visitSynchronizedStatement(statement);
/* if (JspPsiUtil.isInJspFile(statement.getContainingFile())) {
return;
}*/
final PsiCodeBlock body = statement.getBody();
if (body == null) {
return;
}
final PsiStatement[] statements = body.getStatements();
if (statements.length > 0) {
return;
}
registerStatementError(statement);
}
项目:consulo-java
文件:ContinueOrBreakFromFinallyBlockInspection.java
@Override
public void visitContinueStatement(
@NotNull PsiContinueStatement statement) {
super.visitContinueStatement(statement);
if (!ControlFlowUtils.isInFinallyBlock(statement)) {
return;
}
final PsiStatement continuedStatement =
statement.findContinuedStatement();
if (continuedStatement == null) {
return;
}
if (ControlFlowUtils.isInFinallyBlock(continuedStatement)) {
return;
}
registerStatementError(statement);
}
项目:consulo-java
文件:MultipleReturnPointsPerMethodInspection.java
private int calculateReturnPointCount(PsiMethod method) {
final ReturnPointCountVisitor visitor =
new ReturnPointCountVisitor(ignoreGuardClauses);
method.accept(visitor);
final int count = visitor.getCount();
if (!mayFallThroughBottom(method)) {
return count;
}
final PsiCodeBlock body = method.getBody();
if (body == null) {
return count;
}
final PsiStatement[] statements = body.getStatements();
if (statements.length == 0) {
return count + 1;
}
final PsiStatement lastStatement =
statements[statements.length - 1];
if (ControlFlowUtils.statementMayCompleteNormally(lastStatement)) {
return count + 1;
}
return count;
}
项目:consulo-java
文件:AnonymousClassMethodFilter.java
public AnonymousClassMethodFilter(PsiMethod psiMethod, Range<Integer> lines)
{
super(psiMethod, lines);
SourcePosition firstStatementPosition = null;
SourcePosition lastStatementPosition = null;
final PsiCodeBlock body = psiMethod.getBody();
if(body != null)
{
final PsiStatement[] statements = body.getStatements();
if(statements.length > 0)
{
firstStatementPosition = SourcePosition.createFromElement(statements[0]);
if(firstStatementPosition != null)
{
final PsiStatement lastStatement = statements[statements.length - 1];
lastStatementPosition = SourcePosition.createFromOffset(firstStatementPosition.getFile(), lastStatement.getTextRange().getEndOffset());
}
}
}
myBreakpointPosition = firstStatementPosition;
myLastStatementLine = lastStatementPosition != null ? lastStatementPosition.getLine() : -1;
}
项目:Android_Lint_SRP_Practice_Example
文件:ElementUtil.java
private static void extractStatements(@NonNull PsiElement element, List<PsiStatement> statements) {
for (PsiElement child : element.getChildren()) {
if (child instanceof PsiStatement) {
statements.add((PsiStatement) child);
continue;
}
extractStatements(child, statements);
}
}
项目:intellij-ce-playground
文件:ControlFlowImpl.java
public void startElement(PsiElement element) {
myElementStack.push(element);
myElementToStartOffsetMap.put(element, myInstructions.size());
if (LOG.isDebugEnabled()){
if (element instanceof PsiStatement){
String text = element.getText();
int index = Math.min(text.indexOf('\n'), text.indexOf('\r'));
if (index >= 0){
text = text.substring(0, index);
}
addInstruction(new CommentInstruction(text));
}
}
}
项目:intellij-ce-playground
文件:JavaIfUnwrapper.java
@Override
protected void doUnwrap(PsiElement element, Context context) throws IncorrectOperationException {
PsiStatement then = ((PsiIfStatement)element).getThenBranch();
context.extractFromBlockOrSingleStatement(then, element);
context.delete(element);
}
项目:intellij-ce-playground
文件:JavaElseUnwrapper.java
@Override
protected void unwrapElseBranch(PsiStatement branch, PsiElement parent, Context context) throws IncorrectOperationException {
// if we have 'else if' then we have to extract statements from the 'if' branch
if (branch instanceof PsiIfStatement) {
branch = ((PsiIfStatement)branch).getThenBranch();
}
parent = findTopmostIfStatement(parent);
context.extractFromBlockOrSingleStatement(branch, parent);
context.delete(parent);
}
项目:intellij-ce-playground
文件:BlockBraceFixer.java
@Override
public void apply(Editor editor, JavaSmartEnterProcessor processor, PsiElement psiElement) throws IncorrectOperationException {
if (psiElement instanceof PsiCodeBlock && afterUnmatchedBrace(editor,psiElement.getContainingFile().getFileType())) {
PsiCodeBlock block = (PsiCodeBlock) psiElement;
int stopOffset = block.getTextRange().getEndOffset();
final PsiStatement[] statements = block.getStatements();
if (statements.length > 0) {
stopOffset = statements[0].getTextRange().getEndOffset();
}
editor.getDocument().insertString(stopOffset, "}");
}
}
项目:intellij-ce-playground
文件:IfStatementSelectioner.java
@Override
public List<TextRange> select(PsiElement e, CharSequence editorText, int cursorOffset, Editor editor) {
List<TextRange> result = new ArrayList<TextRange>();
result.addAll(expandToWholeLine(editorText, e.getTextRange(), false));
PsiIfStatement statement = (PsiIfStatement)e;
final PsiKeyword elseKeyword = statement.getElseElement();
if (elseKeyword != null) {
final PsiStatement then = statement.getThenBranch();
if (then != null) {
final TextRange thenRange = new TextRange(statement.getTextRange().getStartOffset(), then.getTextRange().getEndOffset());
if (thenRange.contains(cursorOffset)) {
result.addAll(expandToWholeLine(editorText, thenRange, false));
}
}
result.addAll(expandToWholeLine(editorText,
new TextRange(elseKeyword.getTextRange().getStartOffset(),
statement.getTextRange().getEndOffset()),
false));
final PsiStatement branch = statement.getElseBranch();
if (branch instanceof PsiIfStatement) {
PsiIfStatement elseIf = (PsiIfStatement)branch;
final PsiKeyword element = elseIf.getElseElement();
if (element != null) {
final PsiStatement elseThen = elseIf.getThenBranch();
if (elseThen != null) {
result.addAll(expandToWholeLine(editorText,
new TextRange(elseKeyword.getTextRange().getStartOffset(),
elseThen.getTextRange().getEndOffset()),
false));
}
}
}
}
return result;
}
项目:intellij-ce-playground
文件:DefaultNotLastCaseInSwitchInspection.java
@Override
public void visitSwitchStatement(
@NotNull PsiSwitchStatement statement) {
super.visitSwitchStatement(statement);
final PsiCodeBlock body = statement.getBody();
if (body == null) {
return;
}
final PsiStatement[] statements = body.getStatements();
boolean labelSeen = false;
for (int i = statements.length - 1; i >= 0; i--) {
final PsiStatement child = statements[i];
if (child instanceof PsiSwitchLabelStatement) {
final PsiSwitchLabelStatement label =
(PsiSwitchLabelStatement)child;
if (label.isDefaultCase()) {
if (labelSeen) {
registerStatementError(label);
}
return;
}
else {
labelSeen = true;
}
}
}
}
项目:intellij-ce-playground
文件:IfStatementWithTooManyBranchesInspection.java
private int calculateBranchCount(PsiIfStatement statement) {
final PsiStatement branch = statement.getElseBranch();
if (branch == null) {
return 1;
}
if (!(branch instanceof PsiIfStatement)) {
return 2;
}
return 1 + calculateBranchCount((PsiIfStatement)branch);
}
项目:intellij-ce-playground
文件:InfiniteLoopStatementInspection.java
private void checkStatement(PsiStatement statement) {
if (ControlFlowUtils.statementMayCompleteNormally(statement)) {
return;
}
if (ControlFlowUtils.statementContainsReturn(statement)) {
return;
}
if (ControlFlowUtils.statementContainsSystemExit(statement)) {
return;
}
registerStatementError(statement);
}
项目:intellij-ce-playground
文件:EmptySynchronizedStatementInspection.java
@Override
public void visitSynchronizedStatement(@NotNull PsiSynchronizedStatement statement) {
super.visitSynchronizedStatement(statement);
final PsiCodeBlock body = statement.getBody();
if (body == null) {
return;
}
final PsiStatement[] statements = body.getStatements();
if (statements.length > 0) {
return;
}
registerStatementError(statement);
}
项目:intellij-ce-playground
文件:ContinueOrBreakFromFinallyBlockInspection.java
@Override
public void visitBreakStatement(@NotNull PsiBreakStatement statement) {
super.visitBreakStatement(statement);
if (!ControlFlowUtils.isInFinallyBlock(statement)) {
return;
}
final PsiStatement exitedStatement = statement.findExitedStatement();
if (exitedStatement == null) {
return;
}
if (ControlFlowUtils.isInFinallyBlock(exitedStatement)) {
return;
}
registerStatementError(statement);
}
项目:intellij-ce-playground
文件:SplitElseIfIntention.java
public void processIntention(PsiElement element)
throws IncorrectOperationException {
final PsiJavaToken token = (PsiJavaToken)element;
final PsiIfStatement parentStatement =
(PsiIfStatement)token.getParent();
if (parentStatement == null) {
return;
}
final PsiStatement elseBranch = parentStatement.getElseBranch();
if (elseBranch == null) {
return;
}
final String newStatement = '{' + elseBranch.getText() + '}';
PsiReplacementUtil.replaceStatement(elseBranch, newStatement);
}
项目:intellij-ce-playground
文件:MergeIfAndPredicate.java
public boolean satisfiedBy(PsiElement element) {
if (!(element instanceof PsiJavaToken)) {
return false;
}
final PsiJavaToken token = (PsiJavaToken)element;
final PsiElement parent = token.getParent();
if (!(parent instanceof PsiIfStatement)) {
return false;
}
final PsiIfStatement ifStatement = (PsiIfStatement)parent;
if (ErrorUtil.containsError(ifStatement)) {
return false;
}
PsiStatement thenBranch = ifStatement.getThenBranch();
thenBranch = ControlFlowUtils.stripBraces(thenBranch);
PsiStatement elseBranch = ifStatement.getElseBranch();
elseBranch = ControlFlowUtils.stripBraces(elseBranch);
if (thenBranch == null) {
return false;
}
if (elseBranch != null) {
return false;
}
if (!(thenBranch instanceof PsiIfStatement)) {
return false;
}
final PsiIfStatement childIfStatement = (PsiIfStatement)thenBranch;
return childIfStatement.getElseBranch() == null;
}
项目:mparticle-android-sdk
文件:MpApiDetector.java
private void visitMethodDefinition(JavaContext context, PsiMethod method) {
if (method == null) { return; }
//make sure we are not looking in the onCreate() method of a subclass of android.app.Application,
// and not the actual android.app.Application class ..sometimes the search will take you into
// the sdk's Application class, particularly in testing
if (TARGET_ORIGINATION_METHOD_NAME.equals(method.getName()) && isApplicationClassCall(context, method) && !method.getContainingClass().getQualifiedName().contains("android.app.Application")) {
hasApplicationOnCreateMethod = true;
properMethodCalls = findMethodCalledFrom(TARGET_METHOD_QUALIFIED_NAME, method, MAX_AST_DEPTH);
if (properMethodCalls.size() >= 1) {
if (properMethodCall == null) {
properMethodCall = properMethodCalls.get(0);
}
for (int i = 1; i < properMethodCalls.size(); i++) {
PsiMethodCallExpression call = properMethodCalls.get(i);
if (!reportedDuplicateMethodCalls.contains(call)) {
context.report(ISSUE, context.getLocation(call), MESSAGE_MULTIPLE_START_CALLS);
reportedDuplicateMethodCalls.add(call);
}
}
} else {
context.report(ISSUE, context.getNameLocation(method), MESSAGE_NO_START_CALL_IN_ON_CREATE);
}
}
if (method.getBody() != null) {
for (PsiStatement statement : method.getBody().getStatements()) {
PsiMethodCallExpression methodCall = findMethodCall(statement);
if (methodCall != null && !properMethodCalls.contains(methodCall)) {
visitMethodCall(context, methodCall, method);
}
}
}
}
项目:tools-idea
文件:ControlFlowImpl.java
public void startElement(PsiElement element) {
myElementStack.push(element);
myElementToStartOffsetMap.put(element, myInstructions.size());
if (LOG.isDebugEnabled()){
if (element instanceof PsiStatement){
String text = element.getText();
int index = Math.min(text.indexOf('\n'), text.indexOf('\r'));
if (index >= 0){
text = text.substring(0, index);
}
addInstruction(new CommentInstruction(text));
}
}
}
项目:tools-idea
文件:JavaIfUnwrapper.java
@Override
protected void doUnwrap(PsiElement element, Context context) throws IncorrectOperationException {
PsiStatement then = ((PsiIfStatement)element).getThenBranch();
context.extractFromBlockOrSingleStatement(then, element);
context.delete(element);
}
项目:tools-idea
文件:JavaElseUnwrapper.java
@Override
protected void unwrapElseBranch(PsiStatement branch, PsiElement parent, Context context) throws IncorrectOperationException {
// if we have 'else if' then we have to extract statements from the 'if' branch
if (branch instanceof PsiIfStatement) {
branch = ((PsiIfStatement)branch).getThenBranch();
}
parent = findTopmostIfStatement(parent);
context.extractFromBlockOrSingleStatement(branch, parent);
context.delete(parent);
}