[squeak-dev] Refactoring Browser error

Levente Uzonyi leves at caesar.elte.hu
Sun Nov 4 23:35:38 UTC 2018



On Sun, 4 Nov 2018, Alistair Grant wrote:

> Hi All,
>
> If I attempt to execute the following:
>
> | rules |
>
> rules := RBParseTreeRewriter new.
>
> rules replace: 'state at: `@index put: `@expr' with: 'state at:
> `@index put: `@expr asC_unsigned_int'.

I presume the version you use doesn't support underscores in selectors.
Does it work if you use a selector with no underscores in it?
How did you load RB? Did you use the Metacello configuration? (it may 
not be up-to-date)

Levente

>
> (rules executeTree: (MD5Plugin parseTreeFor:
> #md5ProcessBuffer:withState:)) ifTrue:
> [rules tree newSource inspect].
> self error: 'parse tree rewrite failed'
>
>
> I get "Error: End of statement list encountered" (stack trace below).
> The same works and produces the expected output in Pharo 7.
>
> It looks like the Refactoring Browser has diverged quite a bit between
> Squeak and Pharo.
>
> Who looks after RB in Squeak, and is there a plan to keep in sync with
> Pharo, or the other way around, or should this be fixed independently?
>
> Thanks,
> Alistair
>
>
>
>
> 4 November 2018 8:01:29.599623 pm
>
> VM: unix - Smalltalk
> Image: Squeak5.3alpha [latest update: #18261]
>
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir /home/alistair/vmmaker/opensmalltalk-vm/sqvmm.03
> Trusted Dir /home/alistair/vmmaker/opensmalltalk-vm/sqvmm.03/secure
> Untrusted Dir /home/alistair/vmmaker/opensmalltalk-vm/sqvmm.03/My Squeak
>
> RBPatternParser(Object)>>error:
> Receiver: a RBPatternParser
> Arguments and temporary variables:
> aString: 'End of statement list encounted'
> Receiver's instance variables:
> scanner: a RBPatternScanner
> currentToken: RBShortAssignmentToken
> nextToken: nil
> errorBlock: nil
> source: 'state at: `@index put: `@expr asC_unsigned_int'
> comments: an OrderedCollection()
> pragmas: nil
>
> RBPatternParser(RBParser)>>parserError:
> Receiver: a RBPatternParser
> Arguments and temporary variables:
> aString: 'End of statement list encounted'
> Receiver's instance variables:
> scanner: a RBPatternScanner
> currentToken: RBShortAssignmentToken
> nextToken: nil
> errorBlock: nil
> source: 'state at: `@index put: `@expr asC_unsigned_int'
> comments: an OrderedCollection()
> pragmas: nil
>
> RBPatternParser(RBParser)>>parseStatementList:into:
> Receiver: a RBPatternParser
> Arguments and temporary variables:
> pragmaBoolean: false
> sequenceNode: RBSequenceNode()
> statements: an OrderedCollection(RBMessageNode(state at: `@index put:
> `@expr as...etc...
> return: true
> periods: an OrderedCollection()
> returnPosition: nil
> node: RBMessageNode(state at: `@index put: `@expr asC)
> Receiver's instance variables:
> scanner: a RBPatternScanner
> currentToken: RBShortAssignmentToken
> nextToken: nil
> errorBlock: nil
> source: 'state at: `@index put: `@expr asC_unsigned_int'
> comments: an OrderedCollection()
> pragmas: nil
>
> RBPatternParser(RBParser)>>parseStatements:
> Receiver: a RBPatternParser
> Arguments and temporary variables:
> pragmaBoolean: false
> args: #()
> leftBar: nil
> rightBar: nil
> Receiver's instance variables:
> scanner: a RBPatternScanner
> currentToken: RBShortAssignmentToken
> nextToken: nil
> errorBlock: nil
> source: 'state at: `@index put: `@expr asC_unsigned_int'
> comments: an OrderedCollection()
> pragmas: nil
>
> RBPatternParser(RBParser)>>parseExpression:
> Receiver: a RBPatternParser
> Arguments and temporary variables:
> aString: 'state at: `@index put: `@expr asC_unsigned_int'
> node: nil
> Receiver's instance variables:
> scanner: a RBPatternScanner
> currentToken: RBShortAssignmentToken
> nextToken: nil
> errorBlock: nil
> source: 'state at: `@index put: `@expr asC_unsigned_int'
> comments: an OrderedCollection()
> pragmas: nil
>
> RBPatternParser class(RBParser class)>>parseExpression:onError:
> Receiver: RBPatternParser
> Arguments and temporary variables:
> aString: 'state at: `@index put: `@expr asC_unsigned_int'
> aBlock: nil
> node: nil
> parser: a RBPatternParser
> Receiver's instance variables:
> superclass: RBParser
> methodDict: a MethodDictionary(#messageNodeClass->(RBPatternParser>>#messageNod...etc...
> format: 65543
> instanceVariables: nil
> organization: ('private-classes' messageNodeClass methodNodeClass
> pragmaNodeClass...etc...
> subclasses: nil
> name: #RBPatternParser
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'AST-Core-Parser'
>
> RBParser class>>parseRewriteExpression:onError:
> Receiver: RBParser
> Arguments and temporary variables:
> aString: 'state at: `@index put: `@expr asC_unsigned_int'
> aBlock: nil
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary(#addCommentsTo:->(RBParser>>#addCommentsTo:
> "a CompiledMethod...etc...
> format: 65543
> instanceVariables: #('scanner' 'currentToken' 'nextToken' 'errorBlock'
> 'source'...etc...
> organization: ('private' addCommentsTo: nextToken
> patchLiteralArrayToken patchLiteralMessage...etc...
> subclasses: {RBPatternParser}
> name: #RBParser
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'AST-Core-Parser'
>
> RBParser class>>parseRewriteExpression:
> Receiver: RBParser
> Arguments and temporary variables:
> aString: 'state at: `@index put: `@expr asC_unsigned_int'
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary(#addCommentsTo:->(RBParser>>#addCommentsTo:
> "a CompiledMethod...etc...
> format: 65543
> instanceVariables: #('scanner' 'currentToken' 'nextToken' 'errorBlock'
> 'source'...etc...
> organization: ('private' addCommentsTo: nextToken
> patchLiteralArrayToken patchLiteralMessage...etc...
> subclasses: {RBPatternParser}
> name: #RBParser
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'AST-Core-Parser'
>
> RBStringReplaceRule>>replaceString:
> Receiver: a RBStringReplaceRule
> Arguments and temporary variables:
> replaceString: 'state at: `@index put: `@expr asC_unsigned_int'
> Receiver's instance variables:
> searchTree: RBMessageNode(state at: `@index put: `@expr)
> owner: nil
> verificationBlock: [closure] in RBStringReplaceRule(RBReplaceRule)>>initialize
> replaceTree: nil
>
> RBStringReplaceRule>>searchFor:replaceWith:
> Receiver: a RBStringReplaceRule
> Arguments and temporary variables:
> searchString: 'state at: `@index put: `@expr'
> replaceString: 'state at: `@index put: `@expr asC_unsigned_int'
> Receiver's instance variables:
> searchTree: RBMessageNode(state at: `@index put: `@expr)
> owner: nil
> verificationBlock: [closure] in RBStringReplaceRule(RBReplaceRule)>>initialize
> replaceTree: nil
>
> RBStringReplaceRule class>>searchFor:replaceWith:
> Receiver: RBStringReplaceRule
> Arguments and temporary variables:
> searchString: 'state at: `@index put: `@expr'
> replaceString: 'state at: `@index put: `@expr asC_unsigned_int'
> Receiver's instance variables:
> superclass: RBReplaceRule
> methodDict: a MethodDictionary(#foundMatchFor:->(RBStringReplaceRule>>#foundMat...etc...
> format: 65540
> instanceVariables: #('replaceTree')
> organization: ('matching' foundMatchFor:)
> ('initialize-release' methodReplaceString:...etc...
> subclasses: nil
> name: #RBStringReplaceRule
> classPool: nil
> sharedPools: nil
> environment: Smalltalk
> category: #'AST-Core-Matching'
>
> RBParseTreeRewriter>>replace:with:
> Receiver: a RBParseTreeRewriter
> Arguments and temporary variables:
> searchString: 'state at: `@index put: `@expr'
> replaceString: 'state at: `@index put: `@expr asC_unsigned_int'
> Receiver's instance variables:
> searches: an OrderedCollection()
> answer: nil
> argumentSearches: an OrderedCollection()
> context: a RBSmallDictionary
> messages: nil
> tree: nil
>
> UndefinedObject>>DoIt
> Receiver: nil
> Arguments and temporary variables:
> rules: a RBParseTreeRewriter
> Receiver's instance variables:
> nil
>
>
> --- The full stack ---
> RBPatternParser(Object)>>error:
> RBPatternParser(RBParser)>>parserError:
> RBPatternParser(RBParser)>>parseStatementList:into:
> RBPatternParser(RBParser)>>parseStatements:
> RBPatternParser(RBParser)>>parseExpression:
> RBPatternParser class(RBParser class)>>parseExpression:onError:
> RBParser class>>parseRewriteExpression:onError:
> RBParser class>>parseRewriteExpression:
> RBStringReplaceRule>>replaceString:
> RBStringReplaceRule>>searchFor:replaceWith:
> RBStringReplaceRule class>>searchFor:replaceWith:
> RBParseTreeRewriter>>replace:with:
> UndefinedObject>>DoIt


More information about the Squeak-dev mailing list