Skip to content

Commit

Permalink
fix precedence computation
Browse files Browse the repository at this point in the history
  • Loading branch information
pavel-krivanek committed May 5, 2024
1 parent 7edd8e7 commit f6b3977
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
24 changes: 24 additions & 0 deletions src/Collections-Strings-Tests/SymbolTest.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,30 @@ SymbolTest >> testNumArgsUnary [
self assert: '123name' numArgs equals: -1
]

{ #category : 'tests' }
SymbolTest >> testPrecedence [
self assert: #x precedence equals: 1.
self assert: #abs precedence equals: 1.
self assert: #_abs precedence equals: 1.

self assert: #+ precedence equals: 2.
self assert: #+- precedence equals: 2.
self assert: #>>> precedence equals: 2.

self assert: #x: precedence equals: 3.
self assert: #abs: precedence equals: 3.
self assert: #_abs: precedence equals: 3.

self assert: #x:y: precedence equals: 3.
self assert: #abs:y: precedence equals: 3.
self assert: #_abs:y: precedence equals: 3.

self assert: #'0' precedence equals: 0.
self assert: #'.' precedence equals: 0.
self assert: #':' precedence equals: 0.

]

{ #category : 'tests' }
SymbolTest >> testPrintOn [

Expand Down
7 changes: 6 additions & 1 deletion src/Collections-Strings/Symbol.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -509,7 +509,12 @@ Symbol >> precedence [
2 for binary and 3 for keyword selectors."

self size = 0 ifTrue: [^ 0].
(self first isLetter or: [ self first = $_ ]) ifFalse: [^ 2].
(self first isLetter or: [ self first = $_ ]) ifFalse: [
| special |
special := Character specialCharacters.
^ (self allSatisfy: [ :char | special includes: char ])
ifTrue: [ 2 ]
ifFalse: [ 0 ] ].
self last = $: ifTrue: [^ 3].
^ 1
]
Expand Down

0 comments on commit f6b3977

Please sign in to comment.