diff --git a/AlgebraicDataflowArchitectureModel/src/code/ast/VariableDeclaration.java b/AlgebraicDataflowArchitectureModel/src/code/ast/VariableDeclaration.java index 5d86c98..b841603 100644 --- a/AlgebraicDataflowArchitectureModel/src/code/ast/VariableDeclaration.java +++ b/AlgebraicDataflowArchitectureModel/src/code/ast/VariableDeclaration.java @@ -56,13 +56,13 @@ public void addAnnotation(Annotation annotation) { annotations.put(annotation.getElementName(), annotation); } - + public String toString() { String code = ""; - for (Annotation annotation: getAnnotations()) { - code += annotation.toString() + " "; + code += variableName; + if (optionalInitializer != null) { + code += " = " + optionalInitializer; } - code += type.getInterfaceTypeName() + " " + variableName; return code; } } diff --git a/AlgebraicDataflowArchitectureModel/src/code/ast/VariableDeclarationStatement.java b/AlgebraicDataflowArchitectureModel/src/code/ast/VariableDeclarationStatement.java index bdc0ad4..a5f3c8a 100644 --- a/AlgebraicDataflowArchitectureModel/src/code/ast/VariableDeclarationStatement.java +++ b/AlgebraicDataflowArchitectureModel/src/code/ast/VariableDeclarationStatement.java @@ -2,11 +2,12 @@ import java.util.ArrayList; import java.util.List; +import models.algebra.Type; public class VariableDeclarationStatement extends Statement { private List modifiers = new ArrayList<>(); - private Type type; + private Type type = null; private List fragments = new ArrayList<>(); public List getModifiers() { @@ -28,13 +29,30 @@ public List getFragments() { return fragments; } - + public void addFragment(VariableDeclaration fragment) { - this.fragments.add(fragment); + if (fragment == null) return; + + if (this.type == null) { + this.type = fragment.getType(); + this.fragments.add(fragment); + } else { + if (this.type.equals(fragment.getType())) { + this.fragments.add(fragment); + } else { + System.err.println("Type mismatch: " + fragment); + } + } } public void setFragments(List fragments) { this.fragments = fragments; + + if (fragments != null && !fragments.isEmpty()) { + this.type = fragments.get(0).getType(); + } else { + this.type = null; + } } @Override @@ -42,16 +60,19 @@ StringBuilder sb = new StringBuilder(); for (Integer mod : modifiers) { - sb.append(mod.toString()).append(" "); + if (mod == Modifier.PRIVATE) sb.append("private "); + else if (mod == Modifier.PUBLIC) sb.append("public "); + else if (mod == Modifier.PROTECTED) sb.append("protected "); + else if (mod == Modifier.STATIC) sb.append("static "); } - if (type != null) { - sb.append(type.toString()).append(" "); + if (this.type != null) { + sb.append(this.type.getImplementationTypeName()).append(" "); } for (int i = 0; i < fragments.size(); i++) { - sb.append(fragments.get(i).getName()); - if (i < fragments.size() - 1) sb.append(", "); + sb.append(fragments.get(i).toString()); + if (i < fragments.size() - 1) sb.append(", "); } sb.append(";");