[Nice-commit] Nice/src/bossa/syntax niceMethod.nice,1.21,1.22
Brought to you by:
bonniot
|
From: Daniel B. <bo...@us...> - 2005-03-08 10:11:38
|
Update of /cvsroot/nice/Nice/src/bossa/syntax In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11694/src/bossa/syntax Modified Files: niceMethod.nice Log Message: Further refactoring for simplification. Index: niceMethod.nice =================================================================== RCS file: /cvsroot/nice/Nice/src/bossa/syntax/niceMethod.nice,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** niceMethod.nice 8 Mar 2005 09:48:54 -0000 1.21 --- niceMethod.nice 8 Mar 2005 10:11:09 -0000 1.22 *************** *** 91,95 **** return; ! mlsub.typing.Domain ourDomain = nice.tools.typing.Types.domain(this.getType()); for (s : notNull(homonyms)) --- 91,95 ---- return; ! let ourDomain = nice.tools.typing.Types.domain(this.getType()); for (s : notNull(homonyms)) *************** *** 105,109 **** continue; ! mlsub.typing.Domain itsDomain = nice.tools.typing.Types.domain(s.getType()); // Do we have a smaller domain? --- 105,109 ---- continue; ! let itsDomain = nice.tools.typing.Types.domain(s.getType()); // Do we have a smaller domain? *************** *** 118,126 **** { if (! nice.tools.typing.Types.covariantSpecialization(s.getType(), this.getType())) ! User.error ! (returnTypeLocation!=null ? returnTypeLocation : this.location(), ! "The return type should be less precise than the return type of method\n" + ! d + "\ndefined in:\n" + ! d.location()); // d is a specialized version of this. --- 118,122 ---- { if (! nice.tools.typing.Types.covariantSpecialization(s.getType(), this.getType())) ! this.reportReturnTypeError(shouldBeLess: true, than: d); // d is a specialized version of this. *************** *** 147,150 **** --- 143,158 ---- } + private UserError reportReturnTypeError + (boolean shouldBeLess, MethodDeclaration than) + { + let message = shouldBeLess ? + "This return type should be less precise than the return type of method" : + "This return type is less precise than the original return type of method"; + + return User.error + (returnTypeLocation != null ? returnTypeLocation : this.location(), + message + "\n" than "\ndefined in:\n" + than.location()); + } + /** Return true if the override of d by this is OK. Return false if the override should be ignored. *************** *** 155,165 **** { if (! nice.tools.typing.Types.covariantSpecialization(this.getType(), s.getType())) ! { ! User.error ! (returnTypeLocation != null ? returnTypeLocation : this.location(), ! "The return type is less precise than the original return type of method\n" + ! d + "\ndefined in:\n" + ! d.location()); ! } // Check if we are a proper specialization, or if we actually have --- 163,167 ---- { if (! nice.tools.typing.Types.covariantSpecialization(this.getType(), s.getType())) ! this.reportReturnTypeError(shouldBeLess: false, than: d); // Check if we are a proper specialization, or if we actually have |