com.sun.tools.javac.code.Types.dimensions()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(6.0k)|赞(0)|评价(0)|浏览(182)

本文整理了Java中com.sun.tools.javac.code.Types.dimensions()方法的一些代码示例,展示了Types.dimensions()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Types.dimensions()方法的具体详情如下:
包路径:com.sun.tools.javac.code.Types
类名称:Types
方法名:dimensions

Types.dimensions介绍

[英]The number of dimensions of an array type.
[中]数组类型的维数。

代码示例

代码示例来源:origin: org.jvnet.sorcerer/sorcerer-javac

public void visitLiteral(JCLiteral tree) {
if (tree.type.tag == TypeTags.BOT) {
  code.emitop0(aconst_null);
  if (types.dimensions(pt) > 1) {
  code.emitop2(checkcast, makeRef(tree.pos(), pt));
  result = items.makeStackItem(pt);
  } else {
  result = items.makeStackItem(tree.type);
  }
}
else
  result = items.makeImmediateItem(tree.type, tree.value);
}

代码示例来源:origin: sc.fiji/javac

public void visitLiteral(JCLiteral tree) {
  if (tree.type.tag == TypeTags.BOT) {
    code.emitop0(aconst_null);
    if (types.dimensions(pt) > 1) {
      code.emitop2(checkcast, makeRef(tree.pos(), pt));
      result = items.makeStackItem(pt);
    } else {
      result = items.makeStackItem(tree.type);
    }
  }
  else
    result = items.makeImmediateItem(tree.type, tree.value);
}

代码示例来源:origin: org.jvnet.sorcerer/sorcerer-javac

/** Check if the given type is an array with too many dimensions.
 */
private void checkDimension(DiagnosticPosition pos, Type t) {
switch (t.tag) {
case METHOD:
  checkDimension(pos, t.getReturnType());
  for (List<Type> args = t.getParameterTypes(); args.nonEmpty(); args = args.tail)
  checkDimension(pos, args.head);
  break;
case ARRAY:
  if (types.dimensions(t) > ClassFile.MAX_DIMENSIONS) {
  log.error(pos, "limit.dimensions");
  nerrs++;
  }
  break;
default:
  break;
}
}

代码示例来源:origin: sc.fiji/javac

/** Check if the given type is an array with too many dimensions.
 */
private void checkDimension(DiagnosticPosition pos, Type t) {
  switch (t.tag) {
  case METHOD:
    checkDimension(pos, t.getReturnType());
    for (List<Type> args = t.getParameterTypes(); args.nonEmpty(); args = args.tail)
      checkDimension(pos, args.head);
    break;
  case ARRAY:
    if (types.dimensions(t) > ClassFile.MAX_DIMENSIONS) {
      log.error(pos, "limit.dimensions");
      nerrs++;
    }
    break;
  default:
    break;
  }
}

代码示例来源:origin: org.kohsuke.sorcerer/sorcerer-javac

public void visitLiteral(JCLiteral tree) {
  if (tree.type.hasTag(BOT)) {
    code.emitop0(aconst_null);
    if (types.dimensions(pt) > 1) {
      code.emitop2(checkcast, makeRef(tree.pos(), pt));
      result = items.makeStackItem(pt);
    } else {
      result = items.makeStackItem(tree.type);
    }
  }
  else
    result = items.makeImmediateItem(tree.type, tree.value);
}

代码示例来源:origin: org.kohsuke.sorcerer/sorcerer-javac

/** Check if the given type is an array with too many dimensions.
 */
private void checkDimension(DiagnosticPosition pos, Type t) {
  switch (t.getTag()) {
  case METHOD:
    checkDimension(pos, t.getReturnType());
    for (List<Type> args = t.getParameterTypes(); args.nonEmpty(); args = args.tail)
      checkDimension(pos, args.head);
    break;
  case ARRAY:
    if (types.dimensions(t) > ClassFile.MAX_DIMENSIONS) {
      log.error(pos, "limit.dimensions");
      nerrs++;
    }
    break;
  default:
    break;
  }
}

代码示例来源:origin: konsoletyper/teavm-javac

