当前位置: 首页>>代码示例>>Java>>正文


Java Symbol.MethodSymbol方法代码示例

本文整理汇总了Java中com.sun.tools.javac.code.Symbol.MethodSymbol方法的典型用法代码示例。如果您正苦于以下问题:Java Symbol.MethodSymbol方法的具体用法?Java Symbol.MethodSymbol怎么用?Java Symbol.MethodSymbol使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.sun.tools.javac.code.Symbol的用法示例。


在下文中一共展示了Symbol.MethodSymbol方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: matchLambdaExpression

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
@Override
public Description matchLambdaExpression(LambdaExpressionTree tree, VisitorState state) {
  Symbol.MethodSymbol methodSymbol =
      NullabilityUtil.getFunctionalInterfaceMethod(tree, state.getTypes());
  handler.onMatchLambdaExpression(this, tree, state, methodSymbol);
  Description description = checkParamOverriding(tree, tree.getParameters(), methodSymbol, true);
  if (description != Description.NO_MATCH) {
    return description;
  }
  if (tree.getBodyKind() == LambdaExpressionTree.BodyKind.EXPRESSION
      && methodSymbol.getReturnType().getKind() != TypeKind.VOID) {
    ExpressionTree resExpr = (ExpressionTree) tree.getBody();
    return checkReturnExpression(tree, resExpr, methodSymbol, state);
  }
  return Description.NO_MATCH;
}
 
开发者ID:uber,项目名称:NullAway,代码行数:17,代码来源:NullAway.java

示例2: isInitializerMethod

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
private boolean isInitializerMethod(VisitorState state, Symbol.MethodSymbol symbol) {
  if (ASTHelpers.hasDirectAnnotationWithSimpleName(symbol, "Initializer")
      || config.isKnownInitializerMethod(symbol)) {
    return true;
  }
  for (AnnotationMirror anno : symbol.getAnnotationMirrors()) {
    String annoTypeStr = anno.getAnnotationType().toString();
    if (config.isInitializerMethodAnnotation(annoTypeStr)) {
      return true;
    }
  }
  Symbol.MethodSymbol closestOverriddenMethod =
      getClosestOverriddenMethod(symbol, state.getTypes());
  if (closestOverriddenMethod == null) {
    return false;
  }
  return isInitializerMethod(state, closestOverriddenMethod);
}
 
开发者ID:uber,项目名称:NullAway,代码行数:19,代码来源:NullAway.java

示例3: replaceExtCall

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
private void replaceExtCall( JCTree.JCMethodInvocation tree, Symbol.MethodSymbol method )
{
  JCExpression methodSelect = tree.getMethodSelect();
  if( methodSelect instanceof JCTree.JCFieldAccess )
  {
    JCTree.JCFieldAccess m = (JCTree.JCFieldAccess)methodSelect;
    boolean isStatic = m.sym.getModifiers().contains( javax.lang.model.element.Modifier.STATIC );
    TreeMaker make = _tp.getTreeMaker();
    JavacElements javacElems = _tp.getElementUtil();
    JCExpression thisArg = m.selected;
    String extensionFqn = method.getEnclosingElement().asType().tsym.toString();
    m.selected = memberAccess( make, javacElems, extensionFqn );
    BasicJavacTask javacTask = ClassSymbols.instance( _sp.getTypeLoader().getModule() ).getJavacTask();
    Symbol.ClassSymbol extensionClassSym = ClassSymbols.instance( _sp.getTypeLoader().getModule() ).getClassSymbol( javacTask, extensionFqn ).getFirst();
    assignTypes( m.selected, extensionClassSym );
    m.sym = method;
    m.type = method.type;

    if( !isStatic )
    {
      ArrayList<JCExpression> newArgs = new ArrayList<>( tree.args );
      newArgs.add( 0, thisArg );
      tree.args = List.from( newArgs );
    }
  }
}
 
开发者ID:manifold-systems,项目名称:manifold,代码行数:27,代码来源:ExtensionTransformer.java

