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


Java ASTResolving.findParentStatement方法代码示例

本文整理汇总了Java中org.eclipse.jdt.internal.ui.text.correction.ASTResolving.findParentStatement方法的典型用法代码示例。如果您正苦于以下问题:Java ASTResolving.findParentStatement方法的具体用法?Java ASTResolving.findParentStatement怎么用?Java ASTResolving.findParentStatement使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.eclipse.jdt.internal.ui.text.correction.ASTResolving的用法示例。


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

示例1: getDeclarationsAfter

import org.eclipse.jdt.internal.ui.text.correction.ASTResolving; //导入方法依赖的package包/类
public IBinding[] getDeclarationsAfter(int offset, int flags) {
	try {
		org.eclipse.jdt.core.dom.NodeFinder finder= new org.eclipse.jdt.core.dom.NodeFinder(fRoot, offset, 0);
		ASTNode node= finder.getCoveringNode();
		if (node == null) {
			return null;
		}

		ASTNode declaration= ASTResolving.findParentStatement(node);
		while (declaration instanceof Statement && declaration.getNodeType() != ASTNode.BLOCK) {
			declaration= declaration.getParent();
		}

		if (declaration instanceof Block) {
			DefaultBindingRequestor requestor= new DefaultBindingRequestor();
			DeclarationsAfterVisitor visitor= new DeclarationsAfterVisitor(node.getStartPosition(), flags, requestor);
			declaration.accept(visitor);
			List<IBinding> result= requestor.getResult();
			return result.toArray(new IBinding[result.size()]);
		}
		return NO_BINDING;
	} finally {
		clearLists();
	}
}
 
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion,代码行数:26,代码来源:ScopeAnalyzer.java

示例2: getDeclarationsAfter

import org.eclipse.jdt.internal.ui.text.correction.ASTResolving; //导入方法依赖的package包/类
public IBinding[] getDeclarationsAfter(int offset, int flags) {
  try {
    org.eclipse.jdt.core.dom.NodeFinder finder =
        new org.eclipse.jdt.core.dom.NodeFinder(fRoot, offset, 0);
    ASTNode node = finder.getCoveringNode();
    if (node == null) {
      return null;
    }

    ASTNode declaration = ASTResolving.findParentStatement(node);
    while (declaration instanceof Statement && declaration.getNodeType() != ASTNode.BLOCK) {
      declaration = declaration.getParent();
    }

    if (declaration instanceof Block) {
      DefaultBindingRequestor requestor = new DefaultBindingRequestor();
      DeclarationsAfterVisitor visitor =
          new DeclarationsAfterVisitor(node.getStartPosition(), flags, requestor);
      declaration.accept(visitor);
      List<IBinding> result = requestor.getResult();
      return result.toArray(new IBinding[result.size()]);
    }
    return NO_BINDING;
  } finally {
    clearLists();
  }
}
 
开发者ID:eclipse,项目名称:che,代码行数:28,代码来源:ScopeAnalyzer.java

示例3: createToStaticAccessOperations

