Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.qvtd.pivot.qvtcorebase/src/org/eclipse/qvtd/pivot/qvtcorebase/analysis/RootDomainUsageAnalysis.java')
-rw-r--r--plugins/org.eclipse.qvtd.pivot.qvtcorebase/src/org/eclipse/qvtd/pivot/qvtcorebase/analysis/RootDomainUsageAnalysis.java56
1 files changed, 28 insertions, 28 deletions
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtcorebase/src/org/eclipse/qvtd/pivot/qvtcorebase/analysis/RootDomainUsageAnalysis.java b/plugins/org.eclipse.qvtd.pivot.qvtcorebase/src/org/eclipse/qvtd/pivot/qvtcorebase/analysis/RootDomainUsageAnalysis.java
index fd1770080..8d6c8bcc8 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtcorebase/src/org/eclipse/qvtd/pivot/qvtcorebase/analysis/RootDomainUsageAnalysis.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtcorebase/src/org/eclipse/qvtd/pivot/qvtcorebase/analysis/RootDomainUsageAnalysis.java
@@ -56,7 +56,7 @@ import org.eclipse.qvtd.pivot.qvtcorebase.PropertyAssignment;
import org.eclipse.qvtd.pivot.qvtcorebase.util.QVTcoreBaseVisitor;
import org.eclipse.qvtd.pivot.qvtcorebase.utilities.QVTcoreBaseUtil;
-public class RootDomainUsageAnalysis extends AbstractDomainUsageAnalysis implements QVTcoreBaseVisitor<DomainUsage>
+public class RootDomainUsageAnalysis extends AbstractDomainUsageAnalysis implements QVTcoreBaseVisitor<@NonNull DomainUsage>
{
protected abstract class AbstractDomainUsage implements DomainUsage.Internal
{
@@ -316,11 +316,6 @@ public class RootDomainUsageAnalysis extends AbstractDomainUsageAnalysis impleme
* The domains in which the containing class of a property may be used.
*/
protected final @NonNull Map<@NonNull Property, @NonNull DomainUsage> property2containingClassUsage = new HashMap<@NonNull Property, @NonNull DomainUsage>();
-
- /**
- * The domains in which the referred type of a property may be used.
- */
- protected final @NonNull Map<@NonNull Property, @NonNull DomainUsage> property2referredTypeUsage = new HashMap<@NonNull Property, @NonNull DomainUsage>();
/**
* The nested analyses for declared operations.
@@ -474,32 +469,12 @@ public class RootDomainUsageAnalysis extends AbstractDomainUsageAnalysis impleme
assert newUsage != null;
for (@NonNull Property property : ClassUtil.nullFree(asClass.getOwnedProperties())) {
property2containingClassUsage.put(property, newUsage);
- DomainUsage referredTypeUsage = null;
- for (Element annotation : property.getOwnedAnnotations()) {
- if (annotation instanceof Annotation) {
- Annotation annotation2 = (Annotation)annotation;
- if (DomainUsage.QVT_DOMAINS_ANNOTATION_SOURCE.equals(annotation2.getName())) {
- for (Detail detail : annotation2.getOwnedDetails()) {
- if (DomainUsage.QVT_DOMAINS_ANNOTATION_REFERRED_DOMAIN.equals(detail.getName())) {
- int mask = 0;
- for (String value : detail.getValues()) {
- Integer bit = name2bit.get(value.trim());
- if (bit != null) {
- mask |= 1 << bit;
- }
- }
- referredTypeUsage = getValidUsage(mask);
- }
- }
- }
-
- }
- }
+ DomainUsage referredTypeUsage = getAnnotatedUsage(property);
if (referredTypeUsage == null) {
referredTypeUsage = visit(property.getType());
}
// System.out.println(property + " => " + referredTypeUsage);
- property2referredTypeUsage.put(property, referredTypeUsage);
+// property2referredTypeUsage.put(property, referredTypeUsage);
}
}
class2usage.put(((StandardLibraryInternal)context.getStandardLibrary()).getOclTypeType(), getAnyUsage()); // Needed by oclIsKindOf() etc
@@ -575,6 +550,31 @@ public class RootDomainUsageAnalysis extends AbstractDomainUsageAnalysis impleme
return analysis;
}
+ protected @Nullable DomainUsage getAnnotatedUsage(@NonNull Property property) {
+ DomainUsage referredTypeUsage = null;
+ for (Element annotation : property.getOwnedAnnotations()) {
+ if (annotation instanceof Annotation) {
+ Annotation annotation2 = (Annotation)annotation;
+ if (DomainUsage.QVT_DOMAINS_ANNOTATION_SOURCE.equals(annotation2.getName())) {
+ for (Detail detail : annotation2.getOwnedDetails()) {
+ if (DomainUsage.QVT_DOMAINS_ANNOTATION_REFERRED_DOMAIN.equals(detail.getName())) {
+ int mask = 0;
+ for (String value : detail.getValues()) {
+ Integer bit = name2bit.get(value.trim());
+ if (bit != null) {
+ mask |= 1 << bit;
+ }
+ }
+ referredTypeUsage = getValidUsage(mask);
+ }
+ }
+ }
+
+ }
+ }
+ return referredTypeUsage;
+ }
+
protected int getAnyMask() {
return (1 << bit2typedModel.size()) - 1;
}

Back to the top