Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2019-12-03 13:53:28 +0000
committerEd Willink2019-12-03 13:56:30 +0000
commitf9b537a4f8f9014902a6d3546a9698d76fad9736 (patch)
treeaad0af9c54ab5a10af982402d8e4ed490f448951
parent0685cf32c8264c73f19b188bbb34c35e9822cdb1 (diff)
downloadorg.eclipse.qvtd-f9b537a4f8f9014902a6d3546a9698d76fad9736.tar.gz
org.eclipse.qvtd-f9b537a4f8f9014902a6d3546a9698d76fad9736.tar.xz
org.eclipse.qvtd-f9b537a4f8f9014902a6d3546a9698d76fad9736.zip
ok
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/ExpressionSynthesizer.java14
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/HeadNodeGroup.java10
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/RuleHeadAnalysis.java4
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicPartition2Mapping.java4
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/checks/CheckedConditionAnalysis.java2
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/merger/EdgeMerger.java6
-rw-r--r--plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/merger/NodeMerger.java8
-rw-r--r--plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/Edge.java11
-rw-r--r--plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/Node.java2
-rw-r--r--plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/EdgeImpl.java12
-rw-r--r--plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/NodeImpl.java4
-rw-r--r--plugins/org.eclipse.qvtd.pivot.qvtschedule/src/org/eclipse/qvtd/pivot/qvtschedule/utilities/InitUtility.java11
12 files changed, 48 insertions, 40 deletions
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/ExpressionSynthesizer.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/ExpressionSynthesizer.java
index 3c86e1bf6..07d2e0234 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/ExpressionSynthesizer.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/ExpressionSynthesizer.java
@@ -435,7 +435,7 @@ public abstract class ExpressionSynthesizer extends AbstractExtendingQVTbaseVisi
}
protected @NonNull Node doLoopExp(@NonNull LoopExp loopExp, @NonNull Node sourceNode) {
- ExpressionSynthesizer conditionalExpressionSynthesizer = getExpressionSynthesizer(getConditionalUtility());
+ ExpressionSynthesizer conditionalExpressionSynthesizer = getExpressionSynthesizer(resultUtility.getConditionalUtility());
List<@NonNull Variable> ownedIterators = ClassUtil.nullFree(loopExp.getOwnedIterators());
@NonNull Node[] argNodes = new @NonNull Node[1+ownedIterators.size()+(loopExp instanceof IterateExp ? 1 : 0)];
int i = 1;
@@ -692,10 +692,10 @@ public abstract class ExpressionSynthesizer extends AbstractExtendingQVTbaseVisi
return null;
}
- protected final @NonNull InitUtility getConditionalUtility() {
- boolean isNullable = resultUtility.isNullable();
- return isNullable ? InitUtility.NULLABLE_CONDITIONAL : InitUtility.NON_NULL_CONDITIONAL;
- }
+ // protected final @NonNull InitUtility getConditionalUtility() {
+ // boolean isNullable = resultUtility.isNullable();
+ // return isNullable ? InitUtility.NULLABLE_CONDITIONAL : InitUtility.NON_NULL_CONDITIONAL;
+ // }
public @NonNull ExpressionSynthesizer getExpressionSynthesizer(@NonNull InitUtility initUtility) {
if (nonNullMatchedExpressionSynthesizer != this) {
@@ -1302,7 +1302,7 @@ public abstract class ExpressionSynthesizer extends AbstractExtendingQVTbaseVisi
@Override
public @NonNull Node visitIfExp(@NonNull IfExp ifExp) {
- ExpressionSynthesizer conditionalExpressionSynthesizer = getExpressionSynthesizer(getConditionalUtility());
+ ExpressionSynthesizer conditionalExpressionSynthesizer = getExpressionSynthesizer(resultUtility.getConditionalUtility());
Node selfNode = synthesize(ifExp.getOwnedCondition());
Node thenNode = conditionalExpressionSynthesizer.synthesize(ifExp.getOwnedThen());
Node elseNode = conditionalExpressionSynthesizer.synthesize(ifExp.getOwnedElse());
@@ -1419,7 +1419,7 @@ public abstract class ExpressionSynthesizer extends AbstractExtendingQVTbaseVisi
public @Nullable Node visitOperationCallExp(@NonNull OperationCallExp operationCallExp) {
boolean isRequired = !resultUtility.isConditional() || operationCallExp.isIsRequired();
if (!resultUtility.isConditional() && !isRequired) {
- return getExpressionSynthesizer(getConditionalUtility()).visitOperationCallExp(operationCallExp);
+ return getExpressionSynthesizer(resultUtility.getConditionalUtility()).visitOperationCallExp(operationCallExp);
}
OCLExpression ownedSource = operationCallExp.getOwnedSource();
if (ownedSource instanceof VariableExp) {
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/HeadNodeGroup.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/HeadNodeGroup.java
index f99db97f1..5774a163a 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/HeadNodeGroup.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/HeadNodeGroup.java
@@ -57,11 +57,11 @@ public abstract class HeadNodeGroup implements Nameable
private boolean accumulateReachableTargets(@NonNull Deque<@NonNull Node> workList) {
Node sourceNode = workList.removeFirst();
- assert sourceNode.isUnconditional2();
+ assert sourceNode.isUnconditional();
boolean gotOne = false;
for (@NonNull Edge source2targetEdge : QVTscheduleUtil.getOutgoingEdges(sourceNode)) {
Node targetNode = QVTscheduleUtil.getTargetNode(source2targetEdge);
- if (targetNode.isUnconditional2() && canBeSameGroup(sourceNode, source2targetEdge) && !uniqueNodes.contains(targetNode)) {
+ if (targetNode.isUnconditional() && canBeSameGroup(sourceNode, source2targetEdge) && !uniqueNodes.contains(targetNode)) {
if (source2targetEdge.isCast()) { // Can happen when analyzing traced heads
uniqueNodes.add(targetNode);
workList.add(targetNode);
@@ -83,7 +83,7 @@ public abstract class HeadNodeGroup implements Nameable
for (@NonNull Edge argumentEdge : QVTscheduleUtil.getIncomingEdges(targetNode)) {
if ((argumentEdge != source2targetEdge) && argumentEdge.isComputation()) {
Node argumentNode = QVTscheduleUtil.getSourceNode(argumentEdge);
- if (argumentNode.isUnconditional2()) {
+ if (argumentNode.isUnconditional()) {
if (!argumentNode.isConstant() && !uniqueNodes.contains(argumentNode)) {
allArgumentsReachable = false;
break;
@@ -103,7 +103,7 @@ public abstract class HeadNodeGroup implements Nameable
if (target2sourceEdge instanceof KeyPartEdge) { // FIXME KeyPartEdge is bidirectional
Node targetNode = QVTscheduleUtil.getSourceNode(target2sourceEdge);
uniqueNodes.add(targetNode);
- if (targetNode.isUnconditional2()) {
+ if (targetNode.isUnconditional()) {
workList.add(targetNode);
}
gotOne = true;
@@ -112,7 +112,7 @@ public abstract class HeadNodeGroup implements Nameable
Node targetNode = QVTscheduleUtil.getSourceNode(target2sourceEdge);
if (isNonTopWhen(targetNode)) {
uniqueNodes.add(targetNode);
- if (targetNode.isUnconditional2()) {
+ if (targetNode.isUnconditional()) {
workList.add(targetNode);
}
gotOne = true;
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/RuleHeadAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/RuleHeadAnalysis.java
index a0aa18ee8..cf22f60a6 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/RuleHeadAnalysis.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvtb2qvts/RuleHeadAnalysis.java
@@ -151,7 +151,7 @@ public class RuleHeadAnalysis extends HeadAnalysis
private @NonNull Map<@NonNull Node, @NonNull Set<@NonNull Node>> computeOldTargetFromSources() {
Map<@NonNull Node, @NonNull Set<@NonNull Node>> targetFromSources = new HashMap<>();
for (@NonNull Node targetNode : QVTscheduleUtil.getOwnedNodes(mappingRegion)) {
- if (targetNode.isUnconditional2() && !targetNode.isConstant() && !targetNode.isOperation()) { // Operations are traversed by derived head group analysis
+ if (targetNode.isUnconditional() && !targetNode.isConstant() && !targetNode.isOperation()) { // Operations are traversed by derived head group analysis
if (targetNode.isLoaded() || targetNode.isChecked()) {
Set<@NonNull Node> sources = Sets.newHashSet(targetNode);
targetFromSources.put(targetNode, sources);
@@ -159,7 +159,7 @@ public class RuleHeadAnalysis extends HeadAnalysis
if (edge instanceof NavigationEdge) {
if (!edge.isRealized() && !((NavigationEdge)edge).isPartial()) {
Node sourceNode = edge.getEdgeSource();
- if (sourceNode.isUnconditional2() && !sourceNode.isConstant() && !sourceNode.isOperation()) {
+ if (sourceNode.isUnconditional() && !sourceNode.isConstant() && !sourceNode.isOperation()) {
if (sourceNode.isLoaded() || sourceNode.isChecked()) {
sources.add(sourceNode);
}
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicPartition2Mapping.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicPartition2Mapping.java
index d1ac7b6ab..1fa809ed8 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicPartition2Mapping.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvti/BasicPartition2Mapping.java
@@ -156,7 +156,7 @@ public class BasicPartition2Mapping extends AbstractPartition2Mapping
assert targetCost != null;
for (@NonNull Edge edge : QVTscheduleUtil.getIncomingEdges(targetNode)) {
Role edgeRole = partition.getRole(edge);
- if ((edgeRole != null) && edgeRole.isOld() && edge.isUnconditional()) {
+ if ((edgeRole != null) && edgeRole.isOld() && !edge.isConditional()) {
Node sourceNode = QVTscheduleUtil.getSourceNode(edge);
Integer sourceCost = reachabilityForest.getCost(sourceNode);
assert sourceCost != null;
@@ -275,7 +275,7 @@ public class BasicPartition2Mapping extends AbstractPartition2Mapping
public void synthesize(@NonNull Iterable<@NonNull CheckedCondition> checkedConditions) {
for (@NonNull Edge edge : edgeSchedule) {
assert partition.getRole(edge) != null;;
- assert edge.isUnconditional();
+ assert !edge.isConditional();
Node sourceNode = QVTscheduleUtil.getSourceNode(edge);
assert !sourceNode.isConditional();
Role sourceNodeRole = partition.getRole(sourceNode);
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/checks/CheckedConditionAnalysis.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/checks/CheckedConditionAnalysis.java
index 62f1cc6a9..72d568102 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/checks/CheckedConditionAnalysis.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/checks/CheckedConditionAnalysis.java
@@ -387,7 +387,7 @@ public class CheckedConditionAnalysis
List<@NonNull Edge> oldEdges = new ArrayList<>();
for (@NonNull Edge edge : partition.getPartialEdges()) {
Role edgeRole = partition.getRole(edge);
- if ((edgeRole != null) && edgeRole.isOld() && edge.isUnconditional()) {
+ if ((edgeRole != null) && edgeRole.isOld() && !edge.isConditional()) {
Node sourceNode = QVTscheduleUtil.getSourceNode(edge);
Role sourceNodeRole = partition.getRole(sourceNode);
if ((sourceNodeRole != null) && sourceNodeRole.isOld()) {
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/merger/EdgeMerger.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/merger/EdgeMerger.java
index 07e66189d..fdb61731e 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/merger/EdgeMerger.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/merger/EdgeMerger.java
@@ -139,9 +139,9 @@ class EdgeMerger
return getPrimaryEdge().isOld(); // FIXME check all original edges
}
- public boolean isUnconditional() {
- return getPrimaryEdge().isUnconditional(); // FIXME check all original edges
- }
+ // public boolean isUnconditional() {
+ // return getPrimaryEdge().isUnconditional(); // FIXME check all original edges
+ // }
/**
* Return an originalEdge that is the same as mergedEdge or null if none.
diff --git a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/merger/NodeMerger.java b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/merger/NodeMerger.java
index e93a48b5c..19112d2b8 100644
--- a/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/merger/NodeMerger.java
+++ b/plugins/org.eclipse.qvtd.compiler/src/org/eclipse/qvtd/compiler/internal/qvts2qvts/merger/NodeMerger.java
@@ -173,6 +173,10 @@ class NodeMerger
return originalNodes.get(0);
}
+ // public boolean isConditional() {
+ // return getPrimaryNode().isConditional(); // FIXME check all original nodes
+ // }
+
public boolean isConstant() {
return getPrimaryNode().isConstant(); // FIXME check all original nodes
}
@@ -201,10 +205,6 @@ class NodeMerger
return getPrimaryNode().isRequired(); // FIXME check all original nodes
}
- public boolean isUnconditional() {
- return !getPrimaryNode().isConditional(); // FIXME check all original nodes
- }
-
public void removeIncomingEdgeMerger(@NonNull EdgeMerger edgeMerger, @NonNull NodeMerger sourceNodeMerger) {
List<@NonNull EdgeMerger> edgeMergers = getIncomingEdgeMergers(sourceNodeMerger);
boolean wasRemoved = edgeMergers.remove(edgeMerger);
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/Edge.java b/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/Edge.java
index ea9c9958c..298ac2c81 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/Edge.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/Edge.java
@@ -281,6 +281,11 @@ public interface Edge extends Element, org.eclipse.ocl.pivot.utilities.Nameable,
boolean isComputation();
/**
+ * Return true is this edge is a conditional part of a pattern.
+ */
+ boolean isConditional();
+
+ /**
* Return true if this edge conveys a compile-time constant.
*/
boolean isConstant();
@@ -370,12 +375,6 @@ public interface Edge extends Element, org.eclipse.ocl.pivot.utilities.Nameable,
*/
boolean isSuccess();
- /**
- * Return true is this edge is used as part of an unconditional navigation or computation.
- * i.e. it is not part of a loop or dependent upon if conditions.
- */
- boolean isUnconditional();
-
void setSource(@NonNull Node sourceNode);
void setTarget(@NonNull Node targetNode);
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/Node.java b/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/Node.java
index 8bee36010..45999059d 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/Node.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/Node.java
@@ -541,7 +541,7 @@ public interface Node extends Element, ConnectionEnd, org.eclipse.ocl.pivot.util
/**
* Return true if this node is an unconditional part of a pattern.
*/
- boolean isUnconditional2();
+ boolean isUnconditional();
// void removeOutgoingConnection(@NonNull NodeConnection connection);
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/EdgeImpl.java b/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/EdgeImpl.java
index d4f7c99f9..ab6b1e1b8 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/EdgeImpl.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/EdgeImpl.java
@@ -811,6 +811,11 @@ public abstract class EdgeImpl extends ElementImpl implements Edge {
}
@Override
+ public boolean isConditional() {
+ return QVTscheduleUtil.getSourceNode(this).isConditional() || QVTscheduleUtil.getTargetNode(this).isConditional();
+ }
+
+ @Override
public boolean isConstant() {
assert edgeRole != null;
return edgeRole == Role.CONSTANT;
@@ -836,7 +841,7 @@ public abstract class EdgeImpl extends ElementImpl implements Edge {
public final boolean isMatched() {
boolean matchedSource = QVTscheduleUtil.getSourceNode(this).isMatched();
boolean matchedTarget = QVTscheduleUtil.getTargetNode(this).isMatched();
- boolean utilityMatched = initUtility.isUnconditional2();
+ boolean utilityMatched = initUtility.isUnconditional();
return matchedSource && matchedTarget;
}
@@ -905,11 +910,6 @@ public abstract class EdgeImpl extends ElementImpl implements Edge {
return false;
}
- @Override
- public boolean isUnconditional() {
- return !QVTscheduleUtil.getSourceNode(this).isConditional() && !QVTscheduleUtil.getTargetNode(this).isConditional();
- }
-
protected void mergeRole(@NonNull Role edgeRole) {
if (this.edgeRole != edgeRole) {
assert this.edgeRole != null;
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/NodeImpl.java b/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/NodeImpl.java
index cefb41f22..e5b008558 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/NodeImpl.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/NodeImpl.java
@@ -1085,8 +1085,8 @@ public abstract class NodeImpl extends ElementImpl implements Node {
}
@Override
- public boolean isUnconditional2() {
- return initUtility.isUnconditional2();
+ public boolean isUnconditional() {
+ return initUtility.isUnconditional();
}
/* @Override
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtschedule/src/org/eclipse/qvtd/pivot/qvtschedule/utilities/InitUtility.java b/plugins/org.eclipse.qvtd.pivot.qvtschedule/src/org/eclipse/qvtd/pivot/qvtschedule/utilities/InitUtility.java
index e3ef33083..d79de97c0 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtschedule/src/org/eclipse/qvtd/pivot/qvtschedule/utilities/InitUtility.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtschedule/src/org/eclipse/qvtd/pivot/qvtschedule/utilities/InitUtility.java
@@ -62,15 +62,24 @@ public enum InitUtility {
throw new UnsupportedOperationException();
}
+ /**
+ * Return true for a conditional pattern usage.
+ */
public boolean isConditional() {
return (this == NON_NULL_CONDITIONAL) || (this == NULLABLE_CONDITIONAL);
}
+ /**
+ * Return true for a nullable pattern usage.
+ */
public boolean isNullable() {
return (this == InitUtility.NULLABLE_MATCHED) || (this == NULLABLE_CONDITIONAL);
}
- public boolean isUnconditional2() {
+ /**
+ * Return true for an unconditioknal pattern usage.
+ */
+ public boolean isUnconditional() {
return (this == InitUtility.NON_NULL_MATCHED) || (this == InitUtility.NULLABLE_MATCHED) || (this == TRACE) || (this == DISPATCH);
}
} \ No newline at end of file

Back to the top