示例4: MapperMethod

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
public MapperMethod(DaoEnv daoEnv, Symbol.MethodSymbol methodSymbol) {
    this.daoEnv = daoEnv;
    if (!methodSymbol.getTypeParameters().isEmpty()){
        throw new RuntimeException("不支持有类型参数的方法生成");
    }
    this.returnType = getRealType(methodSymbol.getReturnType());
    this.methodName = DaoGenHelper.getMethodName(methodSymbol);
    this.params = methodSymbol.getParameters();
}
 
开发者ID:frankelau,项目名称:pndao,代码行数:10,代码来源:MapperMethod.java

示例5: findAfterMethodAnnotation

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
@Nullable
public static Attribute.Compound findAfterMethodAnnotation(@NonNull final Symbol.MethodSymbol ms) throws Exception {
    if (ms.hasAnnotations()) {
        for (final Attribute.Compound am : ms.getAnnotationMirrors()) {
            if (extractClass(am) == AutoProxy.AfterCall.class) return am;
        }
    }

    return null;
}
 
开发者ID:OleksandrKucherenko,项目名称:autoproxy,代码行数:11,代码来源:CommonClassGenerator.java

示例6: mimicThrows

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
/** Compose exceptions throwing signature. */
public static void mimicThrows(@NonNull final MethodSpec.Builder builder,
                               @NonNull final Symbol.MethodSymbol ms) {
    for (final Type typeThrown : ms.getThrownTypes()) {
        builder.addException(TypeName.get(typeThrown));
    }
}
 
开发者ID:OleksandrKucherenko,项目名称:autoproxy,代码行数:8,代码来源:CommonClassGenerator.java

示例7: onMatchMethodInvocation

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
@Override
public void onMatchMethodInvocation(
    NullAway analysis,
    MethodInvocationTree tree,
    VisitorState state,
    Symbol.MethodSymbol methodSymbol) {
  // NoOp
}
 
开发者ID:uber,项目名称:NullAway,代码行数:9,代码来源:BaseNoOpHandler.java

示例8: setUnconditionalArgumentNullness

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
private void setUnconditionalArgumentNullness(
    AccessPathNullnessPropagation.Updates bothUpdates,
    List<Node> arguments,
    Symbol.MethodSymbol callee) {
  Set<Integer> requiredNonNullParameters =
      libraryModels.failIfNullParameters().get(LibraryModels.MethodRef.fromSymbol(callee));
  for (AccessPath accessPath : accessPathsAtIndexes(requiredNonNullParameters, arguments)) {
    bothUpdates.set(accessPath, NONNULL);
  }
}
 
开发者ID:uber,项目名称:NullAway,代码行数:11,代码来源:LibraryModelsHandler.java

示例9: checkParamOverriding

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
private Description checkParamOverriding(
    Tree tree,
    List<? extends VariableTree> methodParams,
    Symbol.MethodSymbol closestOverriddenMethod,
    boolean isLambda) {
  com.sun.tools.javac.util.List<VarSymbol> superParamSymbols =
      closestOverriddenMethod.getParameters();
  for (int i = 0; i < superParamSymbols.size(); i++) {
    VarSymbol superParam = superParamSymbols.get(i);
    if (Nullness.hasNullableAnnotation(superParam)) {
      VariableTree param = methodParams.get(i);
      VarSymbol paramSymbol = ASTHelpers.getSymbol(param);
      // in the case where we have a parameter of a lambda expression, we do
      // *not* force the parameter to be annotated with @Nullable; instead we "inherit"
      // nullability from the corresponding functional interface method
      if (!Nullness.hasNullableAnnotation(paramSymbol)
          && !(isLambda && !NullabilityUtil.lambdaParamIsExplicitlyTyped(param))) {
        String message =
            "parameter "
                + param.getName()
                + " is @NonNull, but parameter in "
                + (isLambda ? "functional interface " : "superclass ")
                + "method "
                + ASTHelpers.enclosingClass(closestOverriddenMethod)
                + "."
                + closestOverriddenMethod.toString()
                + " is @Nullable";
        return createErrorDescription(MessageTypes.WRONG_OVERRIDE_PARAM, param, message, param);
      }
    }
  }
  return Description.NO_MATCH;
}
 
开发者ID:uber,项目名称:NullAway,代码行数:34,代码来源:NullAway.java

