alien.parser: fix behavior with restarts, reported by mnestic

db4
Slava Pestov 2009-10-09 04:25:25 -05:00
parent 8da50bdce9
commit 18d4f030cd
2 changed files with 16 additions and 4 deletions

View File

@ -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

View File

@ -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 )