use of org.sonar.java.model.InternalSyntaxToken in project sonar-java by SonarSource.
the class TreeFactory method newMethodOrConstructor.
private static MethodTreeImpl newMethodOrConstructor(Optional<TypeTree> type, InternalSyntaxToken identifierToken, FormalParametersListTreeImpl parameters, Optional<List<Tuple<Optional<List<AnnotationTreeImpl>>, Tuple<InternalSyntaxToken, InternalSyntaxToken>>>> annotatedDimensions, Optional<Tuple<InternalSyntaxToken, QualifiedIdentifierListTreeImpl>> throwsClause, JavaTree blockOrSemicolon) {
IdentifierTreeImpl identifier = new IdentifierTreeImpl(identifierToken);
ArrayTypeTreeImpl nestedDimensions = newArrayTypeTreeWithAnnotations(annotatedDimensions);
TypeTree actualType;
if (type.isPresent()) {
actualType = applyDim(type.get(), nestedDimensions);
} else {
actualType = null;
}
BlockTreeImpl block = null;
InternalSyntaxToken semicolonToken = null;
if (blockOrSemicolon.is(Tree.Kind.BLOCK)) {
block = (BlockTreeImpl) blockOrSemicolon;
} else {
semicolonToken = (InternalSyntaxToken) blockOrSemicolon;
}
InternalSyntaxToken throwsToken = null;
ListTree<TypeTree> throwsClauses = QualifiedIdentifierListTreeImpl.emptyList();
if (throwsClause.isPresent()) {
throwsToken = throwsClause.get().first();
throwsClauses = throwsClause.get().second();
}
return new MethodTreeImpl(actualType, identifier, parameters, throwsToken, throwsClauses, block, semicolonToken);
}
use of org.sonar.java.model.InternalSyntaxToken in project sonar-java by SonarSource.
the class TreeFactory method newPostfixExpression.
public ExpressionTree newPostfixExpression(ExpressionTree expression, Optional<InternalSyntaxToken> postfixOperator) {
ExpressionTree result = expression;
if (postfixOperator.isPresent()) {
InternalSyntaxToken postfixOperatorToken = postfixOperator.get();
result = new InternalPostfixUnaryExpression(kindMaps.getPostfixOperator((JavaPunctuator) postfixOperator.get().getGrammarRuleKey()), result, postfixOperatorToken);
}
return result;
}
use of org.sonar.java.model.InternalSyntaxToken in project sonar-java by SonarSource.
the class TreeFactory method newOpensModuleDirective.
public ModuleDirectiveTree newOpensModuleDirective(InternalSyntaxToken opensKeyword, ExpressionTree packageName, Optional<Tuple<InternalSyntaxToken, ListTreeImpl<ModuleNameTree>>> moduleNames, InternalSyntaxToken semicolonToken) {
InternalSyntaxToken toKeyword = null;
ListTreeImpl<ModuleNameTree> otherModuleNames = ModuleNameListTreeImpl.emptyList();
if (moduleNames.isPresent()) {
Tuple<InternalSyntaxToken, ListTreeImpl<ModuleNameTree>> toModuleNames = moduleNames.get();
toKeyword = toModuleNames.first();
otherModuleNames = toModuleNames.second();
}
return new OpensDirectiveTreeImpl(opensKeyword, packageName, toKeyword, otherModuleNames, semicolonToken);
}
use of org.sonar.java.model.InternalSyntaxToken in project sonar-java by SonarSource.
the class TreeFactory method newEnumDeclaration.
public ClassTreeImpl newEnumDeclaration(InternalSyntaxToken enumToken, InternalSyntaxToken identifierToken, Optional<Tuple<InternalSyntaxToken, QualifiedIdentifierListTreeImpl>> implementsClause, InternalSyntaxToken openBraceToken, Optional<List<EnumConstantTreeImpl>> enumConstants, Optional<InternalSyntaxToken> semicolonToken, Optional<List<JavaTree>> enumDeclarations, InternalSyntaxToken closeBraceToken) {
List<JavaTree> members = Lists.newLinkedList();
EnumConstantTreeImpl lastEnumConstant = null;
if (enumConstants.isPresent()) {
for (EnumConstantTreeImpl enumConstant : enumConstants.get()) {
members.add(enumConstant);
lastEnumConstant = enumConstant;
}
}
if (semicolonToken.isPresent()) {
InternalSyntaxToken semicolon = semicolonToken.get();
// add the semicolon as endToken of the last enumConstant, or as empty statement in the enum members
if (lastEnumConstant != null) {
lastEnumConstant.setEndToken(semicolon);
} else {
members.add(newEmptyMember(semicolon));
}
}
if (enumDeclarations.isPresent()) {
for (JavaTree enumDeclaration : enumDeclarations.get()) {
members.add(enumDeclaration);
}
}
ClassTreeImpl result = newClassBody(Kind.ENUM, openBraceToken, Optional.of((List<JavaTree>) ImmutableList.<JavaTree>builder().addAll(members).build()), closeBraceToken);
result.completeDeclarationKeyword(enumToken);
IdentifierTreeImpl identifier = new IdentifierTreeImpl(identifierToken);
result.completeIdentifier(identifier);
if (implementsClause.isPresent()) {
InternalSyntaxToken implementsKeyword = implementsClause.get().first();
QualifiedIdentifierListTreeImpl interfaces = implementsClause.get().second();
result.completeInterfaces(implementsKeyword, interfaces);
}
return result;
}
use of org.sonar.java.model.InternalSyntaxToken in project sonar-java by SonarSource.
the class TreeFactory method newExportsModuleDirective.
public ModuleDirectiveTree newExportsModuleDirective(InternalSyntaxToken exportsKeyword, ExpressionTree packageName, Optional<Tuple<InternalSyntaxToken, ListTreeImpl<ModuleNameTree>>> moduleNames, InternalSyntaxToken semicolonToken) {
InternalSyntaxToken toKeyword = null;
ListTreeImpl<ModuleNameTree> otherModuleNames = ModuleNameListTreeImpl.emptyList();
if (moduleNames.isPresent()) {
Tuple<InternalSyntaxToken, ListTreeImpl<ModuleNameTree>> toModuleNames = moduleNames.get();
toKeyword = toModuleNames.first();
otherModuleNames = toModuleNames.second();
}
return new ExportsDirectiveTreeImpl(exportsKeyword, packageName, toKeyword, otherModuleNames, semicolonToken);
}
Aggregations