public void visitLiteral(JCLiteral tree) {
  if (tree.type.hasTag(BOT)) {
    code.emitop0(aconst_null);
    if (types.dimensions(pt) > 1) {
      code.emitop2(checkcast, makeRef(tree.pos(), pt));
      result = items.makeStackItem(pt);
    } else {
      result = items.makeStackItem(tree.type);
    }
  }
  else
    result = items.makeImmediateItem(tree.type, tree.value);
}

代码示例来源:origin: konsoletyper/teavm-javac

/** Check if the given type is an array with too many dimensions.
 */
private void checkDimension(DiagnosticPosition pos, Type t) {
  switch (t.getTag()) {
  case METHOD:
    checkDimension(pos, t.getReturnType());
    for (List<Type> args = t.getParameterTypes(); args.nonEmpty(); args = args.tail)
      checkDimension(pos, args.head);
    break;
  case ARRAY:
    if (types.dimensions(t) > ClassFile.MAX_DIMENSIONS) {
      log.error(pos, "limit.dimensions");
      nerrs++;
    }
    break;
  default:
    break;
  }
}

代码示例来源:origin: konsoletyper/teavm-javac

/** Generate code to create an array with given element type and number
 *  of dimensions.
 */
Item makeNewArray(DiagnosticPosition pos, Type type, int ndims) {
  Type elemtype = types.elemtype(type);
  if (types.dimensions(type) > ClassFile.MAX_DIMENSIONS) {
    log.error(pos, "limit.dimensions");
    nerrs++;
  }
  int elemcode = Code.arraycode(elemtype);
  if (elemcode == 0 || (elemcode == 1 && ndims == 1)) {
    code.emitAnewarray(makeRef(pos, elemtype), type);
  } else if (elemcode == 1) {
    code.emitMultianewarray(ndims, makeRef(pos, type), type);
  } else {
    code.emitNewarray(elemcode, type);
  }
  return items.makeStackItem(type);
}

代码示例来源:origin: org.kohsuke.sorcerer/sorcerer-javac

/** Generate code to create an array with given element type and number
 *  of dimensions.
 */
Item makeNewArray(DiagnosticPosition pos, Type type, int ndims) {
  Type elemtype = types.elemtype(type);
  if (types.dimensions(type) > ClassFile.MAX_DIMENSIONS) {
    log.error(pos, "limit.dimensions");
    nerrs++;
  }
  int elemcode = Code.arraycode(elemtype);
  if (elemcode == 0 || (elemcode == 1 && ndims == 1)) {
    code.emitAnewarray(makeRef(pos, elemtype), type);
  } else if (elemcode == 1) {
    code.emitMultianewarray(ndims, makeRef(pos, type), type);
  } else {
    code.emitNewarray(elemcode, type);
  }
  return items.makeStackItem(type);
}

代码示例来源:origin: org.jvnet.sorcerer/sorcerer-javac

/** Generate code to create an array with given element type and number
 *  of dimensions.
 */
Item makeNewArray(DiagnosticPosition pos, Type type, int ndims) {
  Type elemtype = types.elemtype(type);
  if (types.dimensions(elemtype) + ndims > ClassFile.MAX_DIMENSIONS) {
  log.error(pos, "limit.dimensions");
  nerrs++;
  }
  int elemcode = Code.arraycode(elemtype);
  if (elemcode == 0 || (elemcode == 1 && ndims == 1)) {
  code.emitAnewarray(makeRef(pos, elemtype), type);
  } else if (elemcode == 1) {
  code.emitMultianewarray(ndims, makeRef(pos, type), type);
  } else {
  code.emitNewarray(elemcode, type);
  }
  return items.makeStackItem(type);
}

代码示例来源:origin: sc.fiji/javac

/** Generate code to create an array with given element type and number
 *  of dimensions.
 */
Item makeNewArray(DiagnosticPosition pos, Type type, int ndims) {
  Type elemtype = types.elemtype(type);
  if (types.dimensions(type) > ClassFile.MAX_DIMENSIONS) {
    log.error(pos, "limit.dimensions");
    nerrs++;
  }
  int elemcode = Code.arraycode(elemtype);
  if (elemcode == 0 || (elemcode == 1 && ndims == 1)) {
    code.emitAnewarray(makeRef(pos, elemtype), type);
  } else if (elemcode == 1) {
    code.emitMultianewarray(ndims, makeRef(pos, type), type);
  } else {
    code.emitNewarray(elemcode, type);
  }
  return items.makeStackItem(type);
}

相关文章

Types类方法