compiler/PPCASTUtilitiesTests.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 27 Jul 2015 16:28:48 +0100
changeset 506 e5d63143737f
permissions -rw-r--r--
Added static analysis of blocks when inlining. Allow inlining only when block is functional ...i.e., does not access any shared state (in instance or class variables). If the block does a self-send, the sent method has to be (transitively) functional too. To allow for self-sends in action blocks, copy (transitively) self-sent methods to target parser. This is safe as these self-sent methods are guarnateed to be functional.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
506
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/petitparser/compiler' }"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
"{ NameSpace: Smalltalk }"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
TestCase subclass:#PPCASTUtilitiesTests
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:''
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
	classVariableNames:'SomeClassVariable'
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
	poolDictionaries:''
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
	category:'PetitCompiler-Tests-Support'
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
!PPCASTUtilitiesTests methodsFor:'methods under test'!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
methodSimple1
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
    ^ 1
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
    "Created: / 27-07-2015 / 13:27:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
methodWithArguments: arg1
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
    (arg1 + 4) yourself isOdd ifTrue:[ 
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
        ^ true
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
    ].
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
    ^ false not.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
    "Created: / 27-07-2015 / 13:35:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
methodWithClassReference
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
    ^ PPCASTUtilities new
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    "Created: / 27-07-2015 / 13:28:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
methodWithClassVariableReference
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    ^ SomeClassVariable
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
    "Created: / 27-07-2015 / 14:02:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
methodWithInstanceVariableReference
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    ^ testSelector
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
    "Created: / 27-07-2015 / 13:29:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
methodWithSelfSend1
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    ^ self methodSimple1
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    "Created: / 27-07-2015 / 13:28:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
methodWithSelfSend2
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
    ^ self methodWithSelfSend1
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    "Created: / 27-07-2015 / 13:34:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
methodWithSelfSend3
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    ^ self methodWithInstanceVariableReference
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    "Created: / 27-07-2015 / 14:01:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
methodWithSuperSend
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    ^ super yourself
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    "Created: / 27-07-2015 / 14:02:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
methodWithTemporaries
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    | tmp1 |
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    tmp1 := 3.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    (tmp1 + 4) yourself isOdd ifTrue:[ 
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
        | tmp2 |
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
        tmp2 := tmp1 + 1.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
        ^ tmp1 + tmp2.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    ].
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    ^ tmp1
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    "Created: / 27-07-2015 / 13:33:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
! !
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
!PPCASTUtilitiesTests methodsFor:'tests'!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
test_checkNodeIsFunctional_1
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    self shouldnt: [ PPCASTUtilities new checkNodeIsFunctional: (self class >> #methodSimple1) parseTree inClass: self class ]
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
            raise: PPCCompilationError.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    self shouldnt: [ PPCASTUtilities new checkNodeIsFunctional: (self class >> #methodWithSelfSend1) parseTree inClass: self class ]
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
            raise: PPCCompilationError.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    self shouldnt: [ PPCASTUtilities new checkNodeIsFunctional: (self class >> #methodWithSelfSend2) parseTree inClass: self class ]
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
            raise: PPCCompilationError.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    self shouldnt: [ PPCASTUtilities new checkNodeIsFunctional: (self class >> #methodWithClassReference) parseTree inClass: self class ]
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
            raise: PPCCompilationError.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    self shouldnt: [ PPCASTUtilities new checkNodeIsFunctional: (self class >> #methodWithTemporaries) parseTree inClass: self class ]
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
            raise: PPCCompilationError.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    self shouldnt: [ PPCASTUtilities new checkNodeIsFunctional: (self class >> #methodWithArguments:) parseTree inClass: self class ]
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
            raise: PPCCompilationError.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    "Created: / 27-07-2015 / 14:00:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
!
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
test_checkNodeIsFunctional_2
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
    self should: [ PPCASTUtilities new checkNodeIsFunctional: (self class >> #methodWithInstanceVariableReference) parseTree inClass: self class ]
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
         raise: PPCCompilationError.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    self should: [ PPCASTUtilities new checkNodeIsFunctional: (self class >> #methodWithClassVariableReference) parseTree inClass: self class ]
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
         raise: PPCCompilationError.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    self should: [ PPCASTUtilities new checkNodeIsFunctional: (self class >> #methodWithSelfSend3) parseTree inClass: self class ]
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
         raise: PPCCompilationError.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
    self should: [ PPCASTUtilities new checkNodeIsFunctional: (self class >> #methodWithSuperSend) parseTree inClass: self class ]
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
         raise: PPCCompilationError.
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    "Created: / 27-07-2015 / 14:00:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
! !
e5d63143737f Added static analysis of blocks when inlining. Allow inlining only when block is functional
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117