Skip to content

Commit 0349fcb

Browse files
authored
Updated clone detection
1 parent 035f3fe commit 0349fcb

File tree

4 files changed

+12
-6
lines changed

4 files changed

+12
-6
lines changed

BehaviouralFeature.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2762,13 +2762,15 @@ public Expression determinate(Vector arguments)
27622762
}
27632763

27642764
public boolean parametersMatch(Vector pars)
2765-
{ if (pars.size() == parameters.size())
2765+
{ if (pars == null || parameters == null) { return false; }
2766+
if (pars.size() == parameters.size())
27662767
{ return true; }
27672768
return false;
27682769
} // and check the types
27692770

27702771
public boolean parameterMatch(Vector pars)
2771-
{ if (pars.size() != parameters.size())
2772+
{ if (pars == null || parameters == null) { return false; }
2773+
if (pars.size() != parameters.size())
27722774
{ return false; }
27732775
for (int i = 0; i < parameters.size(); i++)
27742776
{ Attribute par = (Attribute) parameters.get(i);
@@ -2782,7 +2784,8 @@ public boolean parameterMatch(Vector pars)
27822784
} // and check the types
27832785

27842786
public void setFormalParameters(Vector pars)
2785-
{ for (int i = 0; i < parameters.size() && i < pars.size(); i++)
2787+
{ if (pars == null || parameters == null) { return; }
2788+
for (int i = 0; i < parameters.size() && i < pars.size(); i++)
27862789
{ Attribute par = (Attribute) parameters.get(i);
27872790
Expression arg = (Expression) pars.get(i);
27882791
arg.formalParameter = par;
@@ -2791,8 +2794,9 @@ public void setFormalParameters(Vector pars)
27912794

27922795
public Expression substituteParameters(Expression e, Vector arguments)
27932796
{ if (e == null)
2794-
{ return new BasicExpression(true); }
2797+
{ return new BasicExpression(true); }
27952798
Expression res = (Expression) e.clone();
2799+
if (parameters == null) { return res; }
27962800
for (int i = 0; i < parameters.size(); i++)
27972801
{ if (i < arguments.size())
27982802
{ Expression arg = (Expression) arguments.get(i);
@@ -2805,8 +2809,9 @@ public Expression substituteParameters(Expression e, Vector arguments)
28052809

28062810
public Expression substituteParametersPre(Vector arguments)
28072811
{ if (pre == null)
2808-
{ return new BasicExpression(true); }
2812+
{ return new BasicExpression(true); }
28092813
Expression res = (Expression) pre.clone();
2814+
if (parameters == null) { return res; }
28102815
for (int i = 0; i < parameters.size(); i++)
28112816
{ if (i < arguments.size())
28122817
{ Expression arg = (Expression) arguments.get(i);
@@ -6740,8 +6745,9 @@ else if (entity != null && entity.hasFeature(be.left + ""))
67406745
else // declare it
67416746
{ Type t = be.left.getType();
67426747
JOptionPane.showMessageDialog(null,
6743-
"Declaring new local variable " + be.left + " in:\n" + this,
6748+
"Declaring new local variable " + be.left + " : " + t + " in:\n" + this,
67446749
"Implicit variable declaration", JOptionPane.INFORMATION_MESSAGE);
6750+
if (t == null) { t = new Type("OclAny", null); }
67456751
CreationStatement cs = new CreationStatement(t.getJava(), be.left + "");
67466752
cs.setInstanceType(t);
67476753
cs.setElementType(t.getElementType());

cg (3).zip

5 Bytes
Binary file not shown.

libraries (2).zip

2.31 KB
Binary file not shown.

umlrsds.jar

559 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)