alien.parser: fix behavior with restarts, reported by mnestic
parent
8da50bdce9
commit
18d4f030cd
|
@ -1,6 +1,7 @@
|
|||
! (c)2009 Joe Groff bsd license
|
||||
USING: accessors alien.c-types alien.parser alien.syntax
|
||||
tools.test vocabs.parser parser ;
|
||||
tools.test vocabs.parser parser eval vocabs.parser debugger
|
||||
continuations ;
|
||||
IN: alien.parser.tests
|
||||
|
||||
TYPEDEF: char char2
|
||||
|
@ -28,4 +29,15 @@ SYMBOL: not-c-type
|
|||
[ "not-c-type" parse-c-type ] [ no-c-type? ] must-fail-with
|
||||
[ "not-word" parse-c-type ] [ error>> no-word-error? ] must-fail-with
|
||||
|
||||
] with-file-vocabs
|
||||
] with-file-vocabs
|
||||
|
||||
! Reported by mnestic
|
||||
TYPEDEF: int alien-parser-test-int ! reasonably unique name...
|
||||
|
||||
[ "OK!" ] [
|
||||
[
|
||||
"USE: specialized-arrays SPECIALIZED-ARRAY: alien-parser-test-int" eval( -- )
|
||||
! after restart, we end up here
|
||||
"OK!"
|
||||
] [ :1 ] recover
|
||||
] unit-test
|
|
@ -8,7 +8,7 @@ namespaces summary math vocabs.parser ;
|
|||
IN: alien.parser
|
||||
|
||||
: parse-c-type-name ( name -- word )
|
||||
dup search [ nip ] [ no-word ] if* ;
|
||||
dup search [ ] [ no-word ] ?if ;
|
||||
|
||||
: parse-c-type ( string -- type )
|
||||
{
|
||||
|
@ -17,7 +17,7 @@ IN: alien.parser
|
|||
{ [ dup search c-type-word? ] [ parse-c-type-name ] }
|
||||
{ [ "**" ?tail ] [ drop void* ] }
|
||||
{ [ "*" ?tail ] [ parse-c-type-name resolve-pointer-type ] }
|
||||
[ parse-c-type-name no-c-type ]
|
||||
[ dup search [ no-c-type ] [ no-word ] ?if ]
|
||||
} cond ;
|
||||
|
||||
: scan-c-type ( -- c-type )
|
||||
|
|
Loading…
Reference in New Issue