类org.eclipse.jdt.core.dom.CreationReference源码实例Demo

下面列出了怎么用org.eclipse.jdt.core.dom.CreationReference的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: j2cl   文件: CompilationUnitBuilder.java
/**
 * Converts method reference expressions of the forms:
 *
 * <p>
 *
 * <pre>
 *          A[]::new    into     (size) -> new A[size]
 *          A:new       into     (par1, ..., parN) -> new A(par1, ..., parN)
 * </pre>
 */
private Expression convert(CreationReference expression) {
  ITypeBinding expressionTypeBinding = expression.getType().resolveBinding();
  MethodDescriptor functionalMethodDescriptor =
      JdtUtils.createMethodDescriptor(
          expression.resolveTypeBinding().getFunctionalInterfaceMethod());

  // There are 3 flavors for CreationReferences: 1) array creations, 2) unqualified
  // constructors, and 3) implicitly qualified constructors.

  // If the expression does not resolve, it is an array creation.
  SourcePosition sourcePosition = getSourcePosition(expression);
  if (expression.resolveMethodBinding() == null) {

    return createArrayCreationLambda(
        functionalMethodDescriptor,
        (ArrayTypeDescriptor) JdtUtils.createTypeDescriptor(expressionTypeBinding),
        sourcePosition);
  }

  MethodDescriptor targetConstructorMethodDescriptor =
      JdtUtils.createMethodDescriptor(expression.resolveMethodBinding());

  return createInstantiationLambda(
      functionalMethodDescriptor, targetConstructorMethodDescriptor, null, sourcePosition);
}
 
源代码2 项目: j2cl   文件: CompilationUnitBuilder.java
private Expression convert(org.eclipse.jdt.core.dom.Expression expression) {
  switch (expression.getNodeType()) {
    case ASTNode.ARRAY_ACCESS:
      return convert((org.eclipse.jdt.core.dom.ArrayAccess) expression);
    case ASTNode.ARRAY_CREATION:
      return convert((org.eclipse.jdt.core.dom.ArrayCreation) expression);
    case ASTNode.ARRAY_INITIALIZER:
      return convert((org.eclipse.jdt.core.dom.ArrayInitializer) expression);
    case ASTNode.ASSIGNMENT:
      return convert((org.eclipse.jdt.core.dom.Assignment) expression);
    case ASTNode.BOOLEAN_LITERAL:
      return convert((org.eclipse.jdt.core.dom.BooleanLiteral) expression);
    case ASTNode.CAST_EXPRESSION:
      return convert((org.eclipse.jdt.core.dom.CastExpression) expression);
    case ASTNode.CHARACTER_LITERAL:
      return convert((org.eclipse.jdt.core.dom.CharacterLiteral) expression);
    case ASTNode.CLASS_INSTANCE_CREATION:
      return convert((org.eclipse.jdt.core.dom.ClassInstanceCreation) expression);
    case ASTNode.CONDITIONAL_EXPRESSION:
      return convert((org.eclipse.jdt.core.dom.ConditionalExpression) expression);
    case ASTNode.EXPRESSION_METHOD_REFERENCE:
      return convert((org.eclipse.jdt.core.dom.ExpressionMethodReference) expression);
    case ASTNode.CREATION_REFERENCE:
      return convert((org.eclipse.jdt.core.dom.CreationReference) expression);
    case ASTNode.TYPE_METHOD_REFERENCE:
      return convert((org.eclipse.jdt.core.dom.TypeMethodReference) expression);
    case ASTNode.SUPER_METHOD_REFERENCE:
      return convert((org.eclipse.jdt.core.dom.SuperMethodReference) expression);
    case ASTNode.FIELD_ACCESS:
      return convert((org.eclipse.jdt.core.dom.FieldAccess) expression);
    case ASTNode.INFIX_EXPRESSION:
      return convert((org.eclipse.jdt.core.dom.InfixExpression) expression);
    case ASTNode.INSTANCEOF_EXPRESSION:
      return convert((org.eclipse.jdt.core.dom.InstanceofExpression) expression);
    case ASTNode.LAMBDA_EXPRESSION:
      return convert((org.eclipse.jdt.core.dom.LambdaExpression) expression);
    case ASTNode.METHOD_INVOCATION:
      return convert((org.eclipse.jdt.core.dom.MethodInvocation) expression);
    case ASTNode.NULL_LITERAL:
      return NullLiteral.get();
    case ASTNode.NUMBER_LITERAL:
      return convert((org.eclipse.jdt.core.dom.NumberLiteral) expression);
    case ASTNode.PARENTHESIZED_EXPRESSION:
      return convert((org.eclipse.jdt.core.dom.ParenthesizedExpression) expression);
    case ASTNode.POSTFIX_EXPRESSION:
      return convert((org.eclipse.jdt.core.dom.PostfixExpression) expression);
    case ASTNode.PREFIX_EXPRESSION:
      return convert((org.eclipse.jdt.core.dom.PrefixExpression) expression);
    case ASTNode.QUALIFIED_NAME:
      return convert((org.eclipse.jdt.core.dom.QualifiedName) expression);
    case ASTNode.SIMPLE_NAME:
      return convert((org.eclipse.jdt.core.dom.SimpleName) expression);
    case ASTNode.STRING_LITERAL:
      return convert((org.eclipse.jdt.core.dom.StringLiteral) expression);
    case ASTNode.SUPER_FIELD_ACCESS:
      return convert((org.eclipse.jdt.core.dom.SuperFieldAccess) expression);
    case ASTNode.SUPER_METHOD_INVOCATION:
      return convert((org.eclipse.jdt.core.dom.SuperMethodInvocation) expression);
    case ASTNode.THIS_EXPRESSION:
      return convert((org.eclipse.jdt.core.dom.ThisExpression) expression);
    case ASTNode.TYPE_LITERAL:
      return convert((org.eclipse.jdt.core.dom.TypeLiteral) expression);
    case ASTNode.VARIABLE_DECLARATION_EXPRESSION:
      return convert((org.eclipse.jdt.core.dom.VariableDeclarationExpression) expression);
    default:
      throw internalCompilerError(
          "Unexpected type for Expression: %s", expression.getClass().getName());
  }
}
 
源代码3 项目: SimFix   文件: CodeBlock.java
private CreationRef visit(CreationReference node) {
	int startLine = _cunit.getLineNumber(node.getStartPosition());
	int endLine = _cunit.getLineNumber(node.getStartPosition() + node.getLength());
	CreationRef creationRef = new CreationRef(startLine, endLine, node);
	return creationRef;
}
 
源代码4 项目: eclipse.jdt.ls   文件: ExceptionAnalyzer.java
@Override
public boolean visit(CreationReference node) {
	return handleMethodReference(node);
}
 
@Override
public void endVisit(CreationReference node) {
	endVisitNode(node);
}
 
@Override
public boolean visit(CreationReference node) {
	return visitNode(node);
}
 
@Override
public boolean visit(CreationReference node) {
	doVisitNode(node.getType());
	doVisitChildren(node.typeArguments());
	return false;
}
 
 类所在包
 同包方法