Skip to content
Snippets Groups Projects
Commit 8f1e4709 authored by Jesper's avatar Jesper
Browse files

[cleanup] Remove unnecessary class InterTypeObject

parent faf36d22
No related branches found
No related tags found
No related merge requests found
......@@ -28,7 +28,9 @@
import org.jastadd.ast.AST.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
......@@ -402,29 +404,26 @@ public aspect Attributes {
}
}
public class InterTypeObject {
public String className;
public ClassBodyObject classBodyObject;
public Map<String, Collection<ClassBodyObject>> Grammar.interTypeDecls
= new HashMap<String, Collection<ClassBodyObject>>();
public InterTypeObject(String name, ClassBodyObject obj) {
this.className = name;
this.classBodyObject = obj;
protected void Grammar.addInterTypeDecl(String className, ClassBodyObject decl) {
if (!interTypeDecls.containsKey(className)) {
interTypeDecls.put(className, new ArrayList<ClassBodyObject>());
}
interTypeDecls.get(className).add(decl);
}
public Collection<InterTypeObject> Grammar.interTypeObjects = new LinkedList<InterTypeObject>();
public void Grammar.addClassBodyDecl(org.jastadd.jrag.AST.SimpleNode n,
String className, String fileName, String aspectName) {
interTypeObjects.add(new InterTypeObject(className, new ClassBodyObject(n,
fileName, n.firstToken.beginLine, aspectName)));
addInterTypeDecl(className, new ClassBodyObject(n, fileName, n.firstToken.beginLine, aspectName));
}
public void Grammar.addClassBodyDecl(org.jastadd.jrag.AST.SimpleNode n,
String className, String fileName, String modifiers, String aspectName) {
ClassBodyObject obj = new ClassBodyObject(n, fileName, n.firstToken.beginLine, aspectName);
obj.modifiers = modifiers;
interTypeObjects.add(new InterTypeObject(className, obj));
addInterTypeDecl(className, obj);
}
public Collection<ClassBodyObject> TypeDecl.classBodyDecls = new LinkedHashSet<ClassBodyObject>();
......
......@@ -40,6 +40,7 @@ import java.io.StringReader;
import java.io.StringWriter;
import java.util.Collection;
import java.util.LinkedList;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.Scanner;
......@@ -51,12 +52,12 @@ import org.jastadd.ast.AST.Component;
import org.jastadd.ast.AST.Grammar;
import org.jastadd.ast.AST.InhDecl;
import org.jastadd.ast.AST.InhEq;
import org.jastadd.ast.AST.InterTypeObject;
import org.jastadd.ast.AST.List;
import org.jastadd.ast.AST.SynDecl;
import org.jastadd.ast.AST.SynEq;
import org.jastadd.ast.AST.TokenComponent;
import org.jastadd.ast.AST.TypeDecl;
import org.jastadd.jrag.ClassBodyObject;
import org.jastadd.jrag.AST.ASTCompilationUnit;
import org.jastadd.jrag.AST.JragParser;
import org.jastadd.jrag.AST.TokenMgrError;
......@@ -297,20 +298,23 @@ public class JastAdd {
protected static Collection<Problem> weaveInterTypeObjects(Grammar grammar) {
Collection<Problem> problems = new LinkedList<Problem>();
for (InterTypeObject object : grammar.interTypeObjects) {
TypeDecl clazz = grammar.lookup(object.className);
if (clazz != null) {
clazz.classBodyDecls.add(object.classBodyObject);
} else {
problems.add(Problem.builder()
.message("can not add member to unknown class %s", object.className)
.sourceFile(object.classBodyObject.fileName)
.sourceLine(object.classBodyObject.line)
.buildError());
for (Map.Entry<String, Collection<ClassBodyObject>> entry : grammar.interTypeDecls.entrySet()) {
String className = entry.getKey();
TypeDecl clazz = grammar.lookup(className);
for (ClassBodyObject decl : entry.getValue()) {
if (clazz != null) {
clazz.classBodyDecls.add(decl);
} else {
problems.add(Problem.builder()
.message("can not add member to unknown class %s", className)
.sourceFile(decl.fileName)
.sourceLine(decl.line)
.buildError());
}
}
}
// TODO(jesper): Remove the below line.
grammar.interTypeObjects.clear(); // Reset to avoid double weaving.
grammar.interTypeDecls.clear(); // Reset to avoid double weaving.
return problems;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment