Java 类org.eclipse.jdt.internal.compiler.ast.Clinit 实例源码
项目:lombok-ianchiu
文件:Eclipse.java
public static boolean hasClinit(TypeDeclaration parent) {
if (parent.methods == null) return false;
for (AbstractMethodDeclaration method : parent.methods) {
if (method instanceof Clinit) return true;
}
return false;
}
项目:EasyMPermission
文件:Eclipse.java
public static boolean hasClinit(TypeDeclaration parent) {
if (parent.methods == null) return false;
for (AbstractMethodDeclaration method : parent.methods) {
if (method instanceof Clinit) return true;
}
return false;
}
项目:lombok
文件:Eclipse.java
public static boolean hasClinit(TypeDeclaration parent) {
if (parent.methods == null) return false;
for (AbstractMethodDeclaration method : parent.methods) {
if (method instanceof Clinit) return true;
}
return false;
}
项目:lombok-ianchiu
文件:HandleUtilityClass.java
private void changeModifiersAndGenerateConstructor(EclipseNode typeNode, EclipseNode annotationNode) {
TypeDeclaration classDecl = (TypeDeclaration) typeNode.get();
boolean makeConstructor = true;
classDecl.modifiers |= ClassFileConstants.AccFinal;
boolean markStatic = true;
boolean requiresClInit = false;
boolean alreadyHasClinit = false;
if (typeNode.up().getKind() == Kind.COMPILATION_UNIT) markStatic = false;
if (markStatic && typeNode.up().getKind() == Kind.TYPE) {
TypeDeclaration typeDecl = (TypeDeclaration) typeNode.up().get();
if ((typeDecl.modifiers & ClassFileConstants.AccInterface) != 0) markStatic = false;
}
if (markStatic) classDecl.modifiers |= ClassFileConstants.AccStatic;
for (EclipseNode element : typeNode.down()) {
if (element.getKind() == Kind.FIELD) {
FieldDeclaration fieldDecl = (FieldDeclaration) element.get();
if ((fieldDecl.modifiers & ClassFileConstants.AccStatic) == 0) {
requiresClInit = true;
fieldDecl.modifiers |= ClassFileConstants.AccStatic;
}
} else if (element.getKind() == Kind.METHOD) {
AbstractMethodDeclaration amd = (AbstractMethodDeclaration) element.get();
if (amd instanceof ConstructorDeclaration) {
ConstructorDeclaration constrDecl = (ConstructorDeclaration) element.get();
if (getGeneratedBy(constrDecl) == null && (constrDecl.bits & ASTNode.IsDefaultConstructor) == 0) {
element.addError("@UtilityClasses cannot have declared constructors.");
makeConstructor = false;
continue;
}
} else if (amd instanceof MethodDeclaration) {
amd.modifiers |= ClassFileConstants.AccStatic;
} else if (amd instanceof Clinit) {
alreadyHasClinit = true;
}
} else if (element.getKind() == Kind.TYPE) {
((TypeDeclaration) element.get()).modifiers |= ClassFileConstants.AccStatic;
}
}
if (makeConstructor) createPrivateDefaultConstructor(typeNode, annotationNode);
if (requiresClInit && !alreadyHasClinit) classDecl.addClinit();
}
项目:lombok-ianchiu
文件:SetGeneratedByVisitor.java
@Override public boolean visit(Clinit node, ClassScope scope) {
fixPositions(setGeneratedBy(node, source));
return super.visit(node, scope);
}
项目:lombok-ianchiu
文件:EclipseNode.java
/**
* Visits this node and all child nodes depth-first, calling the provided visitor's visit methods.
*/
public void traverse(EclipseASTVisitor visitor) {
if (!this.isCompleteParse() && visitor.getClass().isAnnotationPresent(DeferUntilPostDiet.class)) return;
switch (getKind()) {
case COMPILATION_UNIT:
visitor.visitCompilationUnit(this, (CompilationUnitDeclaration) get());
ast.traverseChildren(visitor, this);
visitor.endVisitCompilationUnit(this, (CompilationUnitDeclaration) get());
break;
case TYPE:
visitor.visitType(this, (TypeDeclaration) get());
ast.traverseChildren(visitor, this);
visitor.endVisitType(this, (TypeDeclaration) get());
break;
case FIELD:
visitor.visitField(this, (FieldDeclaration) get());
ast.traverseChildren(visitor, this);
visitor.endVisitField(this, (FieldDeclaration) get());
break;
case INITIALIZER:
visitor.visitInitializer(this, (Initializer) get());
ast.traverseChildren(visitor, this);
visitor.endVisitInitializer(this, (Initializer) get());
break;
case METHOD:
if (get() instanceof Clinit) return;
visitor.visitMethod(this, (AbstractMethodDeclaration) get());
ast.traverseChildren(visitor, this);
visitor.endVisitMethod(this, (AbstractMethodDeclaration) get());
break;
case ARGUMENT:
AbstractMethodDeclaration method = (AbstractMethodDeclaration) up().get();
visitor.visitMethodArgument(this, (Argument) get(), method);
ast.traverseChildren(visitor, this);
visitor.endVisitMethodArgument(this, (Argument) get(), method);
break;
case LOCAL:
visitor.visitLocal(this, (LocalDeclaration) get());
ast.traverseChildren(visitor, this);
visitor.endVisitLocal(this, (LocalDeclaration) get());
break;
case ANNOTATION:
switch (up().getKind()) {
case TYPE:
visitor.visitAnnotationOnType((TypeDeclaration) up().get(), this, (Annotation) get());
break;
case FIELD:
visitor.visitAnnotationOnField((FieldDeclaration) up().get(), this, (Annotation) get());
break;
case METHOD:
visitor.visitAnnotationOnMethod((AbstractMethodDeclaration) up().get(), this, (Annotation) get());
break;
case ARGUMENT:
visitor.visitAnnotationOnMethodArgument(
(Argument) parent.get(),
(AbstractMethodDeclaration) parent.directUp().get(),
this, (Annotation) get());
break;
case LOCAL:
visitor.visitAnnotationOnLocal((LocalDeclaration) parent.get(), this, (Annotation) get());
break;
default:
throw new AssertionError("Annotation not expected as child of a " + up().getKind());
}
break;
case STATEMENT:
visitor.visitStatement(this, (Statement) get());
ast.traverseChildren(visitor, this);
visitor.endVisitStatement(this, (Statement) get());
break;
default:
throw new AssertionError("Unexpected kind during node traversal: " + getKind());
}
}
项目:EasyMPermission
文件:HandleUtilityClass.java
private void changeModifiersAndGenerateConstructor(EclipseNode typeNode, EclipseNode annotationNode) {
TypeDeclaration classDecl = (TypeDeclaration) typeNode.get();
boolean makeConstructor = true;
classDecl.modifiers |= ClassFileConstants.AccFinal;
boolean markStatic = true;
boolean requiresClInit = false;
boolean alreadyHasClinit = false;
if (typeNode.up().getKind() == Kind.COMPILATION_UNIT) markStatic = false;
if (markStatic && typeNode.up().getKind() == Kind.TYPE) {
TypeDeclaration typeDecl = (TypeDeclaration) typeNode.up().get();
if ((typeDecl.modifiers & ClassFileConstants.AccInterface) != 0) markStatic = false;
}
if (markStatic) classDecl.modifiers |= ClassFileConstants.AccStatic;
for (EclipseNode element : typeNode.down()) {
if (element.getKind() == Kind.FIELD) {
FieldDeclaration fieldDecl = (FieldDeclaration) element.get();
if ((fieldDecl.modifiers & ClassFileConstants.AccStatic) == 0) {
requiresClInit = true;
fieldDecl.modifiers |= ClassFileConstants.AccStatic;
}
} else if (element.getKind() == Kind.METHOD) {
AbstractMethodDeclaration amd = (AbstractMethodDeclaration) element.get();
if (amd instanceof ConstructorDeclaration) {
ConstructorDeclaration constrDecl = (ConstructorDeclaration) element.get();
if (getGeneratedBy(constrDecl) == null && (constrDecl.bits & ASTNode.IsDefaultConstructor) == 0) {
element.addError("@UtilityClasses cannot have declared constructors.");
makeConstructor = false;
continue;
}
} else if (amd instanceof MethodDeclaration) {
amd.modifiers |= ClassFileConstants.AccStatic;
} else if (amd instanceof Clinit) {
alreadyHasClinit = true;
}
} else if (element.getKind() == Kind.TYPE) {
((TypeDeclaration) element.get()).modifiers |= ClassFileConstants.AccStatic;
}
}
if (makeConstructor) createPrivateDefaultConstructor(typeNode, annotationNode);
if (requiresClInit && !alreadyHasClinit) classDecl.addClinit();
}
项目:EasyMPermission
文件:SetGeneratedByVisitor.java
@Override public boolean visit(Clinit node, ClassScope scope) {
fixPositions(setGeneratedBy(node, source));
return super.visit(node, scope);
}
项目:EasyMPermission
文件:EclipseNode.java
/**
* Visits this node and all child nodes depth-first, calling the provided visitor's visit methods.
*/
public void traverse(EclipseASTVisitor visitor) {
if (!this.isCompleteParse() && visitor.getClass().isAnnotationPresent(DeferUntilPostDiet.class)) return;
switch (getKind()) {
case COMPILATION_UNIT:
visitor.visitCompilationUnit(this, (CompilationUnitDeclaration) get());
ast.traverseChildren(visitor, this);
visitor.endVisitCompilationUnit(this, (CompilationUnitDeclaration) get());
break;
case TYPE:
visitor.visitType(this, (TypeDeclaration) get());
ast.traverseChildren(visitor, this);
visitor.endVisitType(this, (TypeDeclaration) get());
break;
case FIELD:
visitor.visitField(this, (FieldDeclaration) get());
ast.traverseChildren(visitor, this);
visitor.endVisitField(this, (FieldDeclaration) get());
break;
case INITIALIZER:
visitor.visitInitializer(this, (Initializer) get());
ast.traverseChildren(visitor, this);
visitor.endVisitInitializer(this, (Initializer) get());
break;
case METHOD:
if (get() instanceof Clinit) return;
visitor.visitMethod(this, (AbstractMethodDeclaration) get());
ast.traverseChildren(visitor, this);
visitor.endVisitMethod(this, (AbstractMethodDeclaration) get());
break;
case ARGUMENT:
AbstractMethodDeclaration method = (AbstractMethodDeclaration) up().get();
visitor.visitMethodArgument(this, (Argument) get(), method);
ast.traverseChildren(visitor, this);
visitor.endVisitMethodArgument(this, (Argument) get(), method);
break;
case LOCAL:
visitor.visitLocal(this, (LocalDeclaration) get());
ast.traverseChildren(visitor, this);
visitor.endVisitLocal(this, (LocalDeclaration) get());
break;
case ANNOTATION:
switch (up().getKind()) {
case TYPE:
visitor.visitAnnotationOnType((TypeDeclaration) up().get(), this, (Annotation) get());
break;
case FIELD:
visitor.visitAnnotationOnField((FieldDeclaration) up().get(), this, (Annotation) get());
break;
case METHOD:
visitor.visitAnnotationOnMethod((AbstractMethodDeclaration) up().get(), this, (Annotation) get());
break;
case ARGUMENT:
visitor.visitAnnotationOnMethodArgument(
(Argument) parent.get(),
(AbstractMethodDeclaration) parent.directUp().get(),
this, (Annotation) get());
break;
case LOCAL:
visitor.visitAnnotationOnLocal((LocalDeclaration) parent.get(), this, (Annotation) get());
break;
default:
throw new AssertionError("Annotation not expected as child of a " + up().getKind());
}
break;
case STATEMENT:
visitor.visitStatement(this, (Statement) get());
ast.traverseChildren(visitor, this);
visitor.endVisitStatement(this, (Statement) get());
break;
default:
throw new AssertionError("Unexpected kind during node traversal: " + getKind());
}
}
项目:Eclipse-Postfix-Code-Completion
文件:CodeFormatterVisitor.java
/**
* @see org.eclipse.jdt.internal.compiler.ASTVisitor#visit(org.eclipse.jdt.internal.compiler.ast.Clinit, org.eclipse.jdt.internal.compiler.lookup.ClassScope)
*/
public boolean visit(Clinit clinit, ClassScope scope) {
return false;
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:CodeFormatterVisitor.java
/**
* @see org.eclipse.jdt.internal.compiler.ASTVisitor#visit(org.eclipse.jdt.internal.compiler.ast.Clinit, org.eclipse.jdt.internal.compiler.lookup.ClassScope)
*/
public boolean visit(Clinit clinit, ClassScope scope) {
return false;
}
项目:lombok
文件:SetGeneratedByVisitor.java
@Override public boolean visit(Clinit node, ClassScope scope) {
setGeneratedBy(node, source);
applyOffset(node);
return super.visit(node, scope);
}
项目:lombok
文件:EclipseNode.java
/**
* Visits this node and all child nodes depth-first, calling the provided visitor's visit methods.
*/
public void traverse(EclipseASTVisitor visitor) {
if (!this.isCompleteParse() && visitor.getClass().isAnnotationPresent(DeferUntilPostDiet.class)) return;
switch (getKind()) {
case COMPILATION_UNIT:
visitor.visitCompilationUnit(this, (CompilationUnitDeclaration)get());
ast.traverseChildren(visitor, this);
visitor.endVisitCompilationUnit(this, (CompilationUnitDeclaration)get());
break;
case TYPE:
visitor.visitType(this, (TypeDeclaration)get());
ast.traverseChildren(visitor, this);
visitor.endVisitType(this, (TypeDeclaration)get());
break;
case FIELD:
visitor.visitField(this, (FieldDeclaration)get());
ast.traverseChildren(visitor, this);
visitor.endVisitField(this, (FieldDeclaration)get());
break;
case INITIALIZER:
visitor.visitInitializer(this, (Initializer)get());
ast.traverseChildren(visitor, this);
visitor.endVisitInitializer(this, (Initializer)get());
break;
case METHOD:
if (get() instanceof Clinit) return;
visitor.visitMethod(this, (AbstractMethodDeclaration)get());
ast.traverseChildren(visitor, this);
visitor.endVisitMethod(this, (AbstractMethodDeclaration)get());
break;
case ARGUMENT:
AbstractMethodDeclaration method = (AbstractMethodDeclaration)up().get();
visitor.visitMethodArgument(this, (Argument)get(), method);
ast.traverseChildren(visitor, this);
visitor.endVisitMethodArgument(this, (Argument)get(), method);
break;
case LOCAL:
visitor.visitLocal(this, (LocalDeclaration)get());
ast.traverseChildren(visitor, this);
visitor.endVisitLocal(this, (LocalDeclaration)get());
break;
case ANNOTATION:
switch (up().getKind()) {
case TYPE:
visitor.visitAnnotationOnType((TypeDeclaration)up().get(), this, (Annotation)get());
break;
case FIELD:
visitor.visitAnnotationOnField((FieldDeclaration)up().get(), this, (Annotation)get());
break;
case METHOD:
visitor.visitAnnotationOnMethod((AbstractMethodDeclaration)up().get(), this, (Annotation)get());
break;
case ARGUMENT:
visitor.visitAnnotationOnMethodArgument(
(Argument)parent.get(),
(AbstractMethodDeclaration)parent.directUp().get(),
this, (Annotation)get());
break;
case LOCAL:
visitor.visitAnnotationOnLocal((LocalDeclaration)parent.get(), this, (Annotation)get());
break;
default:
throw new AssertionError("Annotation not expected as child of a " + up().getKind());
}
break;
case STATEMENT:
visitor.visitStatement(this, (Statement)get());
ast.traverseChildren(visitor, this);
visitor.endVisitStatement(this, (Statement)get());
break;
default:
throw new AssertionError("Unexpected kind during node traversal: " + getKind());
}
}