Skip to content
Snippets Groups Projects
Commit dbae91b4 authored by Sven Gestegård Robertz's avatar Sven Gestegård Robertz
Browse files

cherry-pick 271122318

parent 92f98cf6
No related branches found
No related tags found
No related merge requests found
...@@ -352,25 +352,41 @@ aspect Java_Class { ...@@ -352,25 +352,41 @@ aspect Java_Class {
env.println("/* "); env.println("/* ");
pp(env.getPrintStream()); pp(env.getPrintStream());
// temporary experiment with listing user type dependencies Java_emitUserTypeDeps(env, null, false);
// This should generate actual register(...) code env.println("*/");
}
public void Decl.Java_emitUserTypeDeps(Java_env env, String via, boolean outputCode) {
if( !references().isEmpty() ) { if( !references().isEmpty() ) {
Iterator<Decl> it = references().iterator(); Iterator<Decl> it = references().iterator();
while(it.hasNext()) { while(it.hasNext()) {
Decl t = it.next(); Decl t = it.next();
env.println(" //Depends (directly) on "+t.getName() + " (" + t +") " );
//TODO: traverse AST to find indirect dependencies t.Java_emitUserTypeDeps(env, t.getName(), outputCode);
Iterator<Decl> iit = t.references().iterator(); if(outputCode) {
while(iit.hasNext()) { env.println(t.getName()+".register(e);");
Decl tt = iit.next(); } else { // Just output a comment
env.println(" //Depends (indirectly) on "+tt.getName() + " (" + tt +") " ); String refpath = (via == null) ? "directly" : "indirectly via "+via;
//env.println(" //Depends ("+refpath+") on "+t.getName() + " (" + t +") " );
env.println(" //Depends ("+refpath+") on "+t.getName() );
} }
} }
} else {
env.println(" //no user type dependencies ");
} }
env.println("*/"); // else {
// env.println(" //no more deps ");
// }
}
public void Decl.Java_emitRegisterEncoder(Java_env env) {
env.println("public static void register(Encoder e) throws IOException {");
env.indent();
Java_emitUserTypeDeps(env, null, false); //XXX false -> generate no code
env.println("e.register(new Dispatcher());");
env.unindent();
env.println("}");
env.println();
} }
public void TypeDecl.Java_emitClass(Java_env env, String pack) { public void TypeDecl.Java_emitClass(Java_env env, String pack) {
...@@ -444,27 +460,7 @@ aspect Java_Class { ...@@ -444,27 +460,7 @@ aspect Java_Class {
env.println("}"); env.println("}");
env.println(); env.println();
env.println("public static void register(Encoder e) throws IOException {"); Java_emitRegisterEncoder(env);
env.indent();
if( !references().isEmpty() ) {
Iterator<Decl> it = references().iterator();
while(it.hasNext()) {
Decl t = it.next();
env.println(" //Depends (directly) on "+t.getName() + " (" + t +") " );
Iterator<Decl> iit = t.references().iterator();
while(iit.hasNext()) {
Decl tt = iit.next();
env.println(" //Depends (indirectly) on "+tt.getName() + " (" + tt +") " );
}
}
} else {
env.println(" //no more deps ");
}
env.println("e.register(new Dispatcher());");
env.unindent();
env.println("}");
env.println();
env.println("private static class Dispatcher implements SampleDispatcher {"); env.println("private static class Dispatcher implements SampleDispatcher {");
env.indent(); env.indent();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment