diff --git a/collects/profj/parsers/intermediate-parser.ss b/collects/profj/parsers/intermediate-parser.ss index 99bb02338c..f904d94cdb 100644 --- a/collects/profj/parsers/intermediate-parser.ss +++ b/collects/profj/parsers/intermediate-parser.ss @@ -536,7 +536,10 @@ [(RelationalExpression <= ShiftExpression) (make-bin-op #f (build-src 3) '<= $1 $3 (build-src 2 2))] [(RelationalExpression >= ShiftExpression) - (make-bin-op #f (build-src 3) '>= $1 $3 (build-src 2 2))]) + (make-bin-op #f (build-src 3) '>= $1 $3 (build-src 2 2))] + [(RelationalExpression instanceof ReferenceType) + (make-instanceof #f (build-src 3) $1 $3 (build-src 2 2))] + ) (EqualityExpression [(RelationalExpression) $1] diff --git a/collects/profj/parsers/parse-error.ss b/collects/profj/parsers/parse-error.ss index 152d47a011..54f79cee47 100644 --- a/collects/profj/parsers/parse-error.ss +++ b/collects/profj/parsers/parse-error.ss @@ -2137,7 +2137,7 @@ 'if-exp-colon getter #f stmt-exp?)) ((and (advanced?) (o-bracket? tok)) (parse-expression cur-tok (getter) 'array-acc getter statement-ok? stmt-exp?)) - ((and (advanced?) (instanceof-token? tok)) + ((and (or (advanced?) (intermediate?)) (instanceof-token? tok)) (parse-expression cur-tok (getter) 'instanceof getter #f stmt-exp?)) (else cur-tok)))) ((dot-op-or-end) @@ -2168,7 +2168,7 @@ ((and (advanced?) (if-exp? tok)) (parse-expression cur-tok (parse-expression cur-tok (getter) 'start getter #f #f) 'if-exp-colon getter #f stmt-exp?)) ((and (advanced?) (o-bracket? tok)) (parse-expression cur-tok (getter) 'array-acc getter statement-ok? stmt-exp?)) - ((and (advanced?) (instanceof-token? tok)) (parse-expression cur-tok (getter) 'instanceof getter #f stmt-exp?)) + ((and (or (advanced?) (intermediate?)) (instanceof-token? tok)) (parse-expression cur-tok (getter) 'instanceof getter #f stmt-exp?)) (else cur-tok))) ;Advanced ((array-acc) @@ -2291,13 +2291,15 @@ ;Advanced ((instanceof-array) (case kind - ((O_BRACKET) - (let ((next (getter))) - (if (c-bracket? (get-tok next)) - (parse-expression next (getter) 'instanceof-array getter statement-ok? stmt-exp?) - (parse-error (format "Array types are of the form type[], expected ] found ~a" - (format-out (get-tok next))) - start (get-end next))))) + ((O_BRACE) + (if (intermediate?) + (parse-error "'[' may not follow the name of a type" start end) + (let ((next (getter))) + (if (c-brace? (get-tok next)) + (parse-expression next (getter) 'instanceof-array getter statement-ok? stmt-exp?) + (parse-error (format "Array types are of the form type[], expected ] found ~a" + (format-out (get-tok next))) + start (get-end next)))))) (else (parse-expression pre cur-tok 'op-or-end getter statement-ok? stmt-exp?)))) ;Advanced ((if-exp-colon) diff --git a/collects/profj/tool.ss b/collects/profj/tool.ss index f465118370..24daec96ed 100644 --- a/collects/profj/tool.ss +++ b/collects/profj/tool.ss @@ -405,7 +405,7 @@ #f)) (_ tc))) (process-extras (cdr extras) type-recs)) #;(cons (test-case-test (car extras)) (process-extras (cdr extras) type-recs))) - ((interact-case? (car extras)) + #;((interact-case? (car extras)) (let ((interact-box (interact-case-box (car extras)))) (send interact-box set-level level) (send interact-box set-records execute-types)