Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ParserLauncher.java15
1 files changed, 15 insertions, 0 deletions
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ParserLauncher.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ParserLauncher.java
index 6306152..0c68c6e 100644
--- a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ParserLauncher.java
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ParserLauncher.java
@@ -78,6 +78,21 @@ public class ParserLauncher {
}
// if(runtime.getNbErrors() == 0) {
+ // A RefSetting that can autoCreate an element should come before other
+ // RefSettings that might refer to this element.
+ Collections.sort(refSettings, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ RefSetting rs1 = (RefSetting)o1;
+ RefSetting rs2 = (RefSetting)o2;
+ if(rs1.canAutoCreate() && !rs2.canAutoCreate())
+ return -1; // autoCreate first
+ else if(rs2.canAutoCreate() && !rs1.canAutoCreate())
+ return 1; // autoCreate first
+ else // both or none are autoCreate
+ return 0; // don't care
+ }
+ });
+
// A RefSetting that relies on imported contexts can only be executed after
// the RefSetting importing the corresponding context (and this, recursively).
// For now, we sort RefSettings so that all those that import a context

Back to the top