]
[ error>> error>> redefine-error? ]
must-fail-with
+
+[
+ "IN: alien.c-types.tests
+ USE: alien.syntax
+ USE: alien.c-types
+ CALLBACK: void cb987 ( )
+ CALLBACK: void cb987 ( )" eval( -- )
+]
+[ error>> error>> redefine-error? ]
+must-fail-with
+
+[
+ "IN: alien.c-types.tests
+ USE: alien.syntax
+ USE: alien.c-types
+ FUNCTION: void func987 ( )
+ FUNCTION: void func987 ( )" eval( -- )
+]
+[ error>> error>> redefine-error? ]
+must-fail-with
+
+! generic -> callback
+"IN: alien.c-types.tests
+USE: alien.syntax
+USE: alien.c-types
+GENERIC: foo-func ( x -- )
+" eval( -- )
+
+"IN: alien.c-types.tests
+USE: alien.syntax
+USE: alien.c-types
+CALLBACK: void foo-func ( )
+" eval( -- )
+
+! generic -> typedef
+"IN: alien.c-types.tests
+USE: alien.syntax
+USE: alien.c-types
+GENERIC: foo-func ( x -- )
+" eval( -- )
+
+"IN: alien.c-types.tests
+USE: alien.syntax
+USE: alien.c-types
+TYPEDEF: void* foo-func
+" eval( -- )
validate-c-type-name current-vocab create-word {
[ fake-definition ]
[ set-last-word ]
+ [ reset-generic ]
[ reset-c-type ]
[ ]
} cleave ;
[ define-enum-value ]
[ [ 2array suffix! ] [ enum>number 1 + ] bi ] 2bi ;
-: parse-enum-name ( -- name )
+: parse-enum-name ( -- word )
CREATE-C-TYPE dup save-location ;
: parse-enum-base-type ( -- base-type token )
'[ [ _ _ _ ] dip alien-callback ] ;
:: make-callback-type ( return function library types names -- word quot effect )
- function (CREATE-C-TYPE) :> type-word
+ function create-function :> type-word
void* type-word typedef
type-word names return function-effect "callback-effect" set-word-prop
type-word library "callback-library" set-word-prop