Skip to content

Commit

Permalink
throw error with conflicting API methods
Browse files Browse the repository at this point in the history
  • Loading branch information
ivojawer committed Jun 29, 2023
1 parent a830705 commit 7c28f4e
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 1 deletion.
10 changes: 10 additions & 0 deletions smalltalksrc/Slang-Tests/SlangBasicTranslationTest.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,16 @@ SlangBasicTranslationTest >> shouldGenerateDeadCode [
^ true
]

{ #category : #'tests-method' }
SlangBasicTranslationTest >> testApiMethodsWithConflictingName [

generator addClass: SlangConflictingApiTestClass.

self should: [generator renameConflictingMethods] raise: TranslationError.


]

{ #category : #'tests-blocks' }
SlangBasicTranslationTest >> testAssignBlockValueValueValue [

Expand Down
37 changes: 37 additions & 0 deletions smalltalksrc/Slang-Tests/SlangConflictingApiTestClass.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
Class {
#name : #SlangConflictingApiTestClass,
#superclass : #SlangClass,
#category : #'Slang-Tests'
}

{ #category : #accessing }
SlangConflictingApiTestClass class >> initializationOptions [

^ nil
]

{ #category : #accessing }
SlangConflictingApiTestClass class >> interpreterClass [

^ nil
]

{ #category : #accessing }
SlangConflictingApiTestClass class >> objectMemoryClass [

^ nil
]

{ #category : #accessing }
SlangConflictingApiTestClass >> main [

<api>

]

{ #category : #accessing }
SlangConflictingApiTestClass >> main: arg1 [

<api>

]
5 changes: 5 additions & 0 deletions smalltalksrc/Slang/CCodeGenerator.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -4433,6 +4433,11 @@ CCodeGenerator >> renameConflictingMethods [
toRename := cFunctionNames select: [ :conflicts | conflicts size > 1 ].
toRename keysDo: [ :key |
|conflictingMethods|
conflictingMethods := toRename at: key.
((conflictingMethods select: [:m | m isAPIMethod ]) size > 1 ) ifTrue: [TranslationError signal: 'Conflicting API methods with name "', key, '"' ].
(toRename at: key) do: [ :method |
method isStructAccessor ifFalse: [
self
Expand Down
2 changes: 1 addition & 1 deletion smalltalksrc/Slang/TMethod.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -3300,7 +3300,7 @@ TMethod >> validateVariableDeclarationExists: aVariableName [

| shouldCheckVariable |
shouldCheckVariable := (aVariableName beginsWithAnyOf:
#( #self #cascade #toDoLimit )) not.
#( #self #cascade #toDoLimit #std )) not.

(shouldCheckVariable and: [
(self declaresVariableWithName: aVariableName) not]) ifTrue: [
Expand Down

0 comments on commit 7c28f4e

Please sign in to comment.