RegressionTests__STCCompilerTests.st
changeset 995 676127617c9e
parent 994 914cf744f89e
child 1046 06719286467f
equal deleted inserted replaced
994:914cf744f89e 995:676127617c9e
    24 
    24 
    25     [see also:]
    25     [see also:]
    26 
    26 
    27 "
    27 "
    28 ! !
    28 ! !
    29 
       
    30 
    29 
    31 !STCCompilerTests methodsFor:'code templates'!
    30 !STCCompilerTests methodsFor:'code templates'!
    32 
    31 
    33 nextLittleEndianNumber: n from:bytes
    32 nextLittleEndianNumber: n from:bytes
    34     "stc generates wrong code for the following s := assignment"
    33     "stc generates wrong code for the following s := assignment"
   116 
   115 
   117      This tests checks for this bug.
   116      This tests checks for this bug.
   118     "
   117     "
   119 
   118 
   120     |val|
   119     |val|
   121 
   120     [
   122     Class withoutUpdatingChangesDo:[
   121        Class withoutUpdatingChangesDo:[
   123         "/ Check bytecode version first...
   122            "/ Check bytecode version first...
   124         self class class compile:'returnMyName
   123            self class class compile:'returnMyName
   125     ^ name
   124        ^ name
   126 '.
   125    '.
   127         val := self class returnMyName.
   126            val := self class returnMyName.
   128         self assert:(val == self class name).
   127            self assert:(val == self class name).
   129         self class removeSelector:#returnMyName.
   128            self class class removeSelector:#returnMyName.
   130 
   129 
   131         "/ Now, compile the same source using stc and check...
   130            "/ Now, compile the same source using stc and check...
   132         (STCCompilerInterface new)
   131            (STCCompilerInterface new)
   133             compileToMachineCode:'returnMyName
   132                compileToMachineCode:'returnMyName
   134     ^ name
   133        ^ name
   135 '
   134    '
   136             forClass:self class class
   135                forClass:self class class
   137             selector:#'returnMyName'
   136                selector:#'returnMyName'
   138             inCategory:'tests'
   137                inCategory:'tests'
   139             notifying:nil
   138                notifying:nil
   140             install:true
   139                install:true
   141             skipIfSame:false
   140                skipIfSame:false
   142             silent:true.
   141                silent:true.
   143 
   142 
   144         val := self class returnMyName.
   143            val := self class returnMyName.
   145         self assert:(val == self class name).
   144            self assert:(val == self class name).
   146         self class removeSelector:#returnMyName.
   145            self class class removeSelector:#returnMyName.
   147     ].
   146        ].
       
   147     ] ensure:[
       
   148         self class class removeSelector:#returnMyName.
       
   149     ]
   148 
   150 
   149     "
   151     "
   150      self run:#test02_compilation
   152      self run:#test02_compilation
   151      self new test02_compilation
   153      self new test02_compilation
   152     "
   154     "