Made test-boxes work in ProfessorJ
svn: r219
This commit is contained in:
parent
d3a3a665eb
commit
fdc3e5d0e4
|
@ -169,16 +169,16 @@
|
||||||
(begin
|
(begin
|
||||||
(build-interactions-info ast level location type-recs)
|
(build-interactions-info ast level location type-recs)
|
||||||
(check-interactions-types ast level location type-recs)
|
(check-interactions-types ast level location type-recs)
|
||||||
(translate-interactions ast location type-recs)))))
|
(translate-interactions ast location type-recs #t)))))
|
||||||
|
|
||||||
(define (compile-interactions-ast ast location level type-recs)
|
(define (compile-interactions-ast ast location level type-recs gen-require?)
|
||||||
(to-file #f)
|
(to-file #f)
|
||||||
(if (null? ast)
|
(if (null? ast)
|
||||||
(datum->syntax-object #f '(void) #f)
|
(datum->syntax-object #f '(void) #f)
|
||||||
(begin
|
(begin
|
||||||
(build-interactions-info ast level location type-recs)
|
(build-interactions-info ast level location type-recs)
|
||||||
(check-interactions-types ast level location type-recs)
|
(check-interactions-types ast level location type-recs)
|
||||||
(translate-interactions ast location type-recs))))
|
(translate-interactions ast location type-recs gen-require?))))
|
||||||
|
|
||||||
(define-struct elt (prev val next))
|
(define-struct elt (prev val next))
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
(define Object-Mix
|
(define Object-Mix
|
||||||
(lambda (parent)
|
(lambda (parent)
|
||||||
(class* parent (ObjectI)
|
(class* parent (ObjectI)
|
||||||
|
(inspect #f)
|
||||||
(define/public (Object-constructor) (void))
|
(define/public (Object-constructor) (void))
|
||||||
|
|
||||||
;Needs to do something
|
;Needs to do something
|
||||||
|
@ -269,7 +269,7 @@
|
||||||
|
|
||||||
(define java-array
|
(define java-array
|
||||||
(class* Object ()
|
(class* Object ()
|
||||||
|
(inspect #f)
|
||||||
(define array null)
|
(define array null)
|
||||||
(define rt #f)
|
(define rt #f)
|
||||||
(define/public (get-rt) rt)
|
(define/public (get-rt) rt)
|
||||||
|
@ -411,7 +411,8 @@
|
||||||
|
|
||||||
(define String
|
(define String
|
||||||
(class* Object (Comparable Serializable)
|
(class* Object (Comparable Serializable)
|
||||||
|
|
||||||
|
(inspect #f)
|
||||||
;private field containing scheme string
|
;private field containing scheme string
|
||||||
(define text "")
|
(define text "")
|
||||||
;Accessor for scheme string
|
;Accessor for scheme string
|
||||||
|
@ -796,6 +797,7 @@
|
||||||
(define Throwable
|
(define Throwable
|
||||||
(class* Object (Serializable)
|
(class* Object (Serializable)
|
||||||
|
|
||||||
|
(inspect #f)
|
||||||
;private fields
|
;private fields
|
||||||
;message: String
|
;message: String
|
||||||
(define message (make-java-string ""))
|
(define message (make-java-string ""))
|
||||||
|
|
|
@ -316,7 +316,9 @@
|
||||||
(syntax-case lexeme ()
|
(syntax-case lexeme ()
|
||||||
((parse-example-box examples) (token-EXAMPLE (make-example-box (syntax examples))))
|
((parse-example-box examples) (token-EXAMPLE (make-example-box (syntax examples))))
|
||||||
(_
|
(_
|
||||||
(token-OTHER_SPECIAL (list lexeme start-pos end-pos)))))
|
(if (syntax-property lexeme 'test-case-box)
|
||||||
|
(token-TEST_SUITE (make-test-case lexeme))
|
||||||
|
(token-OTHER_SPECIAL (list lexeme start-pos end-pos))))))
|
||||||
|
|
||||||
#;(begin(printf "lexing a special")
|
#;(begin(printf "lexing a special")
|
||||||
(syntax-case lexeme ()
|
(syntax-case lexeme ()
|
||||||
|
|
|
@ -160,8 +160,8 @@
|
||||||
;-------------------------------------------------------------------------------------------------------------------------
|
;-------------------------------------------------------------------------------------------------------------------------
|
||||||
;Translation
|
;Translation
|
||||||
|
|
||||||
;translate-interactions: ast location type-records -> syntax
|
;translate-interactions: ast location type-records boolean-> syntax
|
||||||
(define (translate-interactions prog location type-recs)
|
(define (translate-interactions prog location type-recs gen-reqs?)
|
||||||
(loc location)
|
(loc location)
|
||||||
(interactions? #t)
|
(interactions? #t)
|
||||||
(types type-recs)
|
(types type-recs)
|
||||||
|
@ -171,7 +171,7 @@
|
||||||
(send type-recs set-class-reqs null)
|
(send type-recs set-class-reqs null)
|
||||||
(make-syntax #f
|
(make-syntax #f
|
||||||
`(begin ,@(map (lambda (f)
|
`(begin ,@(map (lambda (f)
|
||||||
(translate-interactions f location type-recs))
|
(translate-interactions f location type-recs gen-reqs?))
|
||||||
prog))
|
prog))
|
||||||
#f))
|
#f))
|
||||||
((field? prog)
|
((field? prog)
|
||||||
|
@ -187,7 +187,7 @@
|
||||||
((expr? prog) (translate-expression prog))
|
((expr? prog) (translate-expression prog))
|
||||||
(else
|
(else
|
||||||
(error 'translate-interactions "Internal Error: translate-interactions given ~a" prog)))))
|
(error 'translate-interactions "Internal Error: translate-interactions given ~a" prog)))))
|
||||||
(if (null? reqs)
|
(if (or (null? reqs) (not gen-reqs?))
|
||||||
syn
|
syn
|
||||||
(make-syntax #f
|
(make-syntax #f
|
||||||
`(begin (require ,@(remove-dup-syntax (translate-interact-require reqs type-recs)))
|
`(begin (require ,@(remove-dup-syntax (translate-interact-require reqs type-recs)))
|
||||||
|
|
|
@ -123,7 +123,7 @@
|
||||||
(drscheme:language-configuration:add-language
|
(drscheme:language-configuration:add-language
|
||||||
(make-object ((drscheme:language:get-default-mixin) intermediate-lang%)))
|
(make-object ((drscheme:language:get-default-mixin) intermediate-lang%)))
|
||||||
(drscheme:language-configuration:add-language
|
(drscheme:language-configuration:add-language
|
||||||
(make-object ((drscheme:language:get-default-mixin) beginner-lang%))))
|
(make-object ((drscheme:language:get-default-mixin) beginner-lang%))))
|
||||||
|
|
||||||
;(make-profj-settings symbol boolean (list string))
|
;(make-profj-settings symbol boolean (list string))
|
||||||
(define-struct profj-settings (print-style print-full? classpath) (make-inspector))
|
(define-struct profj-settings (print-style print-full? classpath) (make-inspector))
|
||||||
|
@ -353,7 +353,7 @@
|
||||||
(lambda ()
|
(lambda ()
|
||||||
(if (eof-object? (peek-char-or-special port))
|
(if (eof-object? (peek-char-or-special port))
|
||||||
eof
|
eof
|
||||||
(syntax-as-top
|
(syntax-as-top
|
||||||
(datum->syntax-object
|
(datum->syntax-object
|
||||||
#f
|
#f
|
||||||
#;`(compile-interactions-helper ,(lambda (ast) (compile-interactions-ast ast name level execute-types))
|
#;`(compile-interactions-helper ,(lambda (ast) (compile-interactions-ast ast name level execute-types))
|
||||||
|
@ -365,7 +365,7 @@
|
||||||
(define/private (process-extras extras type-recs)
|
(define/private (process-extras extras type-recs)
|
||||||
(cond
|
(cond
|
||||||
((null? extras) null)
|
((null? extras) null)
|
||||||
((example-box? (car extras))
|
((example-box? (car extras))
|
||||||
(let ((contents (eval (example-box-contents (car extras)))))
|
(let ((contents (eval (example-box-contents (car extras)))))
|
||||||
(append
|
(append
|
||||||
(map (lambda (example)
|
(map (lambda (example)
|
||||||
|
@ -381,43 +381,24 @@
|
||||||
contents)
|
contents)
|
||||||
(process-extras (cdr extras) type-recs))))
|
(process-extras (cdr extras) type-recs))))
|
||||||
((test-case? (car extras))
|
((test-case? (car extras))
|
||||||
(cons
|
;(printf "in process-extras~n")
|
||||||
(let ((new-test-case
|
;(printf "~a~n" (test-case-test (car extras)))
|
||||||
(lambda (to-test-stx exp-stx record set-actuals)
|
(cons
|
||||||
(let ([to-test-values (call-with-values (lambda () to-test-stx) list)]
|
(let ((tc (test-case-test (car extras))))
|
||||||
[exp-values (call-with-values (lambda () exp-stx) list)])
|
(syntax-case tc (parse-java-interactions)
|
||||||
(record (and (= (length to-test-values) (length exp-values))
|
((test-case eq (parse-java-interactions ast-1 ed-1)
|
||||||
(andmap (dynamic-require '(lib "profj-testing.ss" "profj") 'java-values-equal?)
|
(parse-java-interactions ast-2 ed-2) end1 end2)
|
||||||
to-test-values exp-values)))
|
(datum->syntax-object #f
|
||||||
(set-actuals to-test-values)))))
|
`(,(syntax test-case)
|
||||||
(let-values (((syn t t2) (send (test-case-test (car extras)) read-special #f #f #f #f)))
|
,(dynamic-require '(lib "profj-testing.ss" "profj") 'java-values-equal?);,(syntax eq)
|
||||||
(syntax-case syn ()
|
,(compile-interactions-ast (syntax-object->datum (syntax ast-1))
|
||||||
((test-case equal? exp1 exp2 exp3 exp4)
|
(syntax-object->datum (syntax ed-1)) level type-recs #f)
|
||||||
(syntax-case (syntax exp1) (begin require)
|
,(compile-interactions-ast (syntax-object->datum (syntax ast-2))
|
||||||
((begin (require req ...) exp)
|
(syntax-object->datum (syntax ed-2)) level type-recs #f)
|
||||||
(syntax-case (syntax exp2) (begin require)
|
,(syntax end1) ,(syntax end2))
|
||||||
((begin (require req2 ...) new-exp2)
|
#f))
|
||||||
(datum->syntax-object #f
|
(_ tc))) (process-extras (cdr extras) type-recs))
|
||||||
`(begin ,(syntax (require req ... req2 ...))
|
#;(cons (test-case-test (car extras)) (process-extras (cdr extras) type-recs)))
|
||||||
(,new-test-case ,(syntax exp) ,(syntax new-exp2)
|
|
||||||
,(syntax exp3) ,(syntax exp4)))
|
|
||||||
#f))
|
|
||||||
(else
|
|
||||||
(datum->syntax-object #f
|
|
||||||
`(begin ,(syntax (require req ...))
|
|
||||||
(,new-test-case ,(syntax exp) ,(syntax exp2) ,(syntax exp3) ,(syntax exp4)))
|
|
||||||
#f))))
|
|
||||||
(else
|
|
||||||
(syntax-case (syntax exp2) (begin require)
|
|
||||||
((begin (require req2 ...) new-exp2)
|
|
||||||
(datum->syntax-object #f
|
|
||||||
`(begin ,(syntax (require req2 ...))
|
|
||||||
(,new-test-case ,(syntax exp1) ,(syntax new-exp2) ,(syntax exp3) ,(syntax exp4)))
|
|
||||||
#f))
|
|
||||||
(else
|
|
||||||
(datum->syntax-object #f `(,new-test-case ,(syntax exp1) ,(syntax exp2) ,(syntax exp3) ,(syntax exp4)) #f))))))
|
|
||||||
(else syn))))
|
|
||||||
(process-extras (cdr extras) type-recs)))
|
|
||||||
((interact-case? (car extras))
|
((interact-case? (car extras))
|
||||||
(let ((interact-box (interact-case-box (car extras))))
|
(let ((interact-box (interact-case-box (car extras))))
|
||||||
(send interact-box set-level level)
|
(send interact-box set-level level)
|
||||||
|
@ -512,7 +493,7 @@
|
||||||
((parse-java-interactions ex loc)
|
((parse-java-interactions ex loc)
|
||||||
(let ((exp (syntax-object->datum (syntax ex))))
|
(let ((exp (syntax-object->datum (syntax ex))))
|
||||||
(old-current-eval
|
(old-current-eval
|
||||||
(syntax-as-top (compile-interactions-ast exp (syntax loc) level execute-types)))))
|
(syntax-as-top (compile-interactions-ast exp (syntax loc) level execute-types #t)))))
|
||||||
(_ (old-current-eval exp))))))
|
(_ (old-current-eval exp))))))
|
||||||
(with-handlers ([void (lambda (x) (printf "~a~n" (exn-message x)))])
|
(with-handlers ([void (lambda (x) (printf "~a~n" (exn-message x)))])
|
||||||
(namespace-require 'mzscheme)
|
(namespace-require 'mzscheme)
|
||||||
|
@ -529,7 +510,10 @@
|
||||||
(let ((print-full? (profj-settings-print-full? settings))
|
(let ((print-full? (profj-settings-print-full? settings))
|
||||||
(style (profj-settings-print-style settings)))
|
(style (profj-settings-print-style settings)))
|
||||||
(if (is-a? value String)
|
(if (is-a? value String)
|
||||||
(write-special (format "~v" (send value get-mzscheme-string)) port)
|
(display (format-java value print-full? style null #t 0) port)
|
||||||
|
#;(begin
|
||||||
|
(write-special (format "~v" (send value get-mzscheme-string)) port)
|
||||||
|
(void))
|
||||||
(let ((out (format-java value print-full? style null #f 0)))
|
(let ((out (format-java value print-full? style null #f 0)))
|
||||||
(if (< 25 (string-length out))
|
(if (< 25 (string-length out))
|
||||||
(display (format-java value print-full? style null #t 0) port)
|
(display (format-java value print-full? style null #t 0) port)
|
||||||
|
@ -538,6 +522,7 @@
|
||||||
(render-value value settings port)(newline port))
|
(render-value value settings port)(newline port))
|
||||||
|
|
||||||
(define/public (create-executable fn parent . args)
|
(define/public (create-executable fn parent . args)
|
||||||
|
(printf "create-exe called~n")
|
||||||
(message-box "Unsupported"
|
(message-box "Unsupported"
|
||||||
"Sorry - executables are not supported for Java at this time"
|
"Sorry - executables are not supported for Java at this time"
|
||||||
parent))
|
parent))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user