File tree Expand file tree Collapse file tree 2 files changed +11
-2
lines changed Expand file tree Collapse file tree 2 files changed +11
-2
lines changed Original file line number Diff line number Diff line change 2727import java .util .ArrayList ;
2828import java .util .List ;
2929
30+ import som .compiler .Parser .ParseError ;
3031import som .vm .Universe ;
3132import som .vmobjects .SArray ;
3233import som .vmobjects .SClass ;
@@ -76,7 +77,15 @@ public void setClassFieldsOfSuper(final SArray fieldNames) {
7677 }
7778 }
7879
79- public void addMethod (final som .vmobjects .SInvokable meth ) {
80+ public void addMethod (final som .vmobjects .SInvokable meth , final Parser parser ) throws ParseError {
81+ List <SInvokable > methods = classSide ? classMethods : instanceMethods ;
82+
83+ for (SInvokable i : methods ) {
84+ if (i .getSignature () == meth .getSignature ()) {
85+ String msg = "A method with name " + meth .getSignature ().getEmbeddedString () + " is already declared in " + name .getEmbeddedString ();
86+ throw new ParseError (msg , Symbol .NONE , parser );
87+ }
88+ }
8089 if (classSide ) {
8190 classMethods .add (meth );
8291 } else {
Original file line number Diff line number Diff line change @@ -219,7 +219,7 @@ private void classBody() throws ProgramDefinitionError {
219219 mgenc .addArgument ("self" );
220220
221221 method (mgenc );
222- cgenc .addMethod (mgenc .assemble (universe ));
222+ cgenc .addMethod (mgenc .assemble (universe ), this );
223223 }
224224 }
225225
You can’t perform that action at this time.
0 commit comments