diff -r fdccb7651d2e -r 447ead9f870c Method.st --- a/Method.st Tue Oct 31 14:18:25 1995 +0100 +++ b/Method.st Tue Oct 31 15:36:06 1995 +0100 @@ -23,7 +23,7 @@ COPYRIGHT (c) 1989 by Claus Gittinger All Rights Reserved -$Header: /cvs/stx/stx/libbasic/Method.st,v 1.51 1995-10-24 15:59:25 cg Exp $ +$Header: /cvs/stx/stx/libbasic/Method.st,v 1.52 1995-10-31 14:36:06 cg Exp $ '! !Method class methodsFor:'documentation'! @@ -44,7 +44,7 @@ version " -$Header: /cvs/stx/stx/libbasic/Method.st,v 1.51 1995-10-24 15:59:25 cg Exp $ +$Header: /cvs/stx/stx/libbasic/Method.st,v 1.52 1995-10-31 14:36:06 cg Exp $ " ! @@ -844,46 +844,64 @@ "return a collection with the methods argument names. Uses Parser to parse methods source and extract the names." - ^ self parse:#parseMethodSpecification: return:#methodArgs or:nil + ^ self parse:#'parseMethodSpecificationSilent:' return:#methodArgs or:nil " (Method compiledMethodAt:#printOn:) methodArgNames " + + "Modified: 31.10.1995 / 14:36:46 / cg" ! methodVarNames "return a collection with the methods local-variable names. Uses Parser to parse methods source and extract the names." - ^ self parse:#parseMethodArgAndVarSpecification: return:#methodVars or:nil + ^ self parse:#'parseMethodArgAndVarSpecificationSilent:' return:#methodVars or:nil " (Method compiledMethodAt:#printOn:) methodVarNames " + + "Modified: 31.10.1995 / 14:36:49 / cg" ! hasPrimitiveCode "return true, if the method contains primitive code; false if not. Uses Parser to parse methods source and get the information." - ^ self parse:#parseMethod: return:#hasPrimitiveCode or:false + |src| + + src := self source. + src notNil ifTrue:[ + (src includesString:'%{' ) ifFalse:[ + "/ cannot contain primitive code. + ^ false + ] + ]. + ^ self parse:#'parseMethodSilent:' return:#hasPrimitiveCode or:false " (Method compiledMethodAt:#hasPrimitiveCode) hasPrimitiveCode (Object compiledMethodAt:#at:) hasPrimitiveCode (Object compiledMethodAt:#basicAt:) hasPrimitiveCode " + + "Modified: 31.10.1995 / 14:43:37 / cg" ! methodArgAndVarNames "return a collection with the methods argument and variable names. - Uses Parser to parse methods source and extract the names." + Uses Parser to parse methods source and extract the names. + Returns nil if the source is not available, or some other + syntax/parse error occurred. For methods with no args and no vars, + an empty collection is returned." |parser sourceString argNames varNames| sourceString := self source. sourceString notNil ifTrue:[ - parser := Parser parseMethodArgAndVarSpecification:sourceString. + parser := Parser parseMethodArgAndVarSpecificationSilent:sourceString. (parser isNil or:[parser == #Error]) ifTrue:[^ nil]. argNames := parser methodArgs. varNames := parser methodVars.