Comments (7)
Hi Tim,
the problem is not Elixir specific. erlang:get_module_info/1
has the spec defined in erlang.erl
as:
-spec erlang:get_module_info(Module) -> [{Item, term()}] when
Item :: module | exports | attributes | compile | native | md5,
Module :: atom().
The Module
type variable is not yet resolved to atom()
based on the constraints after when
. This is a feature that will probably be implemented later in Gradualizer.
from gradualizer.
thanks!
from gradualizer.
Peter is exactly right. Type variables are not treated correctly in the current implementation. It's something I'm working on right now, but it's a bit of a thorny issue. I've renamed the issue, and I'll close it once I've implemented the support.
from gradualizer.
Thank you guys for your work!
I hope I'll also be able to contribute to this project someday :)
from gradualizer.
Is the problem in the example solved by #93?
from gradualizer.
Yes, this was fixed, thanks!
from gradualizer.
I'm closing this issue then, although I can't say we have "proper support for polymorphism" yet. It is broad topic. (See e.g. the discussion in #93.)
from gradualizer.
Related Issues (20)
- Refine bound vars with guards
- Uncaught case clause error #{'Value' => {type,0,tuple,any}} HOT 1
- Keep track of variable bindings & types HOT 5
- Crash with Uncaught error: function_clause HOT 6
- Crash with `Uncaught error: {case_clause, ..` in `typechecker:do_type_check_expr/2`
- Crash with Uncaught error: {badkey, ...} HOT 1
- No clause for gradualizer_lib:pick_value(module()) HOT 2
- No clause of gradualizer_lib:pick_value(any()) HOT 2
- Support the new dynamic() type
- `ok bsr ok` crashes erl_eval:do_apply/7 HOT 4
- An invalid utf32 value can crash eval_bits:eval_exp_field/6
- Crash in gradualizer_fmt:format_type_error: no function_clause_matching
- Crash in typechecker:do_type_check_expr_in/3: bad_key in map_get/2
- Invalid polymorphic code accepted HOT 2
- Support old-style 'catch' keyword HOT 5
- Wrong type in receive...after Timeout
- `binary_to_atom/1` breaks compatibility below OTP 23 HOT 4
- Solving local constraints at each function call to a polymorphic function HOT 6
- support for OTP 26 map comprehensions
- Wrong type location reported?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gradualizer.