jscript: Added 'unterminated string' error.

This commit is contained in:
Piotr Caban 2009-08-05 23:27:09 +02:00 committed by Alexandre Julliard
parent 5ee34ea870
commit ec25138a46
6 changed files with 10 additions and 6 deletions

View File

@ -56,6 +56,7 @@ typedef struct _parser_ctx_t {
source_elements_t *source; source_elements_t *source;
BOOL nl; BOOL nl;
BOOL is_html; BOOL is_html;
BOOL lexer_error;
HRESULT hres; HRESULT hres;
jsheap_t heap; jsheap_t heap;

View File

@ -30,6 +30,7 @@ STRINGTABLE DISCARDABLE
IDS_SEMICOLON "Expected ';'" IDS_SEMICOLON "Expected ';'"
IDS_LBRACKET "Expected '('" IDS_LBRACKET "Expected '('"
IDS_RBRACKET "Expected ')'" IDS_RBRACKET "Expected ')'"
IDS_UNTERMINATED_STR "Unterminated string constant"
IDS_NOT_FUNC "Function expected" IDS_NOT_FUNC "Function expected"
IDS_NOT_DATE "'[object]' is not a date object" IDS_NOT_DATE "'[object]' is not a date object"
IDS_NOT_NUM "Number expected" IDS_NOT_NUM "Number expected"

View File

@ -100,7 +100,8 @@ static const struct {
static int lex_error(parser_ctx_t *ctx, HRESULT hres) static int lex_error(parser_ctx_t *ctx, HRESULT hres)
{ {
ctx->hres = hres; ctx->hres = JSCRIPT_ERROR|hres;
ctx->lexer_error = TRUE;
return -1; return -1;
} }
@ -342,10 +343,8 @@ static int parse_string_literal(parser_ctx_t *ctx, const WCHAR **ret, WCHAR endc
ctx->ptr++; ctx->ptr++;
} }
if(ctx->ptr == ctx->end) { if(ctx->ptr == ctx->end)
WARN("unexpected end of file\n"); return lex_error(ctx, IDS_UNTERMINATED_STR);
return lex_error(ctx, E_FAIL);
}
len = ctx->ptr-ptr; len = ctx->ptr-ptr;

View File

@ -1577,6 +1577,7 @@ static void program_parsed(parser_ctx_t *ctx, source_elements_t *source)
pop_func(ctx); pop_func(ctx);
ctx->source = source; ctx->source = source;
if(!ctx->lexer_error)
ctx->hres = S_OK; ctx->hres = S_OK;
} }

View File

@ -26,6 +26,7 @@
#define IDS_SEMICOLON 0x03EC #define IDS_SEMICOLON 0x03EC
#define IDS_LBRACKET 0x03ED #define IDS_LBRACKET 0x03ED
#define IDS_RBRACKET 0x03EE #define IDS_RBRACKET 0x03EE
#define IDS_UNTERMINATED_STR 0x03F7
#define IDS_NOT_FUNC 0x138A #define IDS_NOT_FUNC 0x138A
#define IDS_NOT_DATE 0x138E #define IDS_NOT_DATE 0x138E
#define IDS_NOT_NUM 0x1389 #define IDS_NOT_NUM 0x1389

View File

@ -1333,5 +1333,6 @@ exception_test(function() {eval("for(i=0")}, "SyntaxError", -2146827284);
exception_test(function() {eval("for(i=0;i<10")}, "SyntaxError", -2146827284); exception_test(function() {eval("for(i=0;i<10")}, "SyntaxError", -2146827284);
exception_test(function() {eval("while(")}, "SyntaxError", -2146827286); exception_test(function() {eval("while(")}, "SyntaxError", -2146827286);
exception_test(function() {eval("if(")}, "SyntaxError", -2146827286); exception_test(function() {eval("if(")}, "SyntaxError", -2146827286);
exception_test(function() {eval("'unterminated")}, "SyntaxError", -2146827273);
reportSuccess(); reportSuccess();