Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
frama-c
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Charles Southerland
frama-c
Commits
a3f4f1ac
Commit
a3f4f1ac
authored
4 years ago
by
Loïc Correnson
Browse files
Options
Downloads
Patches
Plain Diff
[Ivette] fixed safe/loose dependencies in API
parent
fc1d1314
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
ivette/api/server_tsc.ml
+17
-5
17 additions, 5 deletions
ivette/api/server_tsc.ml
with
17 additions
and
5 deletions
ivette/api/server_tsc.ml
+
17
−
5
View file @
a3f4f1ac
...
@@ -188,6 +188,10 @@ let rec makeDecoder ~safe ?self ~names fmt js =
...
@@ -188,6 +188,10 @@ let rec makeDecoder ~safe ?self ~names fmt js =
|
Jrecord
jfs
->
jsafe
~
safe
"Record"
(
jrecord
~
makeSafe
)
fmt
jfs
|
Jrecord
jfs
->
jsafe
~
safe
"Record"
(
jrecord
~
makeSafe
)
fmt
jfs
|
Jtuple
jts
->
jtry
~
safe
(
jtuple
~
makeSafe
)
fmt
jts
|
Jtuple
jts
->
jtry
~
safe
(
jtuple
~
makeSafe
)
fmt
jts
let
makeLooseNeedSafe
=
function
|
Pkg
.
Jtuple
_
|
Pkg
.
Jarray
_
->
true
|
_
->
false
let
makeRootDecoder
~
safe
~
self
~
names
fmt
js
=
let
makeRootDecoder
~
safe
~
self
~
names
fmt
js
=
let
open
Pkg
in
let
open
Pkg
in
match
js
with
match
js
with
...
@@ -414,12 +418,13 @@ let makeDeclaration fmt names d =
...
@@ -414,12 +418,13 @@ let makeDeclaration fmt names d =
type
ranking
=
{
type
ranking
=
{
mutable
rank
:
int
;
mutable
rank
:
int
;
mutable
mark
:
int
Pkg
.
IdMap
.
t
;
mutable
mark
:
int
Pkg
.
IdMap
.
t
;
index
:
Pkg
.
declInfo
Pkg
.
IdMap
.
t
;
}
}
let
depends
d
=
let
depends
d
=
match
d
.
Pkg
.
d_kind
with
match
d
.
Pkg
.
d_kind
with
|
D_loose
(
id
,
(
Jtuple
_
|
Jarray
_
))
->
[
Pkg
.
Derived
.
safe
id
]
|
D_loose
(
id
,
t
)
when
makeLooseNeedSafe
t
->
[
Pkg
.
Derived
.
safe
id
]
|
D_safe
(
id
,
_
)
->
[
Pkg
.
Derived
.
loose
id
]
|
D_safe
(
id
,
t
)
when
not
(
makeLooseNeedSafe
t
)
->
[
Pkg
.
Derived
.
loose
id
]
|
D_array
_
->
|
D_array
_
->
let
id
=
d
.
d_ident
in
let
id
=
d
.
d_ident
in
let
data
=
Pkg
.
Derived
.
data
id
in
let
data
=
Pkg
.
Derived
.
data
id
in
...
@@ -439,13 +444,20 @@ let next m id =
...
@@ -439,13 +444,20 @@ let next m id =
m
.
mark
<-
Pkg
.
IdMap
.
add
id
r
m
.
mark
;
m
.
mark
<-
Pkg
.
IdMap
.
add
id
r
m
.
mark
;
m
.
rank
<-
succ
r
m
.
rank
<-
succ
r
let
mark
m
d
=
let
rec
mark
m
d
=
let
id
=
d
.
Pkg
.
d_ident
in
let
id
=
d
.
Pkg
.
d_ident
in
if
not
(
Pkg
.
IdMap
.
mem
id
m
.
mark
)
then
if
not
(
Pkg
.
IdMap
.
mem
id
m
.
mark
)
then
(
List
.
iter
(
next
m
)
(
depends
d
)
;
next
m
id
)
(
List
.
iter
(
mark_id
m
)
(
depends
d
)
;
next
m
id
)
and
mark_id
m
id
=
try
mark
m
(
Pkg
.
IdMap
.
find
id
m
.
index
)
with
Not_found
->
()
let
ranking
ds
=
let
ranking
ds
=
let
m
=
{
rank
=
0
;
mark
=
Pkg
.
IdMap
.
empty
}
in
let
index
=
List
.
fold_left
(
fun
m
d
->
Pkg
.
IdMap
.
add
d
.
Pkg
.
d_ident
d
m
)
Pkg
.
IdMap
.
empty
ds
in
let
m
=
{
rank
=
0
;
mark
=
Pkg
.
IdMap
.
empty
;
index
}
in
List
.
iter
(
mark
m
)
ds
;
List
.
iter
(
mark
m
)
ds
;
let
rk
=
m
.
mark
in
let
rk
=
m
.
mark
in
let
getRank
a
=
try
Pkg
.
IdMap
.
find
a
.
Pkg
.
d_ident
rk
with
Not_found
->
0
in
let
getRank
a
=
try
Pkg
.
IdMap
.
find
a
.
Pkg
.
d_ident
rk
with
Not_found
->
0
in
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment