Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Why3
why3
Commits
ba2f367a
Commit
ba2f367a
authored
May 24, 2018
by
Guillaume Melquiond
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Try restoring trywhy3.
parent
75cc40ed
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
64 deletions
+28
-64
src/trywhy3/.merlin
src/trywhy3/.merlin
+2
-0
src/trywhy3/trywhy3.ml
src/trywhy3/trywhy3.ml
+20
-18
src/trywhy3/why3_worker.ml
src/trywhy3/why3_worker.ml
+6
-46
No files found.
src/trywhy3/.merlin
0 → 100644
View file @
ba2f367a
PKG js_of_ocaml js_of_ocaml.syntax ocplib-simplex
REC
src/trywhy3/trywhy3.ml
View file @
ba2f367a
...
@@ -25,7 +25,7 @@ let get_global ident =
...
@@ -25,7 +25,7 @@ let get_global ident =
let
int_of_js_string
s
=
int_of_string
(
Js
.
to_string
s
)
let
int_of_js_string
s
=
int_of_string
(
Js
.
to_string
s
)
let
blob_url_of_string
s
=
let
blob_url_of_string
s
=
let
s
=
JSU
.
inject
(
Js
.
string
(
Sys_js
.
file_content
s
))
in
let
s
=
JSU
.
inject
(
Js
.
string
(
Sys_js
.
read_file
~
name
:
s
))
in
let
_Blob
=
get_global
"Blob"
in
let
_Blob
=
get_global
"Blob"
in
let
blob
=
let
blob
=
jsnew
_Blob
(
Js
.
array
[
|
s
|
])
jsnew
_Blob
(
Js
.
array
[
|
s
|
])
...
@@ -682,22 +682,24 @@ module ToolBar =
...
@@ -682,22 +682,24 @@ module ToolBar =
let
open_
=
getElement
AsHtml
.
input
"why3-open"
let
open_
=
getElement
AsHtml
.
input
"why3-open"
let
()
=
let
()
=
open_
##
onchange
<-
open_
##
onchange
<-
Dom
.
handler
(
fun
_e
->
Dom
.
handler
ExampleList
.
unselect
()
;
(
fun
_e
->
match
Js
.
Optdef
.
to_option
(
open_
##
files
)
with
ExampleList
.
unselect
()
;
|
None
->
Js
.
_false
match
Js
.
Optdef
.
to_option
(
open_
##
files
)
with
|
Some
(
f
)
->
None
->
Js
.
_false
match
Js
.
Opt
.
to_option
(
f
##
item
(
0
))
with
|
Some
(
f
)
->
match
Js
.
Opt
.
to_option
(
f
##
item
(
0
))
with
|
None
->
Js
.
_false
None
->
Js
.
_false
|
Some
f
->
|
Some
f
->
let
reader
=
jsnew
File
.
fileReader
()
in
ignore
(
reader
##
onloadend
<-
Dom
.
handler
(
fun
_
->
Lwt
.
bind
(
File
.
readAsText
f
)
match
Js
.
Opt
.
to_option
(
File
.
CoerceTo
.
string
(
reader
##
result
))
with
(
fun
str
->
|
None
->
Js
.
_true
Editor
.
name
:=
File
.
filename
f
;
|
Some
content
->
Editor
.
set_value
str
;
Editor
.
name
:=
File
.
filename
f
;
Lwt
.
return_unit
));
Editor
.
set_value
content
;
Js
.
_true
Js
.
_true
);
reader
##
readAsText
((
f
:>
File
.
blob
Js
.
t
));
Js
.
_true
)
)
let
open_
()
=
if
Editor
.
confirm_unsaved
()
then
open_
##
click
()
let
open_
()
=
if
Editor
.
confirm_unsaved
()
then
open_
##
click
()
...
@@ -1063,7 +1065,7 @@ let () =
...
@@ -1063,7 +1065,7 @@ let () =
));
));
ToolBar
.
add_action
Dialogs
.
button_close
Dialogs
.
close
;
ToolBar
.
add_action
Dialogs
.
button_close
Dialogs
.
close
;
KeyBinding
.
add_global
Keycode
.
esc
Dialogs
.
close
;
(*
KeyBinding.add_global Keycode.esc Dialogs.close;
*)
Dialogs
.(
set_onchange
radio_wide
(
fun
_
->
Panel
.
set_wide
true
));
Dialogs
.(
set_onchange
radio_wide
(
fun
_
->
Panel
.
set_wide
true
));
Dialogs
.(
set_onchange
radio_column
(
fun
_
->
Panel
.
set_wide
false
))
Dialogs
.(
set_onchange
radio_column
(
fun
_
->
Panel
.
set_wide
false
))
...
...
src/trywhy3/why3_worker.ml
View file @
ba2f367a
...
@@ -318,57 +318,17 @@ let why3_parse_theories theories =
...
@@ -318,57 +318,17 @@ let why3_parse_theories theories =
List
.
iter
(
fun
i
->
why3_prove
i
)
subs
List
.
iter
(
fun
i
->
why3_prove
i
)
subs
)
theories
)
theories
let
execute_symbol
m
fmt
ps
=
let
why3_execute
modules
=
match
Mlw_decl
.
find_definition
m
.
Mlw_module
.
mod_known
ps
with
|
None
->
fprintf
fmt
"function '%s' has no definition"
ps
.
Mlw_expr
.
ps_name
.
Ident
.
id_string
|
Some
d
->
let
lam
=
d
.
Mlw_expr
.
fun_lambda
in
match
lam
.
Mlw_expr
.
l_args
with
|
[
pvs
]
when
Mlw_ty
.
ity_equal
pvs
.
Mlw_ty
.
pv_ity
Mlw_ty
.
ity_unit
->
begin
let
spec
=
lam
.
Mlw_expr
.
l_spec
in
let
eff
=
spec
.
Mlw_ty
.
c_effect
in
let
writes
=
eff
.
Mlw_ty
.
eff_writes
in
let
body
=
lam
.
Mlw_expr
.
l_expr
in
try
let
res
,
_final_env
=
Mlw_interp
.
eval_global_expr
env
m
.
Mlw_module
.
mod_known
m
.
Mlw_module
.
mod_theory
.
Theory
.
th_known
writes
body
in
match
res
with
|
Mlw_interp
.
Normal
v
->
Mlw_interp
.
print_value
fmt
v
|
Mlw_interp
.
Excep
(
x
,
v
)
->
fprintf
fmt
"exception %s(%a)"
x
.
Mlw_ty
.
xs_name
.
Ident
.
id_string
Mlw_interp
.
print_value
v
|
Mlw_interp
.
Irred
e
->
fprintf
fmt
"cannot execute expression@ @[%a@]"
Mlw_pretty
.
print_expr
e
|
Mlw_interp
.
Fun
_
->
fprintf
fmt
"result is a function"
with
e
->
fprintf
fmt
"failure during execution of function: %a (%s)"
Exn_printer
.
exn_printer
e
(
Printexc
.
to_string
e
)
end
|
_
->
fprintf
fmt
"Only functions with one unit argument can be executed"
let
why3_execute
(
modules
,_
theories
)
=
let
result
=
let
result
=
let
mods
=
let
mods
=
Wstdlib
.
Mstr
.
fold
Wstdlib
.
Mstr
.
fold
(
fun
_k
m
acc
->
(
fun
_k
m
acc
->
let
th
=
m
.
Mlw_
module
.
mod_theory
in
let
th
=
m
.
P
module
.
mod_theory
in
let
modname
=
th
.
Theory
.
th_name
.
Ident
.
id_string
in
let
modname
=
th
.
Theory
.
th_name
.
Ident
.
id_string
in
try
try
let
ps
=
let
rs
=
Pmodule
.
ns_find_rs
m
.
Pmodule
.
mod_export
[
"main"
]
Mlw_module
.
ns_find_ps
m
.
Mlw_module
.
mod_export
[
"main"
]
in
in
let
result
=
Pp
.
sprintf
"%a"
(
execute
_symbol
m
)
p
s
in
let
result
=
Pp
.
sprintf
"%a"
(
Pinterp
.
eval_global
_symbol
env
m
)
r
s
in
let
loc
=
let
loc
=
Opt
.
get_def
Loc
.
dummy_position
th
.
Theory
.
th_name
.
Ident
.
id_loc
Opt
.
get_def
Loc
.
dummy_position
th
.
Theory
.
th_name
.
Ident
.
id_loc
in
in
...
@@ -390,7 +350,7 @@ let why3_execute (modules,_theories) =
...
@@ -390,7 +350,7 @@ let why3_execute (modules,_theories) =
W
.
send
result
W
.
send
result
let
()
=
Sys_js
.
re
gis
te
r
_file
~
name
:
temp_file_name
~
content
:
""
let
()
=
Sys_js
.
c
re
a
te_file
~
name
:
temp_file_name
~
content
:
""
let
why3_run
f
lang
code
=
let
why3_run
f
lang
code
=
try
try
...
@@ -430,7 +390,7 @@ let () =
...
@@ -430,7 +390,7 @@ let () =
|
ExecuteBuffer
code
->
|
ExecuteBuffer
code
->
Task
.
clear_warnings
()
;
Task
.
clear_warnings
()
;
Task
.
clear_table
()
;
Task
.
clear_table
()
;
why3_run
why3_execute
Mlw_
module
.
mlw_language
code
why3_run
why3_execute
P
module
.
mlw_language
code
|
SetStatus
(
st
,
id
)
->
List
.
iter
W
.
send
(
Task
.
set_status
id
st
)
|
SetStatus
(
st
,
id
)
->
List
.
iter
W
.
send
(
Task
.
set_status
id
st
)
in
in
W
.
send
Idle
W
.
send
Idle
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment