浏览代码

Imports should be handled in original order.

woollybah 11 年之前
父节点
当前提交
32d58ef869
共有 2 个文件被更改,包括 57 次插入5 次删除
  1. 52 0
      config.bmx
  2. 5 5
      decl.bmx

+ 52 - 0
config.bmx

@@ -200,6 +200,58 @@ Type TStringList Extends TList
 	End Method
 End Type
 
+Type TKeyValue
+	Field key:Object
+	Field value:Object
+	
+	Method Create:TKeyValue(key:Object,value:Object)
+		Self.key = key
+		Self.value = value
+		Return Self
+	End Method
+	
+	Method Compare:Int(other:Object)
+		If Not TKeyValue(other) Return 0
+		Return key.Compare(TKeyValue(other).key)
+	End Method
+	
+End Type
+
+Type TUnorderedMap
+
+	Field list:TList = New TList
+	Field map:TMap = New TMap
+
+	Method Insert( key:Object,value:Object )
+		list.AddLAst(New TKeyValue.Create(key, value))
+		map.Insert(key, value)
+	End Method
+	
+	Method Keys:TList()
+		Local klist:TList = New TList
+		For Local kv:TKeyValue = EachIn list
+			klist.AddLast(kv.key)
+		Next
+		Return klist
+	End Method
+	
+	Method Values:TList()
+		Local vlist:TList = New TList
+		For Local kv:TKeyValue = EachIn list
+			vlist.AddLast(kv.value)
+		Next
+		Return vlist
+	End Method
+	
+	Method Contains:Int( key:Object )
+		Return map.Contains(key)
+	End Method
+	
+	Method ValueForKey:Object( key:Object )
+		Return map.ValueForKey(key)
+	End Method
+End Type
+
 Function MakeKeywords:String()
 	Local keywords:String
 	

+ 5 - 5
decl.bmx

@@ -1824,8 +1824,8 @@ Type TModuleDecl Extends TScopeDecl
 
 	Field filepath$
 	Field relpath$
-	Field imported:TMap=New TMap'<TModuleDecl>		'Maps filepath to modules
-	Field pubImported:TMap=New TMap'<TModuleDecl>	'Ditto for publicly imported modules
+	Field imported:TUnorderedMap=New TUnorderedMap'<TModuleDecl>		'Maps filepath to modules
+	Field pubImported:TUnorderedMap =New TUnorderedMap'<TModuleDecl>	'Ditto for publicly imported modules
 
 	Field fileImports:TList=New TList'StringList
 	
@@ -1898,7 +1898,7 @@ Type TModuleDecl Extends TScopeDecl
 			
 			'If Not _env Exit
 			
-			Local imps:TMap=mdecl.imported
+			Local imps:TUnorderedMap=mdecl.imported
 			'If mdecl<>_env.ModuleScope() imps=mdecl.pubImported
 
 			For Local mdecl2:TModuleDecl=EachIn imps.Values()
@@ -1948,9 +1948,9 @@ End Type
 
 Type TAppDecl Extends TScopeDecl
 
-	Field imported:TMap=New TMap'<TModuleDecl>			'maps modpath->mdecl
+	Field imported:TUnorderedMap=New TUnorderedMap'<TModuleDecl>			'maps modpath->mdecl
 	
-	Field globalImports:TMap = New TMap
+	Field globalImports:TUnorderedMap = New TUnorderedMap
 	
 	Field mainModule:TModuleDecl
 	Field mainFunc:TFuncDecl