Cleanup: NotNull/Nullable
[idea/community.git] / java / java-psi-api / src / com / intellij / patterns / PsiStatementPattern.java
1 // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.patterns;
3
4 import com.intellij.psi.PsiMember;
5 import com.intellij.psi.PsiMethod;
6 import com.intellij.psi.PsiStatement;
7 import com.intellij.psi.util.PsiTreeUtil;
8 import com.intellij.util.ProcessingContext;
9 import org.jetbrains.annotations.NonNls;
10 import org.jetbrains.annotations.NotNull;
11
12 /**
13  * @author nik
14  */
15 public class PsiStatementPattern<T extends PsiStatement, Self extends PsiStatementPattern<T, Self>> extends PsiJavaElementPattern<T, Self>{
16   public PsiStatementPattern(final Class<T> aClass) {
17     super(aClass);
18   }
19
20   public Self insideMethod(final PsiMethodPattern pattern) {
21     return with(new PatternCondition<T>("insideMethod") {
22       @Override
23       public boolean accepts(@NotNull final T t, final ProcessingContext context) {
24         PsiMethod method = PsiTreeUtil.getParentOfType(t, PsiMethod.class, false, PsiMember.class);
25         return method != null && pattern.accepts(method, context);
26       }
27     });
28   }
29
30   public Self insideMethod(StringPattern methodName, String qualifiedClassName) {
31     return insideMethod(PsiJavaPatterns.psiMethod().withName(methodName).definedInClass(qualifiedClassName));
32   }
33
34   public Self insideMethod(@NotNull @NonNls String methodName, @NotNull @NonNls String qualifiedClassName) {
35     return insideMethod(StandardPatterns.string().equalTo(methodName), qualifiedClassName);
36   }
37
38   public static class Capture<T extends PsiStatement> extends PsiStatementPattern<T, Capture<T>> {
39     public Capture(final Class<T> aClass) {
40       super(aClass);
41     }
42
43   }
44 }