فهرست منبع

Give function pointer variables a default value.

woollybah 11 سال پیش
والد
کامیت
f607f41216
3فایلهای تغییر یافته به همراه34 افزوده شده و 1 حذف شده
  1. 2 1
      decl.bmx
  2. 2 0
      parser.bmx
  3. 30 0
      tests/framework/language/fp_local_01.bmx

+ 2 - 1
decl.bmx

@@ -246,7 +246,6 @@ Type TValDecl Extends TDecl
 	End Method
 	
 	Method OnSemant()
-
 		If declTy
 			ty=declTy.Semant()
 			
@@ -288,6 +287,8 @@ Type TValDecl Extends TDecl
 					' the default munged function value as defined in the interface
 					If TInvokeExpr(declInit) Then
 						init = declInit.Copy()
+					Else If TConstExpr(declInit) Then
+						init = declInit.Copy().Semant()
 					Else
 						Local expr:TExpr
 						

+ 2 - 0
parser.bmx

@@ -1787,6 +1787,8 @@ Type TParser
 				' check for function pointer init
 				If CParse("=") Then
 					init=ParseExpr()
+				Else
+					init=New TConstExpr.Create( ty,"" )
 				End If
 
 			Else If toke<>"const"

+ 30 - 0
tests/framework/language/fp_local_01.bmx

@@ -0,0 +1,30 @@
+SuperStrict
+
+Framework brl.standardio
+
+
+Local obj:TObject = New TObject
+
+obj.someMethod()
+
+
+Type TObject
+
+	Method someMethod()
+	
+		Local s:String
+		Local i:Int
+		
+		Local _func:String(font:TObject, charKey:String, char:Int, config:String)
+		
+		_func = _callback
+		
+		Print _func(Self, "a", 0, "b")
+		
+	End Method
+	
+End Type
+
+Function _callback:String(font:TObject, charKey:String, char:Int, config:String)
+	Return "Hello!"
+End Function