alien.parser: fix behavior with restarts, reported by mnestic
parent
8da50bdce9
commit
18d4f030cd
|
@ -1,6 +1,7 @@
|
||||||
! (c)2009 Joe Groff bsd license
|
! (c)2009 Joe Groff bsd license
|
||||||
USING: accessors alien.c-types alien.parser alien.syntax
|
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
|
IN: alien.parser.tests
|
||||||
|
|
||||||
TYPEDEF: char char2
|
TYPEDEF: char char2
|
||||||
|
@ -29,3 +30,14 @@ SYMBOL: not-c-type
|
||||||
[ "not-word" parse-c-type ] [ error>> no-word-error? ] 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
|
IN: alien.parser
|
||||||
|
|
||||||
: parse-c-type-name ( name -- word )
|
: parse-c-type-name ( name -- word )
|
||||||
dup search [ nip ] [ no-word ] if* ;
|
dup search [ ] [ no-word ] ?if ;
|
||||||
|
|
||||||
: parse-c-type ( string -- type )
|
: parse-c-type ( string -- type )
|
||||||
{
|
{
|
||||||
|
@ -17,7 +17,7 @@ IN: alien.parser
|
||||||
{ [ dup search c-type-word? ] [ parse-c-type-name ] }
|
{ [ dup search c-type-word? ] [ parse-c-type-name ] }
|
||||||
{ [ "**" ?tail ] [ drop void* ] }
|
{ [ "**" ?tail ] [ drop void* ] }
|
||||||
{ [ "*" ?tail ] [ parse-c-type-name resolve-pointer-type ] }
|
{ [ "*" ?tail ] [ parse-c-type-name resolve-pointer-type ] }
|
||||||
[ parse-c-type-name no-c-type ]
|
[ dup search [ no-c-type ] [ no-word ] ?if ]
|
||||||
} cond ;
|
} cond ;
|
||||||
|
|
||||||
: scan-c-type ( -- c-type )
|
: scan-c-type ( -- c-type )
|
||||||
|
|
Loading…
Reference in New Issue