Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support type annotations on global variables #43671

Merged
merged 39 commits into from
Feb 8, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
f819538
add typing to global bindings
miguelraz Dec 17, 2021
ee478df
support type annotations on global variables
simeonschaub Dec 30, 2021
2846e34
rename to `_set_binding_type!`
simeonschaub Jan 5, 2022
b6e4587
try to fix analyzegc failure
simeonschaub Jan 5, 2022
a3e6c98
always add conversion step for globals
simeonschaub Jan 6, 2022
bc38f26
try to fix tests
simeonschaub Jan 6, 2022
1791c3c
fix inference test
simeonschaub Jan 6, 2022
c4161fd
fix analyzegc failures
simeonschaub Jan 7, 2022
28c8cba
allow `Core._get_binding_type` to be elided
simeonschaub Jan 8, 2022
646e2ab
clean up `julia-syntax.scm`
simeonschaub Jan 8, 2022
e0e0364
Merge remote-tracking branch 'origin/master' into sds/typedglobals
simeonschaub Jan 16, 2022
b28d542
add docs
simeonschaub Jan 16, 2022
b208fbf
add NEWS entry
simeonschaub Jan 16, 2022
d7e92f1
remove leading underscores in names
simeonschaub Jan 16, 2022
ff22fc0
fix docs
simeonschaub Jan 16, 2022
e93e694
just remove ref to `<:`
simeonschaub Jan 16, 2022
3656ddf
Merge remote-tracking branch 'origin/master' into sds/typedglobals
simeonschaub Jan 21, 2022
1d54432
try to make `ty` field atomic
simeonschaub Jan 22, 2022
ce66bbb
(de)serialize type field correctly
simeonschaub Jan 23, 2022
f2d1b48
Merge remote-tracking branch 'origin/master' into sds/typedglobals
simeonschaub Jan 23, 2022
931b7ba
fix serialization
simeonschaub Jan 24, 2022
e04c6be
address review comments
simeonschaub Jan 24, 2022
346220a
fix test, add test for different owner
simeonschaub Jan 24, 2022
8989e6e
try to fix distributed tests
simeonschaub Jan 24, 2022
de692a7
fix whitespace snafu
simeonschaub Jan 25, 2022
b36f3e2
Merge remote-tracking branch 'origin/master' into sds/typedglobals
simeonschaub Jan 25, 2022
edfadd3
refactor lowering a bit, fix unnecessary ssavalue
simeonschaub Jan 26, 2022
38d1b06
disallow type annotations in local scope
simeonschaub Feb 4, 2022
1504a97
Merge remote-tracking branch 'origin/master' into sds/typedglobals
simeonschaub Feb 4, 2022
160ee63
use nothing instead of NULL
simeonschaub Feb 4, 2022
a334a9b
address Jeff's review comment
simeonschaub Feb 7, 2022
efdb986
fix doctests
simeonschaub Feb 7, 2022
645f155
better error message in `head-to-text`
simeonschaub Feb 8, 2022
b442636
fix elision of `get_binding_type`
simeonschaub Feb 8, 2022
592c957
Merge remote-tracking branch 'origin/master' into sds/typedglobals
simeonschaub Feb 8, 2022
59bc7c0
fix tests
simeonschaub Feb 8, 2022
29afe48
update test for #33243
simeonschaub Feb 8, 2022
d265016
make test more robust
simeonschaub Feb 8, 2022
2183d33
use binding type in codegen?
simeonschaub Feb 8, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
add typing to global bindings
new types should go at end of struct
  • Loading branch information
miguelraz authored and simeonschaub committed Jan 8, 2022
commit f819538e38ece0514e3e988006a5e8bc337e87af
1 change: 1 addition & 0 deletions src/julia.h
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,7 @@ typedef struct {
jl_sym_t *name;
_Atomic(jl_value_t*) value;
_Atomic(jl_value_t*) globalref; // cached GlobalRef for this binding
jl_value_t *ty // add type for globals
struct _jl_module_t* owner; // for individual imported bindings -- TODO: make _Atomic
uint8_t constp:1;
uint8_t exportp:1;
Expand Down
6 changes: 6 additions & 0 deletions src/module.c
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ static jl_binding_t *new_binding(jl_sym_t *name)
b->exportp = 0;
b->imported = 0;
b->deprecated = 0;
b->ty = NULL;
return b;
}

Expand Down Expand Up @@ -806,6 +807,11 @@ JL_DLLEXPORT void jl_checked_assignment(jl_binding_t *b, jl_value_t *rhs) JL_NOT
}
jl_safe_printf("WARNING: redefinition of constant %s. This may fail, cause incorrect answers, or produce other errors.\n",
jl_symbol_name(b->name));
// Get and set type of global binding if not already there
if (b->ty == NULL) {
jl_value_t *type = jl_typeof(b->value);
jl_set_typeof(b->value, type);
}
}
jl_atomic_store_relaxed(&b->value, rhs);
jl_gc_wb_binding(b, rhs);
Expand Down