コード例 #1
0
  static JCExpression createFieldAccessor(
      TreeMaker maker, JavacNode field, FieldAccess fieldAccess, JCExpression receiver) {
    boolean lookForGetter = lookForGetter(field, fieldAccess);

    GetterMethod getter = lookForGetter ? findGetter(field) : null;
    JCVariableDecl fieldDecl = (JCVariableDecl) field.get();

    if (getter == null) {
      if (receiver == null) {
        if ((fieldDecl.mods.flags & Flags.STATIC) == 0) {
          receiver = maker.Ident(field.toName("this"));
        } else {
          JavacNode containerNode = field.up();
          if (containerNode != null && containerNode.get() instanceof JCClassDecl) {
            JCClassDecl container = (JCClassDecl) field.up().get();
            receiver = maker.Ident(container.name);
          }
        }
      }

      return receiver == null
          ? maker.Ident(fieldDecl.name)
          : maker.Select(receiver, fieldDecl.name);
    }

    if (receiver == null) receiver = maker.Ident(field.toName("this"));
    JCMethodInvocation call =
        maker.Apply(
            List.<JCExpression>nil(),
            maker.Select(receiver, getter.name),
            List.<JCExpression>nil());
    return call;
  }
コード例 #2
0
ファイル: HandleSneakyThrows.java プロジェクト: Reder/lombok
  private JCStatement buildTryCatchBlock(
      JavacNode node, List<JCStatement> contents, String exception) {
    TreeMaker maker = node.getTreeMaker();

    JCBlock tryBlock = maker.Block(0, contents);

    JCExpression varType = chainDots(maker, node, exception.split("\\."));

    JCVariableDecl catchParam =
        maker.VarDef(maker.Modifiers(Flags.FINAL), node.toName("$ex"), varType, null);
    JCExpression lombokLombokSneakyThrowNameRef =
        chainDots(maker, node, "lombok", "Lombok", "sneakyThrow");
    JCBlock catchBody =
        maker.Block(
            0,
            List.<JCStatement>of(
                maker.Throw(
                    maker.Apply(
                        List.<JCExpression>nil(),
                        lombokLombokSneakyThrowNameRef,
                        List.<JCExpression>of(maker.Ident(node.toName("$ex")))))));

    return maker.Try(tryBlock, List.of(maker.Catch(catchParam, catchBody)), null);
  }