mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
field generation
This commit is contained in:
+39
-3
@@ -30,6 +30,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.annotation.GrAnnotationMemberValue;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrDefaultAnnotationValue;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrStatement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariableDeclaration;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.arguments.GrArgumentList;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrClosableBlock;
|
||||
@@ -304,9 +305,44 @@ public class ClassItemGeneratorImpl implements ClassItemGenerator {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeVariableDeclarations(StringBuilder builder, GrVariableDeclaration variableDeclaration) {
|
||||
GenerationUtil.writeSimpleVarDeclaration(variableDeclaration, builder, context.extend());
|
||||
builder.append('\n');
|
||||
public void writeVariableDeclarations(StringBuilder mainBuilder, GrVariableDeclaration variableDeclaration) {
|
||||
ExpressionContext extended = context.extend();
|
||||
GrVariable[] variables = variableDeclaration.getVariables();
|
||||
|
||||
StringBuilder builder = new StringBuilder();
|
||||
StringBuilder initBuilder = new StringBuilder("{\n");
|
||||
for (GrVariable variable : variables) {
|
||||
PsiType type = extended.typeProvider.getVarType(variable);
|
||||
ModifierListGenerator.writeModifiers(builder, variable.getModifierList());
|
||||
|
||||
writeType(builder, type, variable);
|
||||
builder.append(" ");
|
||||
|
||||
builder.append(variable.getName());
|
||||
final GrExpression initializer = variable.getInitializerGroovy();
|
||||
|
||||
if (initializer != null) {
|
||||
int count = extended.myStatements.size();
|
||||
StringBuilder initializerBuilder = new StringBuilder();
|
||||
initializer.accept(new ExpressionGenerator(initializerBuilder, extended));
|
||||
if (extended.myStatements.size() == count) { //didn't use extra statements
|
||||
builder.append(" = ").append(initializerBuilder);
|
||||
}
|
||||
else {
|
||||
StringBuilder assignment = new StringBuilder(variable.getName()).append(" = ").append(initializerBuilder).append(';');
|
||||
GenerationUtil.writeStatement(initBuilder, assignment, null, extended);
|
||||
}
|
||||
}
|
||||
|
||||
builder.append(";\n");
|
||||
}
|
||||
|
||||
if (extended.myStatements.size()>0) {
|
||||
initBuilder.append("}\n");
|
||||
mainBuilder.append(initBuilder);
|
||||
}
|
||||
|
||||
mainBuilder.append(builder);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -376,7 +376,7 @@ public class GenerationUtil {
|
||||
//Set<String> types = getVarTypes(variableDeclaration);
|
||||
|
||||
//if (types.size() > 1) {
|
||||
if (variableDeclaration.getParent() instanceof GrControlStatement) {
|
||||
if (variables.length > 1 && variableDeclaration.getParent() instanceof GrControlStatement) {
|
||||
expressionContext.setInsertCurlyBrackets();
|
||||
}
|
||||
for (GrVariable variable : variables) {
|
||||
|
||||
+7
@@ -28,6 +28,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrCall;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameterList;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrAccessorMethod;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrClosureSignature;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement;
|
||||
@@ -46,6 +47,7 @@ public class TypeProvider {
|
||||
public TypeProvider() {
|
||||
}
|
||||
|
||||
@SuppressWarnings({"MethodMayBeStatic"})
|
||||
@NotNull
|
||||
public PsiType getReturnType(PsiMethod method) {
|
||||
if (method instanceof GrMethod) {
|
||||
@@ -59,6 +61,7 @@ public class TypeProvider {
|
||||
return TypesUtil.getJavaLangObject(method);
|
||||
}
|
||||
|
||||
@SuppressWarnings({"MethodMayBeStatic"})
|
||||
@NotNull
|
||||
public PsiType getVarType(GrVariable variable) {
|
||||
PsiType type = variable.getDeclaredType();
|
||||
@@ -74,6 +77,10 @@ public class TypeProvider {
|
||||
@NotNull
|
||||
public PsiType getParameterType(PsiParameter parameter) {
|
||||
if (!(parameter instanceof GrParameter)) {
|
||||
PsiElement scope = parameter.getDeclarationScope();
|
||||
if (scope instanceof GrAccessorMethod) {
|
||||
return getVarType(((GrAccessorMethod)scope).getProperty());
|
||||
}
|
||||
return parameter.getType();
|
||||
}
|
||||
/*GrTypeElement typeElementGroovy = ((GrParameter)parameter).getTypeElementGroovy();
|
||||
|
||||
Reference in New Issue
Block a user