compiler/TFormatter.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 02 Sep 2015 09:18:00 +0100
changeset 6 0c806a7f1888
parent 2 2a3e47c13905
child 9 569bf5707c7e
permissions -rw-r--r--
Initial support for inline assembly
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'jv:tea/compiler' }"
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Smalltalk }"
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
RBFormatter subclass:#TFormatter
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:''
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:''
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
2
2a3e47c13905 Removed classes meant for hosting Tea within Smalltalk/X.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 1
diff changeset
     9
	category:'Languages-Tea-Compiler-AST'
1
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!TFormatter methodsFor:'visitor-double dispatching'!
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
6
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    14
acceptInlineAssemblyNode:aBlockNode 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    15
    |seqNode multiline formattedBody formatter parent parentSelector|
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    16
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    17
    (CStyleBlocks 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    18
        and:[ (parent := aBlockNode parent) notNil and:[ parent isMessage ] ]) 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    19
            ifTrue:
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    20
                [ parent receiver == aBlockNode 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    21
                    ifTrue:
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    22
                        [ " I am the receiver of a message (i.e. typically a control structure) "
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    23
                        ^ self acceptInlineAssemblyNodeCStyle:aBlockNode ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    24
                parentSelector := parent selector.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    25
                parentSelector == #timesRepeat: 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    26
                    ifTrue:
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    27
                        [ " I am the receiver of a message (i.e. typically a control structure) "
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    28
                        self indent:-2 while:[ ^ self acceptInlineAssemblyNodeCStyle:aBlockNode ] ] ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    29
    seqNode := aBlockNode body.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    30
    formatter := (self copy)
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    31
                lineStart:0;
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    32
                yourself.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    33
    seqNode isNil ifTrue:[ 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    34
        formattedBody := ''
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    35
    ] ifFalse:[
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    36
        formattedBody := formatter format:seqNode 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    37
    ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    38
    multiline := (self lineLength + formattedBody size > self maxLineSize) 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    39
                or:[ formatter isMultiLine ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    40
    (CStyleBlocks and:[ multiline ]) 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    41
        ifTrue:
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    42
            [ self indent:-1 while:[ self acceptInlineAssemblyNodeCStyle:aBlockNode ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    43
            ^ self ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    44
    multiline ifTrue:[ self indent ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    45
    codeStream nextPutAll:'%['.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    46
    SpaceAfterBlockStart 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    47
        ifTrue:
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    48
            [ (formattedBody notEmpty and:[ aBlockNode arguments isEmptyOrNil ]) 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    49
                ifTrue:[ codeStream space. ] ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    50
    self formatBlockArguments:aBlockNode.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    51
    aBlockNode arguments isEmpty 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    52
        ifFalse:
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    53
            [ codeStream nextPutAll:'| '.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    54
            multiline ifTrue:[ self indent ] ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    55
    codeStream nextPutAll:formattedBody.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    56
    SpaceBeforeBlockEnd 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    57
        ifTrue:[ formattedBody notEmpty ifTrue:[ codeStream space. ] ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    58
    codeStream nextPutAll:'%]'
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    59
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    60
    "Created: / 02-09-2015 / 06:49:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    61
!
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    62
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    63
acceptInlineAssemblyNodeCStyle: aBlockNode 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    64
        | seqNode l multiline formattedBody formatter |
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    65
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    66
        seqNode := aBlockNode body.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    67
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    68
        formatter := (self copy) lineStart: 0; yourself.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    69
        formatter indentWhile:[
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    70
            formattedBody := formatter format: seqNode.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    71
formattedBody asCollectionOfLines last isBlank ifTrue:[
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    72
     formattedBody := (formattedBody asCollectionOfLines copyButLast:1) asStringWith:Character cr.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    73
].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    74
        ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    75
        multiline := (l := self lineLength + formattedBody size) > self maxLineSize
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    76
                                or: [formatter isMultiLine].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    77
        multiline := multiline or:[l > (MaxLengthForSingleLineBlocks ? 60)].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    78
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    79
        codeStream nextPutAll:'%['.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    80
        multiline ifFalse:[
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    81
            SpaceAfterBlockStart 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    82
                ifTrue:[
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    83
                    (formattedBody notEmpty and:[aBlockNode hasArguments not]) 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    84
                        ifTrue:[
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    85
                            codeStream space.]].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    86
        ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    87
        self indentWhile:[
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    88
            (BlockArgumentsOnNewLine or:[aBlockNode hasArguments not]) ifTrue:[
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    89
                multiline ifTrue:[
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    90
                    self indent.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    91
                ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    92
            ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    93
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    94
            self formatBlockArguments:aBlockNode.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    95
            aBlockNode arguments isEmpty 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    96
                ifFalse:[ 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    97
                    codeStream nextPutAll: '| '.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    98
                    multiline ifTrue: [self indent]].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
    99
        ].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   100
        codeStream nextPutAll: formattedBody.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   101
        multiline 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   102
            ifTrue: [self indent]
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   103
            ifFalse:[ 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   104
                SpaceBeforeBlockEnd 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   105
                    ifTrue:[
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   106
                        formattedBody notEmpty 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   107
                            ifTrue:[
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   108
                                codeStream space.]]].
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   109
        codeStream nextPutAll:'%]'.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   110
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   111
    "Created: / 02-09-2015 / 06:48:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   112
!
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   113
1
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
acceptSimpleTypeNode: aTSimpleTypeNode
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    codeStream nextPutAll: aTSimpleTypeNode name
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
    "Created: / 21-08-2015 / 22:20:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
!
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
acceptTypeSpecNode: aTTypeSpecNode
6
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   121
    aTTypeSpecNode type notNil ifTrue:[ 
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   122
        codeStream nextPut:$<; space.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   123
        self visitNode: aTTypeSpecNode type.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   124
        codeStream space; nextPut:$>.
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   125
    ]
1
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
    "Created: / 21-08-2015 / 22:18:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6
0c806a7f1888 Initial support for inline assembly
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 2
diff changeset
   128
    "Modified: / 01-09-2015 / 19:08:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
!
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
acceptUnionTypeNode: aTUnionTypeNode
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
    aTUnionTypeNode types do:[:type | 
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
        self visitNode: type
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
    ] separatedBy:[ 
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
        codeStream space; nextPut: $|; space
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    ].
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
    "Created: / 21-08-2015 / 22:21:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
! !
18b4a3b98e96 Creates subpackage jv:tea/compiler
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140