wip CompleteClass NameManager
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/AS2CGVisitor.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/AS2CGVisitor.java
index e4fe556..4e2b6aa 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/AS2CGVisitor.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/AS2CGVisitor.java
@@ -128,7 +128,6 @@
import org.eclipse.ocl.pivot.ids.PropertyId;
import org.eclipse.ocl.pivot.ids.TuplePartId;
import org.eclipse.ocl.pivot.ids.TypeId;
-import org.eclipse.ocl.pivot.internal.complete.CompleteClassInternal;
import org.eclipse.ocl.pivot.internal.complete.StandardLibraryInternal;
import org.eclipse.ocl.pivot.internal.manager.FinalAnalysis;
import org.eclipse.ocl.pivot.internal.manager.PivotMetamodelManager;
@@ -775,6 +774,13 @@
return currentNameManager;
}
+ public @Nullable NestedNameManager popPackageNameManager() {
+ assert (currentNameManager != null) && (currentNameManager.getCGScope() instanceof CGPackage);
+ nameManagerStack.pop();
+ currentNameManager = nameManagerStack.isEmpty() ? null : nameManagerStack.peek();
+ return currentNameManager;
+ }
+
public @NonNull NestedNameManager pushClassNameManager(@NonNull CGClass cgClass) {
NestedNameManager nameManager = globalNameManager.basicGetNestedNameManager(cgClass);
if (nameManager == null) { //
@@ -797,6 +803,17 @@
return nameManager;
}
+ public @NonNull NestedNameManager pushPackageNameManager(@NonNull CGPackage cgPackage) {
+ NestedNameManager nameManager = globalNameManager.basicGetNestedNameManager(cgPackage);
+ if (nameManager == null) { //
+ NestedNameManager parentNameManager = currentNameManager != null ? currentNameManager.getClassParentNameManager() : null;
+ nameManager = globalNameManager.createNestedNameManager(parentNameManager, cgPackage);
+ }
+ currentNameManager = nameManager;
+ nameManagerStack.push(nameManager);
+ return nameManager;
+ }
+
protected void setCGVariableInit(@NonNull CGVariable cgVariable, @NonNull CGValuedElement cgInit) {
// NameResolution variableNameResolution = cgVariable.getNameResolution();
if (cgInit.basicGetNameResolution() == null) {
@@ -845,8 +862,8 @@
*/
@Override
public @NonNull CGClass visitClass(org.eclipse.ocl.pivot.@NonNull Class asClass) {
- CompleteClassInternal completeClass = getEnvironmentFactory().getCompleteModel().getCompleteClass(asClass);
- asClass = completeClass.getPrimaryClass();
+ // CompleteClassInternal completeClass = getEnvironmentFactory().getCompleteModel().getCompleteClass(asClass);
+ // asClass = completeClass.getPrimaryClass();
CGClass cgClass = analyzer.basicGetCGClass(asClass);
if (cgClass == null) {
cgClass = generateClassDeclaration(asClass, null);
@@ -1118,6 +1135,7 @@
CGPackage cgPackage = CGModelFactory.eINSTANCE.createCGPackage();
cgPackage.setAst(asPackage);
globalNameManager.declareEagerName(cgPackage, PivotUtil.getName(asPackage));
+ pushPackageNameManager(cgPackage);
for (org.eclipse.ocl.pivot.@NonNull Class asType : ClassUtil.nullFree(asPackage.getOwnedClasses())) {
CGClass cgClass = doVisit(CGClass.class, asType);
cgPackage.getClasses().add(cgClass);
@@ -1126,6 +1144,7 @@
CGPackage cgNestedPackage = doVisit(CGPackage.class, asNestedPackage);
cgPackage.getPackages().add(cgNestedPackage);
}
+ popPackageNameManager();
return cgPackage;
}
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/CodeGenAnalyzer.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/CodeGenAnalyzer.java
index 5de61bf..35920f2 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/CodeGenAnalyzer.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/CodeGenAnalyzer.java
@@ -184,7 +184,7 @@
public void addCGClass(@NonNull CGClass cgClass) {
org.eclipse.ocl.pivot.Class asClass = CGUtil.getAST(cgClass);
CompleteClassInternal completeClass = codeGenerator.getEnvironmentFactory().getCompleteModel().getCompleteClass(asClass);
- assert asClass == completeClass.getPrimaryClass();
+ // assert asClass == completeClass.getPrimaryClass();
CGClass old = asClass2cgClass.put(completeClass, cgClass);
assert old == null;
if (cgRootClass == null) {
@@ -304,7 +304,7 @@
public @Nullable CGClass basicGetCGClass(org.eclipse.ocl.pivot.@NonNull Class asClass) {
CompleteClassInternal completeClass = codeGenerator.getEnvironmentFactory().getCompleteModel().getCompleteClass(asClass);
- assert asClass == completeClass.getPrimaryClass();
+ // assert asClass == completeClass.getPrimaryClass();
return asClass2cgClass.get(completeClass);
}
@@ -588,7 +588,7 @@
public @NonNull CGClass getCGClass(org.eclipse.ocl.pivot.@NonNull Class asClass) {
CompleteClassInternal completeClass = codeGenerator.getEnvironmentFactory().getCompleteModel().getCompleteClass(asClass);
- assert asClass == completeClass.getPrimaryClass();
+ // assert asClass == completeClass.getPrimaryClass();
return ClassUtil.nonNullState(asClass2cgClass.get(completeClass));
/* CGClass cgClass = asClass2cgClass.get(asClass);
if (cgClass == null) {
diff --git a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/NestedNameManager.java b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/NestedNameManager.java
index e426597..4699c46 100644
--- a/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/NestedNameManager.java
+++ b/examples/org.eclipse.ocl.examples.codegen/src/org/eclipse/ocl/examples/codegen/analyzer/NestedNameManager.java
@@ -62,7 +62,7 @@
protected final @NonNull NameManager parent;
protected final @NonNull CGNamedElement cgScope;
protected final @NonNull NamedElement asScope;
- protected final @NonNull Type asType;
+ protected final @NonNull Type zasType;
protected final boolean isStatic;
/**
@@ -104,7 +104,8 @@
this.cgScope = cgScope;
this.asScope = CGUtil.getAST(cgScope);
if (parent instanceof GlobalNameManager) {
- this.asType = ClassUtil.nonNullState(PivotUtil.getContainingType(asScope));
+ // this.asType = ClassUtil.nonNullState(PivotUtil.getContainingType(asScope));
+ this.asType = PivotUtil.basicGetContainingType(asScope);
}
else {
this.asType = ((NestedNameManager)parent).asType;