org.eclipse.jdt.core.dom.Statement#getStartPosition ( )源码实例Demo

下面列出了org.eclipse.jdt.core.dom.Statement#getStartPosition ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: jdt-codemining   文件: EndStatementCodeMining.java
private static String getLabel(Statement node, IDocument document, int minLineNumber) {
	try {
		int offset = node.getStartPosition();
		if (minLineNumber > 0) {
			int startLine = document.getLineOfOffset(offset);
			int endLine = document.getLineOfOffset(offset + node.getLength());
			if (endLine - startLine <= minLineNumber) {
				return "";
			}
		}
		IRegion first = document.getLineInformationOfOffset(offset);
		return "  // --> " + document.get(first.getOffset(), first.getLength()).trim();
	} catch (BadLocationException e1) {
		return "";
	}
}
 
源代码2 项目: jdt-codemining   文件: EndStatementCodeMining.java
public EndStatementCodeMining(Statement node, ITextEditor textEditor, ITextViewer viewer, int minLineNumber,
		ICodeMiningProvider provider) {
	super(new Position(node.getStartPosition() + node.getLength(), 1), provider, e -> {
		textEditor.selectAndReveal(node.getStartPosition(), 0);
	});
	String label = getLabel(node, viewer.getDocument(), minLineNumber);
	super.setLabel(label);
}
 
源代码3 项目: eclipse.jdt.ls   文件: RefactorProposalUtility.java
private static int getIndex(int offset, List<Statement> statements) {
	for (int i = 0; i < statements.size(); i++) {
		Statement s = statements.get(i);
		if (offset <= s.getStartPosition()) {
			return i;
		}
		if (offset < s.getStartPosition() + s.getLength()) {
			return -1;
		}
	}
	return statements.size();
}
 
源代码4 项目: eclipse.jdt.ls   文件: FlowAnalyzer.java
protected SwitchData createSwitchData(SwitchStatement node) {
	SwitchData result = new SwitchData();
	List<Statement> statements = node.statements();
	if (statements.isEmpty()) {
		return result;
	}

	int start = -1, end = -1;
	GenericSequentialFlowInfo info = null;

	for (Iterator<Statement> iter = statements.iterator(); iter.hasNext();) {
		Statement statement = iter.next();
		if (statement instanceof SwitchCase) {
			SwitchCase switchCase = (SwitchCase) statement;
			if (switchCase.isDefault()) {
				result.setHasDefaultCase();
			}
			if (info == null) {
				info = createSequential();
				start = statement.getStartPosition();
			} else {
				if (info.isReturn() || info.isPartialReturn() || info.branches()) {
					result.add(new Region(start, end - start + 1), info);
					info = createSequential();
					start = statement.getStartPosition();
				}
			}
		} else {
			info.merge(getFlowInfo(statement), fFlowContext);
		}
		end = statement.getStartPosition() + statement.getLength() - 1;
	}
	result.add(new Region(start, end - start + 1), info);
	return result;
}
 
protected SwitchData createSwitchData(SwitchStatement node) {
	SwitchData result= new SwitchData();
	List<Statement> statements= node.statements();
	if (statements.isEmpty())
		return result;

	int start= -1, end= -1;
	GenericSequentialFlowInfo info= null;

	for (Iterator<Statement> iter= statements.iterator(); iter.hasNext(); ) {
		Statement statement= iter.next();
		if (statement instanceof SwitchCase) {
			SwitchCase switchCase= (SwitchCase)statement;
			if (switchCase.isDefault()) {
				result.setHasDefaultCase();
			}
			if (info == null) {
				info= createSequential();
				start= statement.getStartPosition();
			} else {
				if (info.isReturn() || info.isPartialReturn() || info.branches()) {
					result.add(new Region(start, end - start + 1), info);
					info= createSequential();
					start= statement.getStartPosition();
				}
			}
		} else {
			info.merge(getFlowInfo(statement), fFlowContext);
		}
		end= statement.getStartPosition() + statement.getLength() - 1;
	}
	result.add(new Region(start, end - start + 1), info);
	return result;
}
 
private static int getIndex(int offset, List<Statement> statements) {
	for (int i= 0; i < statements.size(); i++) {
		Statement s= statements.get(i);
		if (offset <= s.getStartPosition()) {
			return i;
		}
		if (offset < s.getStartPosition() + s.getLength()) {
			return -1;
		}
	}
	return statements.size();
}
 
源代码7 项目: JDeodorant   文件: PDGRegionSubTreeMapper.java
private boolean cloneFragmentContainsPDGNode(List<ASTNode> cloneFragmentNodes, PDGNode pdgNode) {
	Statement pdgStatement = pdgNode.getASTStatement();
	int start = pdgStatement.getStartPosition();
	int cloneFragmentStart = cloneFragmentNodes.get(0).getStartPosition();
	int cloneFragmentLastNodeStart = cloneFragmentNodes.get(cloneFragmentNodes.size()-1).getStartPosition();
	int cloneFragmentEnd = cloneFragmentLastNodeStart + cloneFragmentNodes.get(cloneFragmentNodes.size()-1).getLength();
	if (start >= cloneFragmentStart && start <= cloneFragmentEnd)
		return true;
	else 
		return false;
}
 
private boolean nodeExistsInsideTypeCheckCodeFragment(ASTNode node) {
	Statement statement = typeCheckElimination.getTypeCheckCodeFragment();
	int startPosition = statement.getStartPosition();
	int endPosition = startPosition + statement.getLength();
	if(node.getStartPosition() >= startPosition && node.getStartPosition() <= endPosition)
		return true;
	else
		return false;
}