示例10: onMatchMethod

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
@Override
public void onMatchMethod(
    NullAway analysis, MethodTree tree, VisitorState state, Symbol.MethodSymbol methodSymbol) {
  for (Handler h : handlers) {
    h.onMatchMethod(analysis, tree, state, methodSymbol);
  }
}
 
开发者ID:uber,项目名称:NullAway,代码行数:8,代码来源:CompositeHandler.java

示例11: isMapPut

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
public static boolean isMapPut(Symbol.MethodSymbol symbol, Types types) {
  return isMapMethod(symbol, types, "put");
}
 
开发者ID:uber,项目名称:NullAway,代码行数:4,代码来源:AccessPath.java

示例12: toMapperMethod

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
public static MapperMethod toMapperMethod(DaoEnv daoEnv, Symbol.MethodSymbol methodSymbol) {
    return new MapperMethod(daoEnv, methodSymbol);
}
 
开发者ID:frankelau,项目名称:pndao,代码行数:4,代码来源:DaoGenHelper.java

示例13: getMethodName

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
public static String getMethodName(Symbol.MethodSymbol methodSymbol) {
    return methodSymbol.getSimpleName().toString();
}
 
开发者ID:frankelau,项目名称:pndao,代码行数:4,代码来源:DaoGenHelper.java

示例14: validate

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
public void validate(CblEntityHolder holder, Logger logger) throws ClassNotFoundException {

        if (holder.getSourceElement().getModifiers().contains(Modifier.PRIVATE)) {
            logger.error(CblEntity.class.getSimpleName() + " can not be private", holder.getSourceElement());
        }
        if (holder.getSourceElement().getModifiers().contains(Modifier.FINAL)) {
            logger.error(CblEntity.class.getSimpleName() + " can not be final", holder.getSourceElement());
        }


        for (Element member : holder.getSourceElement().getEnclosedElements()) {

            if (member.getKind() == ElementKind.FIELD) {

                CblField fieldAnnotation = member.getAnnotation(CblField.class);
                CblConstant constantAnnotation = member.getAnnotation(CblConstant.class);
                if (fieldAnnotation != null) {

                    if(constantAnnotation != null){
                        logger.error("Element can´t be "+ CblField.class.getName() + " and "+ CblConstant.class.getName() + " at the same time", member);
                    }

                    if (!member.getModifiers().contains(Modifier.PRIVATE)) {
                        logger.error(CblField.class.getSimpleName() + " must be private", member);
                    }

                    if (!fieldAnnotation.attachmentType().equals("")) {
                        Class<?> classTypeOfField = Class.forName(member.asType().toString());
                        if (!InputStream.class.isAssignableFrom(classTypeOfField) && !URL.class.isAssignableFrom(classTypeOfField)) {
                            logger.error(CblField.class.getSimpleName() + " attachments must be Inputstream or URL", member);
                        }
                    }
                }else if(constantAnnotation != null){

                    if(fieldAnnotation != null){
                        logger.error("Element can´t be "+ CblField.class.getName() + " and "+ CblConstant.class.getName() + " at the same time", member);
                    }

                    if (!member.getModifiers().contains(Modifier.PRIVATE)) {
                        logger.error(CblConstant.class.getSimpleName() + " must be private", member);
                    }
                }

            } else if (member.getKind() == ElementKind.CONSTRUCTOR) {

                Symbol.MethodSymbol constructor = (Symbol.MethodSymbol)member;

                if (constructor.getParameters().size() != 0) {
                    logger.error(CblEntity.class.getSimpleName() + " should not have a contructor", member);
                }
            }

        }

    }
 
开发者ID:Kaufland,项目名称:andcouchbaseentity,代码行数:56,代码来源:CblEntityValidator.java

示例15: resolveMethod

import com.sun.tools.javac.code.Symbol; //导入方法依赖的package包/类
private Symbol.MethodSymbol resolveMethod( JCDiagnostic.DiagnosticPosition pos, Name name, Type qual, List<Type> args )
{
  return resolveMethod( pos, _tp.getContext(), (JCTree.JCCompilationUnit)_tp.getCompilationUnit(), name, qual, args );
}
 
开发者ID:manifold-systems,项目名称:manifold,代码行数:5,代码来源:ExtensionTransformer.java


注:本文中的com.sun.tools.javac.code.Symbol.MethodSymbol方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。