bors[bot]
54379ec6f8
Merge #1862
...
1862: Assoc item resolution refactoring (again) r=flodiebold a=flodiebold
This is #1849 , with the associated type selection code removed for now. Handling cycles there will need some more thought.
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-09-17 21:16:28 +00:00
Florian Diebold
c2f9558e1a
Remove assoc type selection code for now to fix crashes
2019-09-17 23:11:20 +02:00
Florian Diebold
69c8cfc4c1
Add test for T::Item
cycles
2019-09-17 23:06:05 +02:00
bors[bot]
d505ee968b
Merge #1860
...
1860: remove confusing code r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-17 18:06:06 +00:00
Aleksey Kladov
2890a1450a
remove confusing code
...
I must confess I don't really understand what this code is trying to
do, but it definitely misreports changes during fixedpoint iteration,
and no tests fail if I remove it, so...
2019-09-17 21:04:15 +03:00
bors[bot]
1f41eb28e2
Merge #1859
...
1859: show error log by default r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-17 17:54:44 +00:00
Aleksey Kladov
9ad2cea251
show error log by default
2019-09-17 20:53:12 +03:00
Florian Diebold
a040fde3ae
Remove TraitItem and ImplItem in favor of AssocItem
2019-09-17 19:47:45 +02:00
Florian Diebold
53a932509d
Small review improvements
2019-09-17 19:47:45 +02:00
Florian Diebold
35d1c03896
Add test for <T>::Item
2019-09-17 19:47:45 +02:00
Florian Diebold
fe1dfd2b20
Refactor some more
...
Type-relative paths (`<T>::foo`) also need to work in type context, for example
`<T>::Item` is legal. So rather than returning the type ref from the resolver
function, just check it before.
2019-09-17 19:47:45 +02:00
Florian Diebold
406280e52f
Refactor associated item resolution more
...
When resolving an associated item in value namespace, use the `Ty` lowering code
for the segments before the last instead of replicating it.
2019-09-17 19:47:45 +02:00
Florian Diebold
828d60574f
Refactor a bit to prepare for resolving trait assoc items
2019-09-17 19:47:45 +02:00
Florian Diebold
913ab1ec0a
Resolve assoc types on type parameters
...
E.g. `fn foo<T: Iterator>() -> T::Item`. It seems that rustc does this only for
type parameters and only based on their bounds, so we also only consider traits
from bounds.
2019-09-17 19:47:45 +02:00
Florian Diebold
16ee779483
Adapt some tests
2019-09-17 19:47:45 +02:00
bors[bot]
9421d2a953
Merge #1858
...
1858: use usual token tree for macro expansions r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-17 12:53:01 +00:00
Aleksey Kladov
4551182f94
use usual token tree for macro expansion
2019-09-17 15:51:48 +03:00
bors[bot]
8eb2697b7d
Merge #1855
...
1855: split mbe expander code into two modules r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-16 23:06:38 +00:00
Aleksey Kladov
37ef8927c3
split mbe expander code into two modules
2019-09-17 02:06:14 +03:00
bors[bot]
ba583091e6
Merge #1817
...
1817: Support path starting with a type r=matklad a=uHOOCCOOHu
The path syntax `<Ty>::foo`
Co-authored-by: uHOOCCOOHu <hooccooh1896@gmail.com>
2019-09-16 12:43:21 +00:00
bors[bot]
6b33b90091
Merge #1852
...
1852: Gracefully handle `const _` items in `ConstData` r=ecstatic-morse a=ecstatic-morse
A follow-up to #1847 .
This makes the `name` field of `ConstData` optional.
Co-authored-by: Dylan MacKenzie <ecstaticmorse@gmail.com>
2019-09-16 06:09:30 +00:00
Dylan MacKenzie
cd8155b7f7
Remove is_unnamed
2019-09-15 23:08:32 -07:00
Dylan MacKenzie
beac779c96
Gracefully handle const _
items in ConstData
2019-09-15 16:48:50 -07:00
uHOOCCOOHu
7ed3be3291
Define known paths and group names
2019-09-15 20:14:33 +08:00
uHOOCCOOHu
de9670fe45
Move store TypeRef of type based path in PathKind
2019-09-15 19:48:24 +08:00
uHOOCCOOHu
4926bed426
Support path starting with a type
2019-09-15 19:40:32 +08:00
bors[bot]
2d79a1ad83
Merge #1848
...
1848: Parse `..` as a full pattern r=matklad a=ecstatic-morse
Resolves #1479 .
This PR implements [RFC 2707](https://github.com/rust-lang/rfcs/pull/2707 ) in the parser. It introduces a new `DotDotPat` AST node modeled on `PlaceholderPat` and changes the parsing of tuple and slice patterns to conform to the RFC.
Notably, this PR does *not* change the resulting AST when `..` appears in a struct pattern (e.g. `Struct { a, b: c, .. }`). I *think* this is the behavior mandated by RFC 2707, but someone should confirm this.
Co-authored-by: Dylan MacKenzie <ecstaticmorse@gmail.com>
2019-09-15 07:10:16 +00:00
bors[bot]
bcdba777bd
Merge #1847
...
1847: Allow an underscore as the identifier in `const` items r=matklad a=ecstatic-morse
[RFC 2526](https://github.com/rust-lang/rust/issues/54912 ) was recently stabilized, meaning `const _: i32 = 5;` is now a valid item.
Co-authored-by: Dylan MacKenzie <ecstaticmorse@gmail.com>
2019-09-15 07:02:51 +00:00
Dylan MacKenzie
0956323bb7
Generate dot_dot_test
2019-09-14 17:08:22 -07:00
Dylan MacKenzie
da3815122d
Bless old tests containing a ..
pattern
2019-09-14 17:08:22 -07:00
Dylan MacKenzie
4a3a15f0e7
Parse ..
as a proper pattern
2019-09-14 17:08:22 -07:00
Dylan MacKenzie
426112c97e
Add DotDotPat
to AST
...
This is modeled on `PlaceholderPat`.
2019-09-14 17:08:22 -07:00
Dylan MacKenzie
c413f444a0
Add tests for underscores in const
and static
items
2019-09-14 16:31:09 -07:00
Dylan MacKenzie
253a18f938
Allow an underscore as the identifier in const
items
2019-09-14 16:31:09 -07:00
bors[bot]
211171ffe6
Merge #1846
...
1846: Remove a dbg! r=flodiebold a=flodiebold
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-09-14 09:06:23 +00:00
Florian Diebold
613863abb9
Remove a dbg!
2019-09-14 11:05:42 +02:00
bors[bot]
04789ef37b
Merge #1844
...
1844: Support bare `Trait` without dyn r=flodiebold a=flodiebold
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-09-14 08:21:38 +00:00
Florian Diebold
dc935be1b5
Support bare Trait
without dyn
2019-09-14 10:20:41 +02:00
bors[bot]
4ed44c80db
Merge #1843
...
1843: Upgrade Chalk r=flodiebold a=flodiebold
... and remove Ty::UnselectedProjection. It'll be handled differently.
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-09-14 08:06:31 +00:00
Florian Diebold
a61615c955
Upgrade Chalk
...
... and remove Ty::UnselectedProjection. It'll be handled differently.
2019-09-14 10:04:56 +02:00
bors[bot]
b8c16ec002
Merge #1838
...
1838: rename add_resolution -> add_scope_def r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-13 13:40:48 +00:00
Aleksey Kladov
7be7f67198
rename add_resolution -> add_scope_def
2019-09-13 16:39:51 +03:00
Aleksey Kladov
2fbe79ed9a
make PerNs non-generic
2019-09-13 16:38:59 +03:00
bors[bot]
b31f9872ec
Merge #1833
...
1833: Specify desirable namespace when calling resolve r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-13 13:25:40 +00:00
Aleksey Kladov
51e2d76b98
Specify desirable namespace when calling resolve
...
That way, we are able to get rid of a number of unreachable statements
2019-09-13 16:24:10 +03:00
bors[bot]
1adf0519bc
Merge #1835
...
1835: rename AdtDef -> Adt r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-12 21:35:28 +00:00
Aleksey Kladov
114a1b878e
rename AdtDef -> Adt
2019-09-13 00:34:52 +03:00
Aleksey Kladov
bcf30d389c
generalize impl_froms to nested enums
2019-09-13 00:31:04 +03:00
Aleksey Kladov
45117c6388
make various enums "inherit" from AdtDef
2019-09-13 00:10:16 +03:00
bors[bot]
d8b621cf26
Merge #1832
...
1832: start cleaning up the resolution r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-09-12 18:35:06 +00:00