import org.eclipse.jdt.internal.ui.text.correction.ASTResolving; //导入方法依赖的package包/类
private static ToStaticAccessOperation[] createToStaticAccessOperations(
    CompilationUnit astRoot,
    HashMap<ASTNode, Block> createdBlocks,
    IProblemLocation problem,
    boolean conservative) {
  ASTNode selectedNode = problem.getCoveringNode(astRoot);
  if (selectedNode == null) {
    return null;
  }

  Expression qualifier = null;
  IBinding accessBinding = null;

  if (selectedNode instanceof SimpleName) {
    selectedNode = selectedNode.getParent();
  }
  if (selectedNode instanceof QualifiedName) {
    QualifiedName name = (QualifiedName) selectedNode;
    qualifier = name.getQualifier();
    accessBinding = name.resolveBinding();
  } else if (selectedNode instanceof MethodInvocation) {
    MethodInvocation methodInvocation = (MethodInvocation) selectedNode;
    qualifier = methodInvocation.getExpression();
    accessBinding = methodInvocation.getName().resolveBinding();
  } else if (selectedNode instanceof FieldAccess) {
    FieldAccess fieldAccess = (FieldAccess) selectedNode;
    qualifier = fieldAccess.getExpression();
    accessBinding = fieldAccess.getName().resolveBinding();
  }

  if (accessBinding != null && qualifier != null) {
    if (conservative && ASTResolving.findParentStatement(qualifier) == null) return null;

    ToStaticAccessOperation declaring = null;
    ITypeBinding declaringTypeBinding = getDeclaringTypeBinding(accessBinding);
    if (declaringTypeBinding != null) {
      declaringTypeBinding =
          declaringTypeBinding.getTypeDeclaration(); // use generic to avoid any type arguments

      declaring = new ToStaticAccessOperation(declaringTypeBinding, qualifier, createdBlocks);
    }
    ToStaticAccessOperation instance = null;
    ITypeBinding instanceTypeBinding =
        Bindings.normalizeTypeBinding(qualifier.resolveTypeBinding());
    if (instanceTypeBinding != null) {
      instanceTypeBinding =
          instanceTypeBinding.getTypeDeclaration(); // use generic to avoid any type arguments
      if (instanceTypeBinding.getTypeDeclaration() != declaringTypeBinding) {
        instance = new ToStaticAccessOperation(instanceTypeBinding, qualifier, createdBlocks);
      }
    }
    if (declaring != null && instance != null) {
      return new ToStaticAccessOperation[] {declaring, instance};
    } else {
      return new ToStaticAccessOperation[] {declaring};
    }
  }
  return null;
}
 
开发者ID:eclipse,项目名称:che,代码行数:60,代码来源:CodeStyleFix.java

示例4: createToStaticAccessOperations

import org.eclipse.jdt.internal.ui.text.correction.ASTResolving; //导入方法依赖的package包/类
private static ToStaticAccessOperation[] createToStaticAccessOperations(CompilationUnit astRoot, HashMap<ASTNode, Block> createdBlocks, IProblemLocation problem, boolean conservative) {
	ASTNode selectedNode= problem.getCoveringNode(astRoot);
	if (selectedNode == null) {
		return null;
	}

	Expression qualifier= null;
	IBinding accessBinding= null;

	if (selectedNode instanceof SimpleName) {
		selectedNode= selectedNode.getParent();
	}
	if (selectedNode instanceof QualifiedName) {
		QualifiedName name= (QualifiedName) selectedNode;
		qualifier= name.getQualifier();
		accessBinding= name.resolveBinding();
	} else if (selectedNode instanceof MethodInvocation) {
		MethodInvocation methodInvocation= (MethodInvocation) selectedNode;
		qualifier= methodInvocation.getExpression();
		accessBinding= methodInvocation.getName().resolveBinding();
	} else if (selectedNode instanceof FieldAccess) {
		FieldAccess fieldAccess= (FieldAccess) selectedNode;
		qualifier= fieldAccess.getExpression();
		accessBinding= fieldAccess.getName().resolveBinding();
	}

	if (accessBinding != null && qualifier != null) {
		if (conservative && ASTResolving.findParentStatement(qualifier) == null)
			return null;
		
		ToStaticAccessOperation declaring= null;
		ITypeBinding declaringTypeBinding= getDeclaringTypeBinding(accessBinding);
		if (declaringTypeBinding != null) {
			declaringTypeBinding= declaringTypeBinding.getTypeDeclaration(); // use generic to avoid any type arguments

			declaring= new ToStaticAccessOperation(declaringTypeBinding, qualifier, createdBlocks);
		}
		ToStaticAccessOperation instance= null;
		ITypeBinding instanceTypeBinding= Bindings.normalizeTypeBinding(qualifier.resolveTypeBinding());
		if (instanceTypeBinding != null) {
			instanceTypeBinding= instanceTypeBinding.getTypeDeclaration();  // use generic to avoid any type arguments
			if (instanceTypeBinding.getTypeDeclaration() != declaringTypeBinding) {
				instance= new ToStaticAccessOperation(instanceTypeBinding, qualifier, createdBlocks);
			}
		}
		if (declaring != null && instance != null) {
			return new ToStaticAccessOperation[] {declaring, instance};
		} else {
			return new ToStaticAccessOperation[] {declaring};
		}
	}
	return null;
}
 
开发者ID:trylimits,项目名称:Eclipse-Postfix-Code-Completion,代码行数:54,代码来源:CodeStyleFix.java


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