2 * Copyright (c) 2000-2005 by JetBrains s.r.o. All Rights Reserved.
3 * Use is subject to license terms.
5 package com
.intellij
.patterns
;
7 import com
.intellij
.psi
.*;
8 import com
.intellij
.psi
.tree
.IElementType
;
9 import com
.intellij
.util
.ProcessingContext
;
10 import org
.jetbrains
.annotations
.Nullable
;
15 public class PsiJavaPatterns
extends StandardPatterns
{
17 public static IElementTypePattern
elementType() {
18 return PlatformPatterns
.elementType();
21 public static VirtualFilePattern
virtualFile() {
22 return PlatformPatterns
.virtualFile();
25 public static PsiJavaElementPattern
.Capture
<PsiElement
> psiElement() {
26 return new PsiJavaElementPattern
.Capture
<PsiElement
>(PsiElement
.class);
29 public static PsiJavaElementPattern
.Capture
<PsiElement
> psiElement(IElementType type
) {
30 return psiElement().withElementType(type
);
33 public static <T
extends PsiElement
> PsiJavaElementPattern
.Capture
<T
> psiElement(final Class
<T
> aClass
) {
34 return new PsiJavaElementPattern
.Capture
<T
>(aClass
);
37 public static PsiJavaElementPattern
.Capture
<PsiLiteralExpression
> literalExpression() {
38 return literalExpression(null);
41 public static PsiJavaElementPattern
.Capture
<PsiLiteralExpression
> literalExpression(final ElementPattern value
) {
42 return new PsiJavaElementPattern
.Capture
<PsiLiteralExpression
>(new InitialPatternCondition
<PsiLiteralExpression
>(PsiLiteralExpression
.class) {
43 public boolean accepts(@Nullable final Object o
, final ProcessingContext context
) {
44 return o
instanceof PsiLiteralExpression
45 && (value
== null || value
.accepts(((PsiLiteralExpression
)o
).getValue(), context
));
50 public static PsiMemberPattern
.Capture
psiMember() {
51 return new PsiMemberPattern
.Capture();
54 public static PsiMethodPattern
psiMethod() {
55 return new PsiMethodPattern();
58 public static PsiModifierListOwnerPattern
.Capture
<PsiParameter
> psiParameter() {
59 return new PsiModifierListOwnerPattern
.Capture
<PsiParameter
>(new InitialPatternCondition
<PsiParameter
>(PsiParameter
.class) {
61 public boolean accepts(@Nullable Object o
, ProcessingContext context
) {
62 return o
instanceof PsiParameter
;
66 public static PsiModifierListOwnerPattern
.Capture
<PsiModifierListOwner
> psiModifierListOwner() {
67 return new PsiModifierListOwnerPattern
.Capture
<PsiModifierListOwner
>(new InitialPatternCondition
<PsiModifierListOwner
>(PsiModifierListOwner
.class) {
69 public boolean accepts(@Nullable Object o
, ProcessingContext context
) {
70 return o
instanceof PsiModifierListOwner
;
75 public static PsiFieldPattern
psiField() {
76 return new PsiFieldPattern();
79 public static PsiClassPattern
psiClass() {
80 return new PsiClassPattern();
83 public static PsiAnnotationPattern
psiAnnotation() {
84 return new PsiAnnotationPattern();
87 public static PsiNameValuePairPattern
psiNameValuePair() {
88 return new PsiNameValuePairPattern();
91 public static PsiTypePattern
psiType() {
92 return new PsiTypePattern();
95 public static PsiExpressionPattern
.Capture
<PsiExpression
> psiExpression() {
96 return new PsiExpressionPattern
.Capture
<PsiExpression
>(PsiExpression
.class);
99 public static PsiBinaryExpressionPattern
psiBinaryExpression() {
100 return new PsiBinaryExpressionPattern();
103 public static PsiTypeCastExpressionPattern
psiTypeCastExpression() {
104 return new PsiTypeCastExpressionPattern();
107 public static PsiJavaElementPattern
.Capture
<PsiReferenceExpression
> psiReferenceExpression() {
108 return psiElement(PsiReferenceExpression
.class);
111 public static PsiStatementPattern
.Capture
<PsiExpressionStatement
> psiExpressionStatement() {
112 return new PsiStatementPattern
.Capture
<PsiExpressionStatement
>(PsiExpressionStatement
.class);
115 public static PsiStatementPattern
.Capture
<PsiReturnStatement
> psiReturnStatement() {
116 return new PsiStatementPattern
.Capture
<PsiReturnStatement
>(PsiReturnStatement
.class);