[BUG]RBArrayNode(Object)>>doesNotUnderstand: #addParenthesis:

stéphane ducasse ducasse at iam.unibe.ch
Fri Mar 4 10:49:57 UTC 2005


romain could you publish incorporate the changes of ned in the RB 
squeaksource version and add
ned as maintainer?

Stef

On 3 mars 05, at 14:45, Romain Robbes wrote:

>
> Hi Ned and all,
>
> First of all, congratulations for your latest work on the RB. Having 
> the rewrite tool in Squeak is
> really nice.
>
> I just noticed a bug in the RB parser, which prevents it from working 
> on some
> code. For an unknown reason I ended up with an array using the brace 
> notation which was
> parenthesized, and this made the RBParser choke with the stack trace 
> attached.
>
> A sample expression reproducing this behavior is :
>
> RBParser parseExpression: ' ({1 @ 3. 3 @ 4}) halt '
>
> Cheers,
> 	Romain
>
> 3 March 2005 2:39:07 pm
>
> VM: Mac OS - a SmalltalkImage
> Image: Squeak3.8gamma [latest update: #6550]
>
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir HD:Users:romain:Squeak:sq:Squeak3.8g-6527
> Trusted Dir HD:Users:romain:Squeak:sq:Squeak3.8g-6527
> Untrusted Dir foobar:tooBar:forSqueak:bogus
>
> RBArrayNode(Object)>>doesNotUnderstand: #addParenthesis:
> 	Receiver: RBArrayNode({
> 	(SystemNavigation forPackage: r getPackageName) allCallsOn: r 
> getMessage.
> ...etc...
> 	Arguments and temporary variables:
> 		aMessage: 	addParenthesis: (306 to: 463)
> 	Receiver's instance variables:
> 		parent: 	nil
> 		comments: 	nil
> 		leftBrace: 	307
> 		rightBrace: 	462
> 		statements: 	an OrderedCollection(RBMessageNode((SystemNavigation 
> forPackage: r ...etc...
>
> RBParser>>parseParenthesizedExpression
> 	Receiver: a RBParser
> 	Arguments and temporary variables:
> 		leftParen: 	306
> 		node: 	RBArrayNode({
> 	(SystemNavigation forPackage: r getPackageName) allCallsO...etc...
> 	Receiver's instance variables:
> 		scanner: 	a RBScanner #()
> 		currentToken: 	 RBSpecialCharacterToken($))
> 		nextToken: 	nil
> 		emptyStatements: 	true
> 		negatedNumbers: 	true
> 		errorBlock: 	[] in Metaclass(Behavior)>>parseTreeFor: {[:aString 
> :pos | ^ nil]}
> 		tags: 	nil
> 		source: 	a Text for 'browseSendersPackageService
> 	^ (ToolService
> 		id: #SendersP...etc...
>
> RBParser>>parsePrimitiveObject
> 	Receiver: a RBParser
> 	Arguments and temporary variables:
>
> 	Receiver's instance variables:
> 		scanner: 	a RBScanner #()
> 		currentToken: 	 RBSpecialCharacterToken($))
> 		nextToken: 	nil
> 		emptyStatements: 	true
> 		negatedNumbers: 	true
> 		errorBlock: 	[] in Metaclass(Behavior)>>parseTreeFor: {[:aString 
> :pos | ^ nil]}
> 		tags: 	nil
> 		source: 	a Text for 'browseSendersPackageService
> 	^ (ToolService
> 		id: #SendersP...etc...
>
> RBParser>>parseUnaryMessage
> 	Receiver: a RBParser
> 	Arguments and temporary variables:
> 		node: 	nil
> 	Receiver's instance variables:
> 		scanner: 	a RBScanner #()
> 		currentToken: 	 RBSpecialCharacterToken($))
> 		nextToken: 	nil
> 		emptyStatements: 	true
> 		negatedNumbers: 	true
> 		errorBlock: 	[] in Metaclass(Behavior)>>parseTreeFor: {[:aString 
> :pos | ^ nil]}
> 		tags: 	nil
> 		source: 	a Text for 'browseSendersPackageService
> 	^ (ToolService
> 		id: #SendersP...etc...
>
>
> --- The full stack ---
> RBArrayNode(Object)>>doesNotUnderstand: #addParenthesis:
> RBParser>>parseParenthesizedExpression
> RBParser>>parsePrimitiveObject
> RBParser>>parseUnaryMessage
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> RBParser>>parseBinaryMessage
> RBParser>>parseKeywordMessageWith:
> RBParser>>parseKeywordMessage
> RBParser>>parseCascadeMessage
> RBParser>>parseAssignment
> RBParser>>parseStatementList:into:
> RBParser>>parseStatements:
> RBParser>>parseBlock
> RBParser>>parsePrimitiveObject
> RBParser>>parseUnaryMessage
> RBParser>>parseBinaryMessage
> RBParser>>parseKeywordMessageWith:
> RBParser>>parseKeywordMessage
> RBParser>>parseCascadeMessage
> RBParser>>parseAssignment
> RBParser>>parseParenthesizedExpression
> RBParser>>parsePrimitiveObject
> RBParser>>parseUnaryMessage
> RBParser>>parseBinaryMessage
> RBParser>>parseKeywordMessage
> RBParser>>parseCascadeMessage
> RBParser>>parseAssignment
> RBParser>>parseStatementList:into:
> RBParser>>parseStatements:
> RBParser>>parseMethod
> RBParser>>parseMethod:
> RBParser class>>parseMethod:onError:
> Metaclass(Behavior)>>parseTreeFor:
> [] in FinderTool>>searchFor:when: {[:currentClass :currentSelector |  
> searchClass := currentClass.  methodTree ...]}
> [] in SelectorEnvironment(BrowserEnvironment)>>classesAndSelectorsDo: 
> {[:sel | aBlock value: class value: sel]}
> [] in SelectorEnvironment>>selectorsForClass:do: {[:each | (aClass 
> includesSelector: each)   ifTrue: [aBlock value: each]]}
> Set>>do:
> SelectorEnvironment>>selectorsForClass:do:
> [] in SelectorEnvironment(BrowserEnvironment)>>classesAndSelectorsDo: 
> {[:class | self   selectorsForClass: class   do: [:sel | aBlock value: 
> class ...]}
> [] in SelectorEnvironment>>classesDo: {[:each |  class := Smalltalk    
>  at: each     ifAbsent: [].  class notNil   ...]}
> [] in IdentityDictionary(Dictionary)>>keysDo: {[:association | aBlock 
> value: association key]}
> IdentityDictionary(Set)>>do:
> IdentityDictionary(Dictionary)>>associationsDo:
> IdentityDictionary(Dictionary)>>keysDo:
> SelectorEnvironment>>classesDo:
> SelectorEnvironment(BrowserEnvironment)>>classesAndSelectorsDo:
> FinderTool>>searchFor:when:
> ...etc...
>
>




More information about the Squeak-dev mailing list