@@ -153,7 +153,10 @@ Class {
153153 ' tPattern' ,
154154 ' tClassPatternElement' ,
155155 ' tUnionMember' ,
156- ' tDeletable'
156+ ' tDeletable' ,
157+ ' tTypeContent' ,
158+ ' typeParameter' ,
159+ ' tWithTypeParameters'
157160 ],
158161 #category : ' FAST-Python-Model-Generator' ,
159162 #package : ' FAST-Python-Model-Generator'
@@ -282,6 +285,7 @@ FASTPythonMetamodelGenerator >> defineClasses [
282285 type := builder ensureClassNamed: #Type ." Todo"
283286 typeAliasStatement := builder ensureClassNamed: #TypeAliasStatement ." Todo"
284287 typeConversion := builder ensureClassNamed: #TypeConversion ." Todo"
288+ typeParameter := builder ensureClassNamed: #TypeParameter .
285289 unaryOperator := builder ensureClassNamed: #UnaryOperator .
286290 unionPattern := builder ensureClassNamed: #UnionPattern ." Todo"
287291 unionType := builder ensureClassNamed: #UnionType ." Todo"
@@ -346,6 +350,7 @@ FASTPythonMetamodelGenerator >> defineHierarchy [
346350
347351 classDefinition -- | > statement.
348352 classDefinition -- | > tDefinition.
353+ classDefinition -- | > tWithTypeParameters.
349354
350355 classPattern -- | > tPattern.
351356
@@ -369,6 +374,8 @@ FASTPythonMetamodelGenerator >> defineHierarchy [
369374 conditionalExpression -- | > tWithCondition.
370375
371376 continueStatement -- | > statement.
377+
378+ constrainedType -- | > tTypeContent.
372379
373380 deleteStatement -- | > statement.
374381
@@ -399,6 +406,7 @@ FASTPythonMetamodelGenerator >> defineHierarchy [
399406
400407 expression -- | > statement. " In Python expressions can also be expression statements."
401408 expression -- | > tExpression.
409+ expression -- | > tTypeContent. " Not sure all expressions should be but it's simpler like this."
402410
403411 finallyClause -- | > tStatementBlock.
404412
@@ -413,9 +421,13 @@ FASTPythonMetamodelGenerator >> defineHierarchy [
413421
414422 functionDefinition -- | > statement.
415423 functionDefinition -- | > tDefinition.
424+ functionDefinition -- | > tWithTypeParameters.
416425
417426 generatorExpression -- | > expression.
418427 generatorExpression -- | > tComprehension.
428+
429+ genericType -- | > tTypeContent.
430+ genericType -- | > tWithTypeParameters.
419431
420432 globalStatement -- | > statement.
421433
@@ -472,6 +484,7 @@ FASTPythonMetamodelGenerator >> defineHierarchy [
472484
473485 methodDefinition -- | > statement.
474486 methodDefinition -- | > tDefinition.
487+ methodDefinition -- | > tWithTypeParameters.
475488
476489 module -- | > tStatementBlock.
477490 module -- | > #THasImmediateSource .
@@ -544,6 +557,8 @@ FASTPythonMetamodelGenerator >> defineHierarchy [
544557 tryStatement -- | > tWithElseClause.
545558
546559 typeAliasStatement -- | > statement.
560+
561+ typeParameter -- | > tTypeContent.
547562
548563 unaryOperator -- | > operator.
549564 unaryOperator -- | > tUnaryOperator.
@@ -652,6 +667,10 @@ FASTPythonMetamodelGenerator >> defineRelations [
652667 (conditionalExpression property: #thenExpression ) <> - (expression property: #conditionalExpressionThenOwner ).
653668
654669 (conditionalExpression property: #elseExpression ) <> - (expression property: #conditionalExpressionElseOwner ).
670+
671+ (constrainedType property: #type ) <> - (type property: #parentContrainedType ).
672+
673+ (constrainedType property: #bound ) <> - (type property: #parentContrainedTypeBound ).
655674
656675 (decorator property: #expression ) <> - (tDecoratorExpression property: #parentDeclarator ).
657676
@@ -741,7 +760,7 @@ FASTPythonMetamodelGenerator >> defineRelations [
741760 ((tUnaryOperator property: #argument ) comment: ' Expression influanced by the unary operator..' )
742761 <> - ((expression property: #parentUnaryOperator ) comment: ' Parent unary operator in which I am.' ).
743762
744- (type property: #expression ) <> - (expression property: #parentType ). " I am not 100% sure I should point to an expression because all of them cannot be a type. "
763+ (type property: #content ) <> - (tTypeContent property: #parentType ).
745764
746765 (typeAliasStatement property: #left ) <> - (type property: #parentyTypeAliasStatementAlias ).
747766 (typeAliasStatement property: #right ) <> - (type property: #parentyTypeAliasStatementType ).
@@ -750,6 +769,8 @@ FASTPythonMetamodelGenerator >> defineRelations [
750769
751770 (tWithElseClause property: #elseClause ) <> - (elseClause property: #ifStatementOwner ).
752771
772+ (tWithTypeParameters property: #typeParameters ) <> -* (type property: #parentWithTypeParameters ).
773+
753774 (unionPattern property: #members ) <> -* (tPattern property: #parentUnionPattern ).
754775
755776 (withStatement property: #items ) <> -* (tWithStatementItem property: #parentWithStatementItem )
@@ -791,12 +812,16 @@ FASTPythonMetamodelGenerator >> defineTraits [
791812 (tSplatParameter := builder newTraitNamed: #TSplatParameter ) comment: ' I represent a parameter that is a list or dictionary splat.' .
792813
793814 tSplatParameterTarget := (builder newTraitNamed: #TSplatParameterTarget ) comment: ' My users are parameter target in a splat. For example in `def f(*list): pass`, we have a list splat parameter named list.' .
815+
816+ (tTypeContent := builder newTraitNamed: #TTypeContent ) comment: ' My user can be used as a type declaration' .
794817
795818 tUnaryOperator := builder newTraitNamed: #TUnaryOperator .
819+
820+ tWithElseClause := builder newTraitNamed: #TWithElseClause .
796821
797822 tWithStatementItem := (builder newTraitNamed: #TWithStatementItem ) comment: ' I represent an entity that can be the item of a with_statement.' .
798823
799- tWithElseClause := builder newTraitNamed: #TWithElseClause .
824+ (tWithTypeParameters := builder newTraitNamed: #TWithTypeParameters ) comment: ' I represent an entity with type parameters such as generic types, function/method definition or class definition ' .
800825
801826 " Remotes"
802827 tAssignment := self remoteTrait: #TAssignment withPrefix: #FAST .
0 commit comments