Skip to content

Commit fb63289

Browse files
committed
Manage delete statement
1 parent 8542fa6 commit fb63289

14 files changed

Lines changed: 173 additions & 10 deletions

‎src/FAST-Python-Model-Generator/FASTPythonMetamodelGenerator.class.st‎

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ FASTPythonMetamodelGenerator >> defineClasses [
203203
decoratedDefinition := builder ensureClassNamed: #DecoratedDefinition."Todo"
204204
decorator := builder ensureClassNamed: #Decorator."Todo"
205205
defaultParameter := builder ensureClassNamed: #DefaultParameter."Todo"
206-
deleteStatement := builder ensureClassNamed: #DeleteStatement."Todo"
206+
deleteStatement := builder ensureClassNamed: #DeleteStatement.
207207
dictPattern := builder ensureClassNamed: #DictPattern."Todo"
208208
dictionary := builder ensureClassNamed: #Dictionary."To Review"
209209
dictionaryComprehension := builder ensureClassNamed: #DictionaryComprehension."Todo"
@@ -337,6 +337,8 @@ FASTPythonMetamodelGenerator >> defineHierarchy [
337337

338338
comparisonOperator --|> operator.
339339

340+
deleteStatement --|> tStatement.
341+
340342
expression --|> tExpression.
341343

342344
self flag: #todo. "I am not sure this should be the case but the importer is too young and we need this to not have everything breaking."
@@ -421,6 +423,12 @@ FASTPythonMetamodelGenerator >> defineRelations [
421423

422424
(entity property: #genericChildren) <>-* (entity property: #genericParent).
423425

426+
((assertStatement property: #expression) comment: 'The expression asserted')
427+
<>- ((tExpression property: #assertOwner) comment: 'The assert statement that own the expression (if it''s the case)').
428+
429+
((deleteStatement property: #expression) comment: 'The expression to apply the delete on')
430+
<>- ((tExpression property: #deleteOwner) comment: 'The delete statement that own the expression (if it''s the case)').
431+
424432
((comparisonOperator property: #operands) comment:
425433
'List of the operands of the comparison operands. For example if we have `a == b != c`, it will be a, b and c.')
426434
<>-* ((tExpression property: #parentComparisonOperator) comment: 'Parent comparison expression of which I am.').
@@ -435,9 +443,6 @@ FASTPythonMetamodelGenerator >> defineRelations [
435443
((collectionInitializer property: #initializers) comment: 'Each initializer defines one element.')
436444
<>-* ((tExpression property: #collectionInitializer) comment: 'The owner of the expression').
437445

438-
((assertStatement property: #expression) comment: 'The expression asserted')
439-
<>- ((tExpression property: #assertOwner) comment: 'The assert statement that own the expression (if it''s the case)').
440-
441446
((tUnaryOperator property: #argument) comment: 'Expression influanced by the unary operator..')
442447
<>- ((tExpression property: #parentUnaryOperator) comment: 'Parent unary operator in which I am.')
443448
]

‎src/FAST-Python-Model/FASTPyAssignment.class.st‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
| `assertOwner` | `FASTTExpression` | `expression` | `FASTPyAssertStatement` | The assert statement that own the expression (if it's the case)|
1010
| `assignedIn` | `FASTTExpression` | `expression` | `FASTTAssignment` | Optional assignment where this expression is used|
1111
| `collectionInitializer` | `FASTTExpression` | `initializers` | `FASTPyCollectionInitializer` | The owner of the expression|
12+
| `deleteOwner` | `FASTTExpression` | `expression` | `FASTPyDeleteStatement` | The delete statement that own the expression (if it's the case)|
1213
| `expressionStatementOwner` | `FASTTExpression` | `expression` | `FASTTExpressionStatement` | The expression statement that own me (if it's the case|
1314
| `parentComparisonOperator` | `FASTTExpression` | `operands` | `FASTPyComparisonOperator` | Parent comparison expression of which I am.|
1415
| `parentConditionalStatement` | `FASTTExpression` | `condition` | `FASTTConditionalStatement` | Optional condition statement where this expression is used|

‎src/FAST-Python-Model/FASTPyBinaryOperator.class.st‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
| `assertOwner` | `FASTTExpression` | `expression` | `FASTPyAssertStatement` | The assert statement that own the expression (if it's the case)|
1010
| `assignedIn` | `FASTTExpression` | `expression` | `FASTTAssignment` | Optional assignment where this expression is used|
1111
| `collectionInitializer` | `FASTTExpression` | `initializers` | `FASTPyCollectionInitializer` | The owner of the expression|
12+
| `deleteOwner` | `FASTTExpression` | `expression` | `FASTPyDeleteStatement` | The delete statement that own the expression (if it's the case)|
1213
| `expressionStatementOwner` | `FASTTExpression` | `expression` | `FASTTExpressionStatement` | The expression statement that own me (if it's the case|
1314
| `parentComparisonOperator` | `FASTTExpression` | `operands` | `FASTPyComparisonOperator` | Parent comparison expression of which I am.|
1415
| `parentConditionalStatement` | `FASTTExpression` | `condition` | `FASTTConditionalStatement` | Optional condition statement where this expression is used|

‎src/FAST-Python-Model/FASTPyBoolean.class.st‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
| `assertOwner` | `FASTTExpression` | `expression` | `FASTPyAssertStatement` | The assert statement that own the expression (if it's the case)|
1010
| `assignedIn` | `FASTTExpression` | `expression` | `FASTTAssignment` | Optional assignment where this expression is used|
1111
| `collectionInitializer` | `FASTTExpression` | `initializers` | `FASTPyCollectionInitializer` | The owner of the expression|
12+
| `deleteOwner` | `FASTTExpression` | `expression` | `FASTPyDeleteStatement` | The delete statement that own the expression (if it's the case)|
1213
| `expressionStatementOwner` | `FASTTExpression` | `expression` | `FASTTExpressionStatement` | The expression statement that own me (if it's the case|
1314
| `parentComparisonOperator` | `FASTTExpression` | `operands` | `FASTPyComparisonOperator` | Parent comparison expression of which I am.|
1415
| `parentConditionalStatement` | `FASTTExpression` | `condition` | `FASTTConditionalStatement` | Optional condition statement where this expression is used|

‎src/FAST-Python-Model/FASTPyBooleanOperator.class.st‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
| `assertOwner` | `FASTTExpression` | `expression` | `FASTPyAssertStatement` | The assert statement that own the expression (if it's the case)|
1010
| `assignedIn` | `FASTTExpression` | `expression` | `FASTTAssignment` | Optional assignment where this expression is used|
1111
| `collectionInitializer` | `FASTTExpression` | `initializers` | `FASTPyCollectionInitializer` | The owner of the expression|
12+
| `deleteOwner` | `FASTTExpression` | `expression` | `FASTPyDeleteStatement` | The delete statement that own the expression (if it's the case)|
1213
| `expressionStatementOwner` | `FASTTExpression` | `expression` | `FASTTExpressionStatement` | The expression statement that own me (if it's the case|
1314
| `parentComparisonOperator` | `FASTTExpression` | `operands` | `FASTPyComparisonOperator` | Parent comparison expression of which I am.|
1415
| `parentConditionalStatement` | `FASTTExpression` | `condition` | `FASTTConditionalStatement` | Optional condition statement where this expression is used|

‎src/FAST-Python-Model/FASTPyCall.class.st‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
| `assertOwner` | `FASTTExpression` | `expression` | `FASTPyAssertStatement` | The assert statement that own the expression (if it's the case)|
1010
| `assignedIn` | `FASTTExpression` | `expression` | `FASTTAssignment` | Optional assignment where this expression is used|
1111
| `collectionInitializer` | `FASTTExpression` | `initializers` | `FASTPyCollectionInitializer` | The owner of the expression|
12+
| `deleteOwner` | `FASTTExpression` | `expression` | `FASTPyDeleteStatement` | The delete statement that own the expression (if it's the case)|
1213
| `expressionStatementOwner` | `FASTTExpression` | `expression` | `FASTTExpressionStatement` | The expression statement that own me (if it's the case|
1314
| `parentComparisonOperator` | `FASTTExpression` | `operands` | `FASTPyComparisonOperator` | Parent comparison expression of which I am.|
1415
| `parentConditionalStatement` | `FASTTExpression` | `condition` | `FASTTConditionalStatement` | Optional condition statement where this expression is used|

‎src/FAST-Python-Model/FASTPyDeleteStatement.class.st‎

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,33 @@
1+
"
2+
## Relations
3+
======================
4+
5+
### Parents
6+
| Relation | Origin | Opposite | Type | Comment |
7+
|---|
8+
| `parentLoopStatement` | `FASTTStatement` | `body` | `FASTTLoopStatement` | Optional loop of which this statement is the body|
9+
| `statementContainer` | `FASTTStatement` | `statements` | `FASTTStatementBlock` | Block containing this statement.|
10+
11+
### Children
12+
| Relation | Origin | Opposite | Type | Comment |
13+
|---|
14+
| `expression` | `FASTPyDeleteStatement` | `deleteOwner` | `FASTTExpression` | The expression to apply the delete on|
15+
16+
17+
## Properties
18+
======================
19+
20+
| Name | Type | Default value | Comment |
21+
|---|
22+
| `endPos` | `Number` | nil | |
23+
| `startPos` | `Number` | nil | |
24+
25+
"
126
Class {
227
#name : 'FASTPyDeleteStatement',
328
#superclass : 'FASTPyEntity',
29+
#traits : 'FASTTStatement',
30+
#classTraits : 'FASTTStatement classTrait',
431
#category : 'FAST-Python-Model-Entities',
532
#package : 'FAST-Python-Model',
633
#tag : 'Entities'
@@ -14,3 +41,34 @@ FASTPyDeleteStatement class >> annotation [
1441
<generated>
1542
^ self
1643
]
44+
45+
{ #category : 'accessing' }
46+
FASTPyDeleteStatement >> expression [
47+
"Relation named: #expression type: #FASTTExpression opposite: #deleteOwner"
48+
49+
<generated>
50+
<FMComment: 'The expression to apply the delete on'>
51+
<FMProperty: #expression type: #FASTTExpression opposite: #deleteOwner>
52+
^ self attributeAt: #expression ifAbsent: [ nil ]
53+
]
54+
55+
{ #category : 'accessing' }
56+
FASTPyDeleteStatement >> expression: anObject [
57+
58+
<generated>
59+
(self attributeAt: #expression ifAbsentPut: [nil]) == anObject ifTrue: [ ^ anObject ].
60+
anObject ifNil: [ | otherSide |
61+
otherSide := self expression.
62+
self attributeAt: #expression put: anObject.
63+
otherSide deleteOwner: nil ]
64+
ifNotNil: [
65+
self attributeAt: #expression put: anObject.
66+
anObject deleteOwner: self ]
67+
]
68+
69+
{ #category : 'navigation' }
70+
FASTPyDeleteStatement >> expressionGroup [
71+
<generated>
72+
<navigation: 'Expression'>
73+
^ MooseSpecializedGroup with: self expression
74+
]

‎src/FAST-Python-Model/FASTPyEntity.class.st‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
| `assertOwner` | `FASTTExpression` | `expression` | `FASTPyAssertStatement` | The assert statement that own the expression (if it's the case)|
1010
| `assignedIn` | `FASTTExpression` | `expression` | `FASTTAssignment` | Optional assignment where this expression is used|
1111
| `collectionInitializer` | `FASTTExpression` | `initializers` | `FASTPyCollectionInitializer` | The owner of the expression|
12+
| `deleteOwner` | `FASTTExpression` | `expression` | `FASTPyDeleteStatement` | The delete statement that own the expression (if it's the case)|
1213
| `expressionStatementOwner` | `FASTTExpression` | `expression` | `FASTTExpressionStatement` | The expression statement that own me (if it's the case|
1314
| `genericParent` | `FASTPyEntity` | `genericChildren` | `FASTPyEntity` | |
1415
| `parentComparisonOperator` | `FASTTExpression` | `operands` | `FASTPyComparisonOperator` | Parent comparison expression of which I am.|

‎src/FAST-Python-Model/FASTPyExpression.class.st‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
| `assertOwner` | `FASTTExpression` | `expression` | `FASTPyAssertStatement` | The assert statement that own the expression (if it's the case)|
1010
| `assignedIn` | `FASTTExpression` | `expression` | `FASTTAssignment` | Optional assignment where this expression is used|
1111
| `collectionInitializer` | `FASTTExpression` | `initializers` | `FASTPyCollectionInitializer` | The owner of the expression|
12+
| `deleteOwner` | `FASTTExpression` | `expression` | `FASTPyDeleteStatement` | The delete statement that own the expression (if it's the case)|
1213
| `expressionStatementOwner` | `FASTTExpression` | `expression` | `FASTTExpressionStatement` | The expression statement that own me (if it's the case|
1314
| `parentComparisonOperator` | `FASTTExpression` | `operands` | `FASTPyComparisonOperator` | Parent comparison expression of which I am.|
1415
| `parentConditionalStatement` | `FASTTExpression` | `condition` | `FASTTConditionalStatement` | Optional condition statement where this expression is used|

‎src/FAST-Python-Model/FASTPyLiteral.class.st‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
| `assertOwner` | `FASTTExpression` | `expression` | `FASTPyAssertStatement` | The assert statement that own the expression (if it's the case)|
1010
| `assignedIn` | `FASTTExpression` | `expression` | `FASTTAssignment` | Optional assignment where this expression is used|
1111
| `collectionInitializer` | `FASTTExpression` | `initializers` | `FASTPyCollectionInitializer` | The owner of the expression|
12+
| `deleteOwner` | `FASTTExpression` | `expression` | `FASTPyDeleteStatement` | The delete statement that own the expression (if it's the case)|
1213
| `expressionStatementOwner` | `FASTTExpression` | `expression` | `FASTTExpressionStatement` | The expression statement that own me (if it's the case|
1314
| `parentComparisonOperator` | `FASTTExpression` | `operands` | `FASTPyComparisonOperator` | Parent comparison expression of which I am.|
1415
| `parentConditionalStatement` | `FASTTExpression` | `condition` | `FASTTConditionalStatement` | Optional condition statement where this expression is used|

0 commit comments

Comments
 (0)