Skip to content

Commit

Permalink
Forbid the usage of | and & and add test for message sends
Browse files Browse the repository at this point in the history
  • Loading branch information
Hernán Morales Durand committed Jan 5, 2023
1 parent 521f055 commit 7761603
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 10 deletions.
11 changes: 4 additions & 7 deletions smalltalksrc/Slang-Tests/SlangBasicTranslationTest.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -2039,15 +2039,14 @@ SlangBasicTranslationTest >> testSendAllMask [
{ #category : #'tests-builtins' }
SlangBasicTranslationTest >> testSendAnd [
| translation send |
| send |
send := TSendNode new
setSelector: #&
receiver: (TConstantNode value: false)
arguments: { TConstantNode value: true }.
translation := self translate: send.
self should: [ self translate: send ] raise: TranslationError.
self assert: translation equals: '0 && 1'
]
{ #category : #'tests-builtins' }
Expand Down Expand Up @@ -4649,15 +4648,13 @@ SlangBasicTranslationTest >> testSendNotNil [
{ #category : #'tests-builtins' }
SlangBasicTranslationTest >> testSendOr [
| translation send |
| send |
send := TSendNode new
setSelector: #|
receiver: (TConstantNode value: 0)
arguments: { TConstantNode value: 1 }.
translation := self translate: send.
self assert: translation equals: '0 || 1'
self should: [ self translate: send ] raise: TranslationError.
]
{ #category : #'tests-builtins' }
Expand Down
10 changes: 8 additions & 2 deletions smalltalksrc/Slang/CCodeGenerator.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -1367,6 +1367,12 @@ CCodeGenerator >> fileHeaderVersionStampForSourceClass: sourceClass [
s cr]]
]
{ #category : #accessing }
CCodeGenerator >> forbiddenSelector: aTSendNode [
TranslationError signal: 'We should not use ' , aTSendNode selector.
]
{ #category : #'CAST translation' }
CCodeGenerator >> generateCASTAbs: tast [
Expand Down Expand Up @@ -3086,8 +3092,8 @@ CCodeGenerator >> initializeCASTTranslationDictionary [
castTranslationDict := Dictionary new: 200.
pairs := #(
#& #generateCASTAnd:
#| #generateCASTOr:
#& #forbiddenSelector:
#| #forbiddenSelector:
#abs #generateCASTAbs:
#and: #generateCASTSequentialAnd:
#or: #generateCASTSequentialOr:
Expand Down
5 changes: 5 additions & 0 deletions smalltalksrc/Slang/TranslationError.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Class {
#name : #TranslationError,
#superclass : #Error,
#category : #Slang
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ Extension { #name : #SlangBasicTranslationTest }
SlangBasicTranslationTest >> setUp [

super setUp.

generator := MLVMCCodeGenerator new.
generator vmMaker: VMMaker new.
generator vmMaker vmmakerConfiguration: VMMakerConfiguration.
Expand Down

0 comments on commit 7761603

Please sign in to comment.