Bläddra i källkod

Merge pull request #638 from bmx-ng/task/fix-imported-gen-class-mung

Fixed names of imported generic class impls.
Brucey 1 år sedan
förälder
incheckning
06e8080af4
4 ändrade filer med 22 tillägg och 8 borttagningar
  1. 2 0
      ctranslator.bmx
  2. 13 1
      iparser.bmx
  3. 6 6
      translator.bmx
  4. 1 1
      version.bmx

+ 2 - 0
ctranslator.bmx

@@ -1836,6 +1836,7 @@ t:+"NULLNULLNULL"
 			Local ctorMunged:String
 			
 			If expr.classDecl = expr.ctor.scope Then
+				MungDecl expr.ctor
 				ctorMunged = expr.ctor.munged
 			Else
 				ctorMunged = expr.classDecl.actual.munged + "_" + expr.ctor.ident + MangleMethod(expr.ctor)
@@ -3336,6 +3337,7 @@ End Rem
 '			odecl=odecl.overrides
 '		Wend
 
+		MungDecl decl
 		Local id$=decl.munged
 		Local pre:String
 

+ 13 - 1
iparser.bmx

@@ -418,7 +418,19 @@ Type TIParser
 
 											cdecl.scope.munged = class.munged
 											cdecl.scope.scope = _appInstance
-										
+
+											If Not cdecl.munged Then
+												Local mung:String = cdecl.scope.munged + "_" + cdecl.ident
+							
+												If cdecl.instArgs Then
+													For Local ty:TType = EachIn cdecl.instArgs
+														mung :+ TTranslator.TransMangleType(ty)
+													Next
+												End If
+
+												cdecl.munged = mung
+											End If
+
 										End If
 									
 										' don't add to module

+ 6 - 6
translator.bmx

@@ -206,7 +206,7 @@ Type TTranslator
 		Next
 	End Method
 
-	Method TransManglePointer$( ty:TType )
+	Function TransManglePointer$( ty:TType )
 		Local p:String
 		
 		If ty
@@ -226,9 +226,9 @@ Type TTranslator
 		End If
 		
 		Return p
-	End Method
+	End Function
 
-	Method TransMangleType:String(ty:TType)
+	Function TransMangleType:String(ty:TType)
 		Local p:String = TransManglePointer(ty)
 
 		If TVoidType( ty ) Return "v"
@@ -277,7 +277,7 @@ Type TTranslator
 		If TEnumType( ty ) Return p + "e" + TEnumType( ty ).decl.ident
 		
 		Err "Unsupported type for name mangling : " + ty.ToString()
-	End Method
+	End Function
 
 	Method MangleMethod:String(fdecl:TFuncDecl)
 		If (fdecl.IsMethod() And Not fdecl.ClassScope().IsStruct())Or fdecl.IsCtor() Then
@@ -295,7 +295,7 @@ Type TTranslator
 		End If
 	End Method
 	
-	Method MangleMethodArgs:String(fdecl:TFuncDecl)
+	Function MangleMethodArgs:String(fdecl:TFuncDecl)
 		Local s:String
 		For Local arg:TArgDecl = EachIn fdecl.argDecls
 			If Not s Then
@@ -304,7 +304,7 @@ Type TTranslator
 			s :+ TransMangleType(arg.ty)
 		Next
 		Return s
-	End Method
+	End Function
 
 	Method equalsTorFunc:Int(classDecl:TClassDecl, func:TFuncDecl)
 		If func.IdentLower() = "new" Or func.IdentLower() = "delete" Then

+ 1 - 1
version.bmx

@@ -23,4 +23,4 @@
 '
 SuperStrict
 
-Const BCC_VERSION:String = "0.140"
+Const BCC_VERSION:String = "0.141"