printArgList(null, methodDecl.params); print(") : "); substituteAndPrintType(methodDecl.getReturnType()); print(" {").println(); startIndent().printIndent();
if( md.getReturnType() instanceof JCTree.JCPrimitiveTypeTree && JCTree.JCPrimitiveTypeTree.class.cast( md.getReturnType() ).getPrimitiveTypeKind() == TypeKind.VOID )
if (!name.equals("<init>")) { JCTree returnTypeExpr = md.getReturnType(); if (nonNull(returnTypeExpr)) { Type type = returnTypeExpr.type;
md.astModifiers((Modifiers) toTree(node.getModifiers())); md.astMethodName(setPos(node, new Identifier().astValue(name))); md.rawReturnTypeReference(toTree(node.getReturnType(), FlagKey.TYPE_REFERENCE)); md.rawDefaultValue(toTree(node.getDefaultValue())); addJavadoc(md, node.mods); fillList(node.getTypeParameters(), md.rawTypeVariables()); fillList(node.getParameters(), md.rawParameters(), FlagKey.NO_VARDECL_FOLDING, FlagKey.VARDEF_IS_DEFINITION); md.rawReturnTypeReference(toTree(node.getReturnType(), FlagKey.TYPE_REFERENCE)); addJavadoc(md, node.mods); set(node, md);
md.astModifiers((Modifiers) toTree(node.getModifiers())); md.astMethodName(setPos(node, new Identifier().astValue(name))); md.rawReturnTypeReference(toTree(node.getReturnType(), FlagKey.TYPE_REFERENCE)); md.rawDefaultValue(toTree(node.getDefaultValue())); addJavadoc(md, node.mods); fillList(node.getTypeParameters(), md.rawTypeVariables()); fillList(node.getParameters(), md.rawParameters(), FlagKey.NO_VARDECL_FOLDING, FlagKey.VARDEF_IS_DEFINITION); md.rawReturnTypeReference(toTree(node.getReturnType(), FlagKey.TYPE_REFERENCE)); addJavadoc(md, node.mods); set(node, md);
md.astModifiers((Modifiers) toTree(node.getModifiers())); md.astMethodName(setPos(node, new Identifier().astValue(name))); md.rawReturnTypeReference(toTree(node.getReturnType(), FlagKey.TYPE_REFERENCE)); md.rawDefaultValue(toTree(node.getDefaultValue())); addJavadoc(md, node.mods); fillList(node.getTypeParameters(), md.rawTypeVariables()); fillList(node.getParameters(), md.rawParameters(), FlagKey.NO_VARDECL_FOLDING, FlagKey.VARDEF_IS_DEFINITION); md.rawReturnTypeReference(toTree(node.getReturnType(), FlagKey.TYPE_REFERENCE)); addJavadoc(md, node.mods); set(node, md);
private void verifySelfOnThis( JCTree annotated, JCTree.JCAnnotation selfAnno ) { String fqn; if( annotated instanceof JCTree.JCAnnotatedType ) { fqn = ((JCTree.JCAnnotatedType)annotated).getUnderlyingType().type.tsym.getQualifiedName().toString(); } else if( annotated instanceof JCTree.JCMethodDecl ) { fqn = ((JCTree.JCMethodDecl)annotated).getReturnType().type.tsym.getQualifiedName().toString(); } else { //## todo: shouldn't happen return; } try { JCTree.JCClassDecl enclosingClass = _tp.getClassDecl( annotated ); if( !isDeclaringClassOrExtension( annotated, fqn, enclosingClass ) && !fqn.equals( "Array" ) ) { _tp.report( selfAnno, Diagnostic.Kind.ERROR, ExtIssueMsg.MSG_SELF_NOT_ON_CORRECT_TYPE.get( fqn, enclosingClass.sym.getQualifiedName() ) ); } } catch( Throwable ignore ) { } }
private void verifySelfOnThis( JCTree annotated, JCTree.JCAnnotation selfAnno ) { String fqn; if( annotated instanceof JCTree.JCAnnotatedType ) { fqn = ((JCTree.JCAnnotatedType)annotated).getUnderlyingType().type.tsym.getQualifiedName().toString(); } else if( annotated instanceof JCTree.JCMethodDecl ) { fqn = ((JCTree.JCMethodDecl)annotated).getReturnType().type.tsym.getQualifiedName().toString(); } else { //## todo: shouldn't happen return; } try { JCTree.JCClassDecl enclosingClass = _tp.getClassDecl( annotated ); if( !isDeclaringClassOrExtension( annotated, fqn, enclosingClass ) && !fqn.equals( "Array" ) ) { _tp.report( selfAnno, Diagnostic.Kind.ERROR, ExtIssueMsg.MSG_SELF_NOT_ON_CORRECT_TYPE.get( fqn, enclosingClass.sym.getQualifiedName() ) ); } } catch( Throwable ignore ) { } }
private boolean isSelfInReturn( Tree tree, JCTree.JCAnnotation anno ) { if( tree == null ) { return false; } Tree parent = _tp.getParent( tree ); if( parent instanceof JCTree.JCMethodDecl && (tree == ((JCTree.JCMethodDecl)parent).getModifiers() || tree == ((JCTree.JCMethodDecl)parent).getReturnType() || ((JCTree.JCMethodDecl)parent).getModifiers().getAnnotations().contains( anno )) ) { // @Self allowed only in/on return type of instance method return !((JCTree.JCMethodDecl)parent).getModifiers() .getFlags().contains( javax.lang.model.element.Modifier.STATIC ) || isExtensionClass( getEnclosingClass( parent ) ); } return isSelfInReturn( parent, anno ); }
private boolean isSelfInReturn( Tree tree, JCTree.JCAnnotation anno ) { if( tree == null ) { return false; } Tree parent = _tp.getParent( tree ); if( parent instanceof JCTree.JCMethodDecl && (tree == ((JCTree.JCMethodDecl)parent).getModifiers() || tree == ((JCTree.JCMethodDecl)parent).getReturnType() || ((JCTree.JCMethodDecl)parent).getModifiers().getAnnotations().contains( anno )) ) { // @Self allowed only in/on return type of instance method return !((JCTree.JCMethodDecl)parent).getModifiers() .getFlags().contains( javax.lang.model.element.Modifier.STATIC ) || isExtensionClass( getEnclosingClass( parent ) ); } return isSelfInReturn( parent, anno ); }
public TypeUse.TypeInternal forReturn(ProcessingEnvironment env, ExecutableElement methodElt) { Trees trees = Trees.instance(env); if (trees == null) { return null; } JCTree.JCMethodDecl tree = (JCTree.JCMethodDecl) trees.getTree(methodElt); if (tree == null) { return null; } JCTree type = tree.getReturnType(); boolean nullable = isNullable(type); if (!nullable) { JCTree.JCModifiers mods = tree.mods; for (JCTree.JCAnnotation jca : mods.annotations) { if (jca.type.toString().equals(TypeUse.NULLABLE)) { nullable = true; break; } } } return new TreeTypeInternal(type, nullable); }