First shot on #ifTrie:ifFalse: special form
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 16 Sep 2015 05:29:43 +0100
changeset 116d39860d0fdb
parent 10 2b9beeac547e
child 12 d716a8181fc1
First shot on #ifTrie:ifFalse: special form
compiler/Make.proto
compiler/Make.spec
compiler/TCompilerExamples.st
compiler/TCompilerPass.st
compiler/TConstantBinding.st
compiler/TDirectoryProvider.st
compiler/TFilesystemProvider.st
compiler/TFunctionBinding.st
compiler/TLLVMCodeGenerator.st
compiler/TMethodBinding.st
compiler/TSemanticAnalyser.st
compiler/TTypechecker.st
compiler/abbrev.stc
compiler/bc.mak
compiler/bmake.bat
compiler/jv_tea_compiler.st
compiler/libInit.cc
compiler/mingwmake.bat
compiler/vcmake.bat
     1.1 --- a/compiler/Make.proto	Mon Sep 14 16:27:00 2015 +0100
     1.2 +++ b/compiler/Make.proto	Wed Sep 16 05:29:43 2015 +0100
     1.3 @@ -154,7 +154,6 @@
     1.4  $(OUTDIR)TBlockType.$(O) TBlockType.$(H): TBlockType.st $(INCLUDE_TOP)/jv/tea/compiler/TType.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     1.5  $(OUTDIR)TClassBinding.$(O) TClassBinding.$(H): TClassBinding.st $(INCLUDE_TOP)/jv/tea/compiler/TBinding.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     1.6  $(OUTDIR)TCompilerPass.$(O) TCompilerPass.$(H): TCompilerPass.st $(INCLUDE_TOP)/jv/tea/compiler/TProgramNodeVisitor.$(H) $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser/RBProgramNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     1.7 -$(OUTDIR)TDirectoryProvider.$(O) TDirectoryProvider.$(H): TDirectoryProvider.st $(INCLUDE_TOP)/jv/tea/compiler/TEnvironmentProvider.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     1.8  $(OUTDIR)TEnvironment.$(O) TEnvironment.$(H): TEnvironment.st $(INCLUDE_TOP)/jv/tea/compiler/TNamespaceDefinition.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGAbstractContainer.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGContainer.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGDefinition.$(H) $(INCLUDE_TOP)/stx/goodies/ring/RGNamespace.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     1.9  $(OUTDIR)TFilesystemProvider.$(O) TFilesystemProvider.$(H): TFilesystemProvider.st $(INCLUDE_TOP)/jv/tea/compiler/TEnvironmentProvider.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
    1.10  $(OUTDIR)TFunctionBinding.$(O) TFunctionBinding.$(H): TFunctionBinding.st $(INCLUDE_TOP)/jv/tea/compiler/TBinding.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
     2.1 --- a/compiler/Make.spec	Mon Sep 14 16:27:00 2015 +0100
     2.2 +++ b/compiler/Make.spec	Wed Sep 16 05:29:43 2015 +0100
     2.3 @@ -78,7 +78,6 @@
     2.4  	TBlockType \
     2.5  	TClassBinding \
     2.6  	TCompilerPass \
     2.7 -	TDirectoryProvider \
     2.8  	TEnvironment \
     2.9  	TFilesystemProvider \
    2.10  	TFunctionBinding \
    2.11 @@ -127,7 +126,6 @@
    2.12      $(OUTDIR_SLASH)TBlockType.$(O) \
    2.13      $(OUTDIR_SLASH)TClassBinding.$(O) \
    2.14      $(OUTDIR_SLASH)TCompilerPass.$(O) \
    2.15 -    $(OUTDIR_SLASH)TDirectoryProvider.$(O) \
    2.16      $(OUTDIR_SLASH)TEnvironment.$(O) \
    2.17      $(OUTDIR_SLASH)TFilesystemProvider.$(O) \
    2.18      $(OUTDIR_SLASH)TFunctionBinding.$(O) \
     3.1 --- a/compiler/TCompilerExamples.st	Mon Sep 14 16:27:00 2015 +0100
     3.2 +++ b/compiler/TCompilerExamples.st	Wed Sep 16 05:29:43 2015 +0100
     3.3 @@ -22,29 +22,14 @@
     3.4  example_if
     3.5      | environment unit compiler|
     3.6  
     3.7 -    environment := TNamespaceDefinition new.
     3.8 +    environment := TEnvironment new.
     3.9      unit := TSourceReader read:'
    3.10 -nil subclass: #tBoolean
    3.11 -    category: ''tKernel-Builtins''
    3.12 -!! 
    3.13 -
    3.14 -nil subclass: #tSIntegerW
    3.15 -    category: ''tKernel-Builtins''
    3.16 +nil subclass: #If
    3.17 +    category: ''t-Examples''
    3.18  !!
    3.19 -!!tSIntegerW methodsFor:''testing''!!
    3.20 -= another <tSIntegerW> <^ tBoolean> 
    3.21 -    %[:asm | 
    3.22 -        asm ret: (asm add: self _: another)
    3.23 -    %].
    3.24 -    "Following code is actually used only in hosted environment"
    3.25 -    ^ self + another
    3.26 -!! !!
    3.27 -
    3.28 -!!tSIntegerW class methodsFor:''test''!!
    3.29 -threePlusFour <^ tSIntegerW> 
    3.30 -        ^ 3 + 4
    3.31 -
    3.32 -!! !!
    3.33 +!!If class methodsFor:''examples''!!
    3.34 +if <^ tSIntegerW> 
    3.35 +        true ifTrue:[ ^ 1 ] ifFalse:[ ^ 0 ]
    3.36      '.
    3.37  
    3.38      compiler := TCompiler new.
    3.39 @@ -55,7 +40,7 @@
    3.40      "
    3.41  
    3.42      "Created: / 14-09-2015 / 12:14:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    3.43 -    "Modified: / 14-09-2015 / 14:27:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    3.44 +    "Modified: / 15-09-2015 / 12:22:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    3.45  !
    3.46  
    3.47  example_three_plus_four
     4.1 --- a/compiler/TCompilerPass.st	Mon Sep 14 16:27:00 2015 +0100
     4.2 +++ b/compiler/TCompilerPass.st	Wed Sep 16 05:29:43 2015 +0100
     4.3 @@ -118,9 +118,10 @@
     4.4  !
     4.5  
     4.6  acceptIfTrueIfFalseNode: node 
     4.7 -    self acceptMessageNode: node
     4.8 +    ^ self acceptMessageNode: node.
     4.9  
    4.10      "Created: / 14-09-2015 / 14:09:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    4.11 +    "Modified: / 15-09-2015 / 11:59:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    4.12  !
    4.13  
    4.14  acceptIfTrueNode: node
     5.1 --- a/compiler/TConstantBinding.st	Mon Sep 14 16:27:00 2015 +0100
     5.2 +++ b/compiler/TConstantBinding.st	Wed Sep 16 05:29:43 2015 +0100
     5.3 @@ -12,10 +12,10 @@
     5.4  
     5.5  !TConstantBinding class methodsFor:'instance creation'!
     5.6  
     5.7 -value: anObject
     5.8 -    ^ self new initializeWithValue: anObject
     5.9 +value: anObject type: aTType
    5.10 +    ^ self new initializeWithValue: anObject type: aTType
    5.11  
    5.12 -    "Created: / 25-08-2015 / 23:14:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    5.13 +    "Created: / 15-09-2015 / 08:19:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    5.14  ! !
    5.15  
    5.16  !TConstantBinding methodsFor:'accessing'!
    5.17 @@ -37,16 +37,11 @@
    5.18  
    5.19  !TConstantBinding methodsFor:'initialization'!
    5.20  
    5.21 -initializeWithValue: anObject
    5.22 +initializeWithValue: anObject type: aTType
    5.23      value := anObject.
    5.24 -    value class == SmallInteger ifTrue:[ 
    5.25 -        type := TSimpleType named: 'tSIntegerW'.
    5.26 -        ^ self.
    5.27 -    ].
    5.28 -    self error: 'Unsupported constant'
    5.29 +    type := aTType.
    5.30  
    5.31 -    "Created: / 25-08-2015 / 23:15:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    5.32 -    "Modified: / 14-09-2015 / 15:18:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    5.33 +    "Created: / 15-09-2015 / 08:19:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    5.34  ! !
    5.35  
    5.36  !TConstantBinding methodsFor:'testing'!
     6.1 --- a/compiler/TDirectoryProvider.st	Mon Sep 14 16:27:00 2015 +0100
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,11 +0,0 @@
     6.4 -"{ Package: 'jv:tea/compiler' }"
     6.5 -
     6.6 -"{ NameSpace: Smalltalk }"
     6.7 -
     6.8 -TEnvironmentProvider subclass:#TDirectoryProvider
     6.9 -	instanceVariableNames:''
    6.10 -	classVariableNames:''
    6.11 -	poolDictionaries:''
    6.12 -	category:'Languages-Tea-Compiler-Model-Provider'
    6.13 -!
    6.14 -
     7.1 --- a/compiler/TFilesystemProvider.st	Mon Sep 14 16:27:00 2015 +0100
     7.2 +++ b/compiler/TFilesystemProvider.st	Wed Sep 16 05:29:43 2015 +0100
     7.3 @@ -9,6 +9,7 @@
     7.4  	category:'Languages-Tea-Compiler-Model-Provider'
     7.5  !
     7.6  
     7.7 +
     7.8  !TFilesystemProvider class methodsFor:'instance creation'!
     7.9  
    7.10  new
    7.11 @@ -58,3 +59,10 @@
    7.12      "Modified: / 14-09-2015 / 15:06:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    7.13  ! !
    7.14  
    7.15 +!TFilesystemProvider class methodsFor:'documentation'!
    7.16 +
    7.17 +version_HG
    7.18 +
    7.19 +    ^ '$Changeset: <not expanded> $'
    7.20 +! !
    7.21 +
     8.1 --- a/compiler/TFunctionBinding.st	Mon Sep 14 16:27:00 2015 +0100
     8.2 +++ b/compiler/TFunctionBinding.st	Wed Sep 16 05:29:43 2015 +0100
     8.3 @@ -26,6 +26,14 @@
     8.4      "Modified: / 02-09-2015 / 17:02:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     8.5  ! !
     8.6  
     8.7 +!TFunctionBinding methodsFor:'converting'!
     8.8 +
     8.9 +asLLVMValueInModule: aLLVMModule
    8.10 +    self subclassResponsibility
    8.11 +
    8.12 +    "Created: / 15-09-2015 / 07:03:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    8.13 +! !
    8.14 +
    8.15  !TFunctionBinding methodsFor:'initialization'!
    8.16  
    8.17  parameterTypes: aCollection
     9.1 --- a/compiler/TLLVMCodeGenerator.st	Mon Sep 14 16:27:00 2015 +0100
     9.2 +++ b/compiler/TLLVMCodeGenerator.st	Wed Sep 16 05:29:43 2015 +0100
     9.3 @@ -117,6 +117,40 @@
     9.4      "Created: / 31-08-2015 / 10:14:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     9.5  !
     9.6  
     9.7 +acceptIfTrueIfFalseNode: node 
     9.8 +    | condition thenBody thenBlock thenResult elseBody elseBlock elseResult joinBlock result |
     9.9 +
    9.10 +    condition := self visitNode: node receiver.  
    9.11 +    thenBody  := node arguments first body.
    9.12 +    thenBlock := function addBasicBlock.
    9.13 +
    9.14 +    elseBody  := node arguments second body.
    9.15 +    elseBlock := function addBasicBlock.
    9.16 +
    9.17 +    asm if: condition then: thenBlock else: elseBlock.
    9.18 +    "/ Code true-branch
    9.19 +    asm block: thenBlock.
    9.20 +    thenResult := self visitNode: thenBody.
    9.21 +    thenResult isReturnInst ifFalse:[  
    9.22 +        joinBlock notNil ifTrue:[ joinBlock function addBasicBlock ].
    9.23 +        asm br: joinBlock.
    9.24 +    ].
    9.25 +
    9.26 +    "/ Code false-branch
    9.27 +    asm block: elseBlock.
    9.28 +    elseResult := self visitNode: elseBody.
    9.29 +    elseResult isReturnInst ifFalse:[  
    9.30 +        joinBlock notNil ifTrue:[ joinBlock function addBasicBlock ].
    9.31 +        asm br: joinBlock.
    9.32 +    ].
    9.33 +    joinBlock notNil ifTrue:[ 
    9.34 +        asm block: joinBlock.
    9.35 +    ].
    9.36 +
    9.37 +    "Created: / 15-09-2015 / 11:59:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    9.38 +    "Modified: / 16-09-2015 / 05:28:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    9.39 +!
    9.40 +
    9.41  acceptInlineAssemblyNode: aTInlineAssemblyNode
    9.42      | emitMethodNode emitMethod|
    9.43  
    9.44 @@ -146,45 +180,26 @@
    9.45  !
    9.46  
    9.47  acceptMessageNode: aMessageNode
    9.48 -    | receiver arguments methodName methodFunction |
    9.49 +    | receiver arguments methodFunction |
    9.50  
    9.51      receiver := self visitNode: aMessageNode receiver.
    9.52 -    receiver := self visitNode: aMessageNode receiver.
    9.53      arguments := aMessageNode arguments collect: [:argument | self visitNode: argument ].
    9.54 -
    9.55 -    methodName := self class llvmFunctionNameForClass: aMessageNode binding mclass clazz selector: aMessageNode selector.
    9.56 -    methodFunction := context module getFunctionNamed: methodName.
    9.57 +    methodFunction := aMessageNode binding asLLVMValueInModule: context module.  
    9.58  
    9.59      ^ asm call: methodFunction _: { receiver } , arguments
    9.60  
    9.61      "Created: / 31-08-2015 / 10:13:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    9.62 -    "Modified: / 03-09-2015 / 07:13:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    9.63 +    "Modified (format): / 15-09-2015 / 07:14:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    9.64  !
    9.65  
    9.66  acceptMethodNode: aMethodNode 
    9.67 -    | binding |
    9.68 -
    9.69 -    binding := aMethodNode binding.
    9.70 -    binding mclass isMetaclass ifTrue:[
    9.71 -        function := context module 
    9.72 -                        addFunctionNamed: (self class llvmFunctionNameForClass: currentClass selector: currentMethod selector)
    9.73 -                        type: (LLVMType 
    9.74 -                                function:  (binding parameterTypes collect:[:t|t asLLVMTypeInModule: context module])
    9.75 -                                returning: (binding returnType asLLVMTypeInModule: context module)).
    9.76 -    ] ifFalse:[ 
    9.77 -        function := context module 
    9.78 -                        addFunctionNamed: (self class llvmFunctionNameForClass: currentClass selector: currentMethod selector)      
    9.79 -                        type: (LLVMType 
    9.80 -                                function:  {binding receiverType asLLVMTypeInModule: context module } ,
    9.81 -                                           (binding parameterTypes collect:[:t|t asLLVMTypeInModule: context module])
    9.82 -                                returning: (binding returnType asLLVMTypeInModule: context module)).
    9.83 -        (function parameterAt: 1) name: 'self'.
    9.84 -    ].
    9.85 +    function := aMethodNode binding asLLVMValueInModule: context module.
    9.86      asm := function builder.
    9.87      super acceptMethodNode: aMethodNode
    9.88  
    9.89      "Created: / 31-08-2015 / 09:42:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    9.90 -    "Modified: / 14-09-2015 / 15:37:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    9.91 +    "Modified: / 15-09-2015 / 07:17:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    9.92 +    "Modified (format): / 15-09-2015 / 08:17:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    9.93  !
    9.94  
    9.95  acceptOptimizedNode: anOptimizedNode 
    10.1 --- a/compiler/TMethodBinding.st	Mon Sep 14 16:27:00 2015 +0100
    10.2 +++ b/compiler/TMethodBinding.st	Wed Sep 16 05:29:43 2015 +0100
    10.3 @@ -36,6 +36,36 @@
    10.4      ^ selector
    10.5  ! !
    10.6  
    10.7 +!TMethodBinding methodsFor:'converting'!
    10.8 +
    10.9 +asLLVMValueInModule: aLLVMModule
   10.10 +    | name function |
   10.11 +
   10.12 +    name := TLLVMCodeGenerator llvmFunctionNameForClass: mclass clazz selector: selector.
   10.13 +    function := aLLVMModule getFunctionNamed: name.
   10.14 +    function isNil ifTrue:[ 
   10.15 +        | type |
   10.16 +
   10.17 +        mclass isMetaclass ifTrue:[
   10.18 +            type := LLVMType 
   10.19 +                        function:  (parameterTypes collect:[:t|t asLLVMTypeInModule: aLLVMModule ])
   10.20 +                        returning: (returnType asLLVMTypeInModule: aLLVMModule).                 
   10.21 +        ] ifFalse:[ 
   10.22 +            type := LLVMType
   10.23 +                    function:  {mclass type asLLVMTypeInModule:  aLLVMModule } ,
   10.24 +                               (parameterTypes collect:[:t|t asLLVMTypeInModule: aLLVMModule])
   10.25 +                    returning: (returnType asLLVMTypeInModule: aLLVMModule).
   10.26 +        ].
   10.27 +        function := aLLVMModule addFunctionNamed: name type: type.
   10.28 +        mclass isMetaclass ifFalse:[
   10.29 +            (function parameterAt: 1) name: 'self'.
   10.30 +        ]
   10.31 +    ].
   10.32 +    ^ function
   10.33 +
   10.34 +    "Created: / 15-09-2015 / 07:04:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   10.35 +! !
   10.36 +
   10.37  !TMethodBinding methodsFor:'initialization'!
   10.38  
   10.39  initializeWithClass: aTClassBinding selector: aSymbol
    11.1 --- a/compiler/TSemanticAnalyser.st	Mon Sep 14 16:27:00 2015 +0100
    11.2 +++ b/compiler/TSemanticAnalyser.st	Wed Sep 16 05:29:43 2015 +0100
    11.3 @@ -67,11 +67,22 @@
    11.4  !
    11.5  
    11.6  acceptLiteralNode: aRBLiteralNode
    11.7 +    | value |
    11.8 +
    11.9      super acceptLiteralNode: aRBLiteralNode.
   11.10 -    aRBLiteralNode binding: (TConstantBinding value: aRBLiteralNode value).
   11.11 +    value := aRBLiteralNode value.
   11.12 +    value isInteger ifTrue:[ 
   11.13 +        aRBLiteralNode binding: (TConstantBinding value: value type: (context environment binding lookupClassSIntegerW) type).
   11.14 +        ^ self.
   11.15 +    ].
   11.16 +    value isBoolean ifTrue:[ 
   11.17 +        aRBLiteralNode binding: (TConstantBinding value: (value ifTrue:[1] ifFalse:[0]) type: (context environment binding lookupClassBoolean) type).
   11.18 +        ^ self.
   11.19 +    ].
   11.20 +    self erorr: 'Unsupported constant'.
   11.21  
   11.22      "Created: / 25-08-2015 / 23:17:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   11.23 -    "Modified: / 02-09-2015 / 10:34:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   11.24 +    "Modified: / 15-09-2015 / 08:27:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   11.25  !
   11.26  
   11.27  acceptMethodNode: aMethodNode
    12.1 --- a/compiler/TTypechecker.st	Mon Sep 14 16:27:00 2015 +0100
    12.2 +++ b/compiler/TTypechecker.st	Wed Sep 16 05:29:43 2015 +0100
    12.3 @@ -14,14 +14,15 @@
    12.4  acceptIfTrueIfFalseNode: node
    12.5      | receiverType booleanType |
    12.6  
    12.7 -    receiverType := node binding type.
    12.8 -    booleanType := context environment binding lookupClassBoolean.
    12.9 +    receiverType := node receiver binding type.
   12.10 +    booleanType := context environment binding lookupClassBoolean type.
   12.11  
   12.12      receiverType = booleanType ifFalse:[ 
   12.13          context reportTypeError: 'receiver of ifTrue:ifFalse: special form must be of type tBoolean (is ' , receiverType printString.
   12.14      ].
   12.15  
   12.16      "Created: / 14-09-2015 / 14:24:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   12.17 +    "Modified: / 15-09-2015 / 08:29:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   12.18  !
   12.19  
   12.20  acceptIfTrueNode: node
    13.1 --- a/compiler/abbrev.stc	Mon Sep 14 16:27:00 2015 +0100
    13.2 +++ b/compiler/abbrev.stc	Wed Sep 16 05:29:43 2015 +0100
    13.3 @@ -15,26 +15,20 @@
    13.4  TInlineAssemblyNode TInlineAssemblyNode jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
    13.5  TMetaDefinition TMetaDefinition jv:tea/compiler 'Languages-Tea-Compiler-Model' 0
    13.6  TMethodDefinition TMethodDefinition jv:tea/compiler 'Languages-Tea-Compiler-Model' 0
    13.7 -TMethodDefinitionTests TMethodDefinitionTests jv:tea/compiler 'Languages-Tea-Compiler-Model-Tests' 1
    13.8  TNamespaceDefinition TNamespaceDefinition jv:tea/compiler 'Languages-Tea-Compiler-Model' 0
    13.9  TParser TParser jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   13.10 -TParserTests TParserTests jv:tea/compiler 'Languages-Tea-Compiler-AST-Tests' 1
   13.11  TProgramNodeVisitor TProgramNodeVisitor jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   13.12  TScanner TScanner jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   13.13  TScope TScope jv:tea/compiler 'Languages-Tea-Compiler-Bindings' 0
   13.14 -TSemanticAnalyserTests TSemanticAnalyserTests jv:tea/compiler 'Languages-Tea-Compiler-Internals-Tests' 1
   13.15  TSourceReader TSourceReader jv:tea/compiler 'Languages-Tea-Compiler-Model' 0
   13.16 -TSourceReaderTests TSourceReaderTests jv:tea/compiler 'Languages-Tea-Compiler-Model-Tests' 1
   13.17  TSpecialFormNode TSpecialFormNode jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   13.18  TType TType jv:tea/compiler 'Languages-Tea-Compiler-Types' 0
   13.19  TTypeNode TTypeNode jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   13.20  TTypeSpecNode TTypeSpecNode jv:tea/compiler 'Languages-Tea-Compiler-AST' 0
   13.21 -TTypecheckerTests TTypecheckerTests jv:tea/compiler 'Languages-Tea-Compiler-Internals-Tests' 1
   13.22  jv_tea_compiler jv_tea_compiler jv:tea/compiler '* Projects & Packages *' 3
   13.23  TBlockType TBlockType jv:tea/compiler 'Languages-Tea-Compiler-Types' 0
   13.24  TClassBinding TClassBinding jv:tea/compiler 'Languages-Tea-Compiler-Bindings' 0
   13.25  TCompilerPass TCompilerPass jv:tea/compiler 'Languages-Tea-Compiler-Internals' 0
   13.26 -TDirectoryProvider TDirectoryProvider jv:tea/compiler 'Languages-Tea-Compiler-Model-Provider' 0
   13.27  TEnvironment TEnvironment jv:tea/compiler 'Languages-Tea-Compiler-Model' 0
   13.28  TFilesystemProvider TFilesystemProvider jv:tea/compiler 'Languages-Tea-Compiler-Model-Provider' 0
   13.29  TFunctionBinding TFunctionBinding jv:tea/compiler 'Languages-Tea-Compiler-Bindings' 0
   13.30 @@ -51,3 +45,8 @@
   13.31  TVariableBinding TVariableBinding jv:tea/compiler 'Languages-Tea-Compiler-Bindings' 0
   13.32  TArgumentBinding TArgumentBinding jv:tea/compiler 'Languages-Tea-Compiler-Bindings' 0
   13.33  TLocalBinding TLocalBinding jv:tea/compiler 'Languages-Tea-Compiler-Bindings' 0
   13.34 +TMethodDefinitionTests TMethodDefinitionTests jv:tea/compiler 'Languages-Tea-Compiler-Model-Tests' 1
   13.35 +TParserTests TParserTests jv:tea/compiler 'Languages-Tea-Compiler-AST-Tests' 1
   13.36 +TSemanticAnalyserTests TSemanticAnalyserTests jv:tea/compiler 'Languages-Tea-Compiler-Internals-Tests' 1
   13.37 +TSourceReaderTests TSourceReaderTests jv:tea/compiler 'Languages-Tea-Compiler-Model-Tests' 1
   13.38 +TTypecheckerTests TTypecheckerTests jv:tea/compiler 'Languages-Tea-Compiler-Internals-Tests' 1
    14.1 --- a/compiler/bc.mak	Mon Sep 14 16:27:00 2015 +0100
    14.2 +++ b/compiler/bc.mak	Wed Sep 16 05:29:43 2015 +0100
    14.3 @@ -101,7 +101,6 @@
    14.4  $(OUTDIR)TBlockType.$(O) TBlockType.$(H): TBlockType.st $(INCLUDE_TOP)\jv\tea\compiler\TType.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    14.5  $(OUTDIR)TClassBinding.$(O) TClassBinding.$(H): TClassBinding.st $(INCLUDE_TOP)\jv\tea\compiler\TBinding.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    14.6  $(OUTDIR)TCompilerPass.$(O) TCompilerPass.$(H): TCompilerPass.st $(INCLUDE_TOP)\jv\tea\compiler\TProgramNodeVisitor.$(H) $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser\RBProgramNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    14.7 -$(OUTDIR)TDirectoryProvider.$(O) TDirectoryProvider.$(H): TDirectoryProvider.st $(INCLUDE_TOP)\jv\tea\compiler\TEnvironmentProvider.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    14.8  $(OUTDIR)TEnvironment.$(O) TEnvironment.$(H): TEnvironment.st $(INCLUDE_TOP)\jv\tea\compiler\TNamespaceDefinition.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGAbstractContainer.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGContainer.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGDefinition.$(H) $(INCLUDE_TOP)\stx\goodies\ring\RGNamespace.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    14.9  $(OUTDIR)TFilesystemProvider.$(O) TFilesystemProvider.$(H): TFilesystemProvider.st $(INCLUDE_TOP)\jv\tea\compiler\TEnvironmentProvider.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
   14.10  $(OUTDIR)TFunctionBinding.$(O) TFunctionBinding.$(H): TFunctionBinding.st $(INCLUDE_TOP)\jv\tea\compiler\TBinding.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
    15.1 --- a/compiler/bmake.bat	Mon Sep 14 16:27:00 2015 +0100
    15.2 +++ b/compiler/bmake.bat	Wed Sep 16 05:29:43 2015 +0100
    15.3 @@ -5,7 +5,7 @@
    15.4  @REM -------
    15.5  @SET DEFINES=
    15.6  @REM Kludge got Mercurial, cannot be implemented in Borland make
    15.7 -@FOR /F "tokens=*" %i in ('hg root') do SET HGROOT=%i
    15.8 +@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
    15.9  @IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
   15.10  
   15.11  make.exe -N -f bc.mak  %DEFINES% %*
    16.1 --- a/compiler/jv_tea_compiler.st	Mon Sep 14 16:27:00 2015 +0100
    16.2 +++ b/compiler/jv_tea_compiler.st	Wed Sep 16 05:29:43 2015 +0100
    16.3 @@ -87,26 +87,20 @@
    16.4          TInlineAssemblyNode
    16.5          TMetaDefinition
    16.6          TMethodDefinition
    16.7 -        (TMethodDefinitionTests autoload)
    16.8          TNamespaceDefinition
    16.9          TParser
   16.10 -        (TParserTests autoload)
   16.11          TProgramNodeVisitor
   16.12          TScanner
   16.13          TScope
   16.14 -        (TSemanticAnalyserTests autoload)
   16.15          TSourceReader
   16.16 -        (TSourceReaderTests autoload)
   16.17          TSpecialFormNode
   16.18          TType
   16.19          TTypeNode
   16.20          TTypeSpecNode
   16.21 -        (TTypecheckerTests autoload)
   16.22          #'jv_tea_compiler'
   16.23          TBlockType
   16.24          TClassBinding
   16.25          TCompilerPass
   16.26 -        TDirectoryProvider
   16.27          TEnvironment
   16.28          TFilesystemProvider
   16.29          TFunctionBinding
   16.30 @@ -123,6 +117,11 @@
   16.31          TVariableBinding
   16.32          TArgumentBinding
   16.33          TLocalBinding
   16.34 +        (TMethodDefinitionTests autoload)
   16.35 +        (TParserTests autoload)
   16.36 +        (TSemanticAnalyserTests autoload)
   16.37 +        (TSourceReaderTests autoload)
   16.38 +        (TTypecheckerTests autoload)
   16.39      )
   16.40  !
   16.41  
    17.1 --- a/compiler/libInit.cc	Mon Sep 14 16:27:00 2015 +0100
    17.2 +++ b/compiler/libInit.cc	Wed Sep 16 05:29:43 2015 +0100
    17.3 @@ -54,7 +54,6 @@
    17.4  _TBlockType_Init(pass,__pRT__,snd);
    17.5  _TClassBinding_Init(pass,__pRT__,snd);
    17.6  _TCompilerPass_Init(pass,__pRT__,snd);
    17.7 -_TDirectoryProvider_Init(pass,__pRT__,snd);
    17.8  _TEnvironment_Init(pass,__pRT__,snd);
    17.9  _TFilesystemProvider_Init(pass,__pRT__,snd);
   17.10  _TFunctionBinding_Init(pass,__pRT__,snd);
    18.1 --- a/compiler/mingwmake.bat	Mon Sep 14 16:27:00 2015 +0100
    18.2 +++ b/compiler/mingwmake.bat	Wed Sep 16 05:29:43 2015 +0100
    18.3 @@ -5,7 +5,7 @@
    18.4  @REM -------
    18.5  @SET DEFINES=
    18.6  @REM Kludge got Mercurial, cannot be implemented in Borland make
    18.7 -@FOR /F "tokens=*" %i in ('hg root') do SET HGROOT=%i
    18.8 +@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
    18.9  @IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
   18.10  
   18.11  @pushd ..\..\..\stx\rules
    19.1 --- a/compiler/vcmake.bat	Mon Sep 14 16:27:00 2015 +0100
    19.2 +++ b/compiler/vcmake.bat	Wed Sep 16 05:29:43 2015 +0100
    19.3 @@ -10,6 +10,10 @@
    19.4      popd
    19.5  )
    19.6  @SET DEFINES=
    19.7 +@REM Kludge got Mercurial, cannot be implemented in Borland make
    19.8 +@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
    19.9 +@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
   19.10 +
   19.11  
   19.12  make.exe -N -f bc.mak -DUSEVC=1 %DEFINES% %*
   19.13