Stream: t-compiler/wg-nll

Topic: weekly meeting September 18


pnkfelix (Sep 18 2018 at 19:27, on Zulip):

another heads up to @WG-compiler-nll that we'll be starting our 30min weekly meeting in about 3 minutes

Santiago Pastorino (Sep 18 2018 at 19:32, on Zulip):

hi everyone!!!

pnkfelix (Sep 18 2018 at 19:32, on Zulip):

so lets see, as usual, our triage paper is here

lqd (Sep 18 2018 at 19:32, on Zulip):

hello everyone :) :wave:

pnkfelix (Sep 18 2018 at 19:33, on Zulip):

i had meant to triage all of our unlabelled bugs before this meeting, but I didn't finish.

pnkfelix (Sep 18 2018 at 19:34, on Zulip):

but a rough skim makes it seem to me like things aren't too bad

nikomatsakis (Sep 18 2018 at 19:34, on Zulip):

I also did not have time. I wound up spending it all doing reviews :)

pnkfelix (Sep 18 2018 at 19:35, on Zulip):

so having said that, I did nominate some issues for discussion

pnkfelix (Sep 18 2018 at 19:35, on Zulip):

so lets maybe jump into that first

lqd (Sep 18 2018 at 19:35, on Zulip):

@pnkfelix thanks for renaming my PR, it was indeed the old name

pnkfelix (Sep 18 2018 at 19:35, on Zulip):

nominated issues

pnkfelix (Sep 18 2018 at 19:35, on Zulip):

oldest first: ReStatic ICE with nll and thread_local #51269

pnkfelix (Sep 18 2018 at 19:36, on Zulip):

I just nominated this because its been taken off the RC milestone but we haven't actually made a decision on it

nikomatsakis (Sep 18 2018 at 19:36, on Zulip):

yeah

nikomatsakis (Sep 18 2018 at 19:36, on Zulip):

bother

pnkfelix (Sep 18 2018 at 19:37, on Zulip):

The core issue seems to be that this is a particular example where AST-borrowck had rejected the code, and NLL accepts it, and the problem is that is unsafe code operating on a static mut which essentially means that "someone" gets to make up what the rule will be

pnkfelix (Sep 18 2018 at 19:37, on Zulip):

If we had infinite time I'd say we could engage the Unsafe Code Guidelines working group

nikomatsakis (Sep 18 2018 at 19:37, on Zulip):

right so the question is sort of "how to treat static mut" intersected with #[thread_local], right?

pnkfelix (Sep 18 2018 at 19:37, on Zulip):

or just punt the question entirely to them

pnkfelix (Sep 18 2018 at 19:38, on Zulip):

(Yes I believe the Question is how do we treat the marriage of static mut with #[thread_local])

nikomatsakis (Sep 18 2018 at 19:38, on Zulip):

so, I think that overlapping &mut borrows of a static mut do likely indicate UB

nikomatsakis (Sep 18 2018 at 19:38, on Zulip):

well, it's a bit broader than that really

pnkfelix (Sep 18 2018 at 19:38, on Zulip):

the conservative answer is that we should do whatever AST-borrowck did

nikomatsakis (Sep 18 2018 at 19:39, on Zulip):

so e.g. the AST borrow checker accepts this:

static mut FOO: u32 = 0;

fn main() {
    unsafe {
    let x = &mut FOO;
    let y = &mut FOO;
    *x += 1;
    *y += 1;
    }
}
nikomatsakis (Sep 18 2018 at 19:39, on Zulip):

however, under every model of the usnafe code guidelines we've come up with this, this is UB

nikomatsakis (Sep 18 2018 at 19:39, on Zulip):

but... it seems consistent with how we handle *mut

nikomatsakis (Sep 18 2018 at 19:39, on Zulip):

to accept it

nikomatsakis (Sep 18 2018 at 19:39, on Zulip):

(one could imagine linting)

pnkfelix (Sep 18 2018 at 19:40, on Zulip):

yes linting is what I was just wondering about

nikomatsakis (Sep 18 2018 at 19:40, on Zulip):

ah hmm so

nikomatsakis (Sep 18 2018 at 19:40, on Zulip):

the reason that we accept it presently

nikomatsakis (Sep 18 2018 at 19:40, on Zulip):

is that we consider FOO to be an "unsafe place"

nikomatsakis (Sep 18 2018 at 19:40, on Zulip):

and as a result we ignore the borrow

nikomatsakis (Sep 18 2018 at 19:40, on Zulip):

you could imagine not ignoring the borrow for unsafe places

nikomatsakis (Sep 18 2018 at 19:40, on Zulip):

but then modifying the errors we report

nikomatsakis (Sep 18 2018 at 19:40, on Zulip):

still, I think I'd rather do that... later :)

pnkfelix (Sep 18 2018 at 19:40, on Zulip):

I do want to be clear here

nikomatsakis (Sep 18 2018 at 19:41, on Zulip):

but then modifying the errors we report

i.e., to make them lints

pnkfelix (Sep 18 2018 at 19:41, on Zulip):

@nikomatsakis is showing examples where AST-borrowck accepts the code

pnkfelix (Sep 18 2018 at 19:41, on Zulip):

but the actual bug under discussion

nikomatsakis (Sep 18 2018 at 19:41, on Zulip):

presently, the MIR-based borrowck also accepts that code

pnkfelix (Sep 18 2018 at 19:41, on Zulip):

shows examples where AST_borrowck rejects teh code

nikomatsakis (Sep 18 2018 at 19:41, on Zulip):

right

pnkfelix (Sep 18 2018 at 19:41, on Zulip):

I am more worried about people relying on those checks

pnkfelix (Sep 18 2018 at 19:41, on Zulip):

and getting surprised by NLL's behavior

nikomatsakis (Sep 18 2018 at 19:41, on Zulip):

relying on them how?

pnkfelix (Sep 18 2018 at 19:41, on Zulip):

relying on them to reject their code?

nikomatsakis (Sep 18 2018 at 19:42, on Zulip):

maybe. I don't know that one could build a safe abstraction that breaks as a result of this. maybe with some crazy enough macros.

nikomatsakis (Sep 18 2018 at 19:42, on Zulip):

but indeed it might just catch a bug

nikomatsakis (Sep 18 2018 at 19:42, on Zulip):

so specifically what happens is this:

nikomatsakis (Sep 18 2018 at 19:42, on Zulip):

you can return an &'static mut T to a #[thread_local] static mut

nikomatsakis (Sep 18 2018 at 19:43, on Zulip):

normally, #[thread_local] things are not permitted to outlive the current fn

nikomatsakis (Sep 18 2018 at 19:43, on Zulip):

since your thread may exit after it returns

nikomatsakis (Sep 18 2018 at 19:43, on Zulip):

the challenge is that the MIR borrowck enforces this by looking for an in-scope borrow when the fn returns

nikomatsakis (Sep 18 2018 at 19:44, on Zulip):

and if we modify the fn that does that check, it will affect other things too .. I guess we could add some more flags somewhere or other

nikomatsakis (Sep 18 2018 at 19:44, on Zulip):

feels like a pretty corner case though

pnkfelix (Sep 18 2018 at 19:44, on Zulip):

well

nikomatsakis (Sep 18 2018 at 19:44, on Zulip):

I tend to think static mut should just be deprecated anyway

pnkfelix (Sep 18 2018 at 19:44, on Zulip):

we don't have to decide right now

nikomatsakis (Sep 18 2018 at 19:44, on Zulip):

(weren't we talking about that anyway?)

pnkfelix (Sep 18 2018 at 19:44, on Zulip):

we just need to set a deadline for a decision

pnkfelix (Sep 18 2018 at 19:44, on Zulip):

and the code implementing that decision

pnkfelix (Sep 18 2018 at 19:45, on Zulip):

i.e. I want to put a milestone back on this ticket, or close it, ...

pnkfelix (Sep 18 2018 at 19:45, on Zulip):

(but really we cannot close it; even if we accept the current behavior, it needs a regression test; thus the E-needstest label)

pnkfelix (Sep 18 2018 at 19:45, on Zulip):

@nikomatsakis does this feel like an RC2 thing to you, or a Release thing?

nikomatsakis (Sep 18 2018 at 19:45, on Zulip):

release, I suppose

pnkfelix (Sep 18 2018 at 19:46, on Zulip):

And "release" here means, if we decide to start rejecting code, we'll need to do some beta backporting?

nikomatsakis (Sep 18 2018 at 19:46, on Zulip):

I guess we could preserve the existing AST behavior with enough work

nikomatsakis (Sep 18 2018 at 19:46, on Zulip):

but I'd also be ok with the existing MIR behavior of "just ignore the dang things"

nikomatsakis (Sep 18 2018 at 19:47, on Zulip):

yeah I guess.. let's set the deadline to RC2 to avoid that

nikomatsakis (Sep 18 2018 at 19:47, on Zulip):

maybe we can raise the question at the T-lang meeting

nikomatsakis (Sep 18 2018 at 19:47, on Zulip):

of what sorts of rules we ought to impose on static mut etc

pnkfelix (Sep 18 2018 at 19:48, on Zulip):

hmm. We may need to prepare a presentation more structured than this ticket if we want to take it up to T-lang. :)

nikomatsakis (Sep 18 2018 at 19:49, on Zulip):

yes, definitely

nikomatsakis (Sep 18 2018 at 19:49, on Zulip):

let's move on for now but I think you and I should write up something

nikomatsakis (Sep 18 2018 at 19:49, on Zulip):

and/or I can do it

nikomatsakis (Sep 18 2018 at 19:49, on Zulip):

see also https://github.com/rust-lang/rust/issues/53639

pnkfelix (Sep 18 2018 at 19:50, on Zulip):

okay the other nominated issue: "NLL + impl Trait: Borrow checker error on else branch" #53528

pnkfelix (Sep 18 2018 at 19:50, on Zulip):

so I think I actually want to close it at this point

pnkfelix (Sep 18 2018 at 19:50, on Zulip):

but I also just wanted to double check with you all

nikomatsakis (Sep 18 2018 at 19:50, on Zulip):

I skimmed your comments

lqd (Sep 18 2018 at 19:51, on Zulip):

is this something polonius would handle ?

pnkfelix (Sep 18 2018 at 19:51, on Zulip):

here's perhaps the best example to discuss: https://play.rust-lang.org/?gist=8fd149ec95f133999e084eca5cc27d13&version=nightly&mode=debug&edition=2015

pnkfelix (Sep 18 2018 at 19:51, on Zulip):

namely, it shows this great hack of actually binding xx @ None => ...

pnkfelix (Sep 18 2018 at 19:52, on Zulip):

and then doing drop(xx)

pnkfelix (Sep 18 2018 at 19:52, on Zulip):

which I suspect most code reviewers would say "what is wrong with you, delete all that"

pnkfelix (Sep 18 2018 at 19:52, on Zulip):

but in this case, dropping a None gets the code to compile

pnkfelix (Sep 18 2018 at 19:53, on Zulip):

and I guess I wanted ask: Do we think we'd want to try to make things smarter so that people weren't even tempted to investigate hacks like this

pnkfelix (Sep 18 2018 at 19:53, on Zulip):

My current take is this:

pnkfelix (Sep 18 2018 at 19:53, on Zulip):

In the past there have been proposals to unify Enums and Structs in various ways

pnkfelix (Sep 18 2018 at 19:54, on Zulip):

such that you could actually have None be a type

pnkfelix (Sep 18 2018 at 19:54, on Zulip):

and None: Option would be a subtype, etc

nikomatsakis (Sep 18 2018 at 19:55, on Zulip):

ok, so, can I just double check something. The error is match we do desugar the if let to something like this:

{
  let foo = tmp.get_iter();
  if let Some(xx) = foo {
  } else {
      ..
  }
} // foo gets dropped here

To accept this, we would have to figure out that — on the else path — the type of foo can be "refined" to exclude Some? (or, equivalently, to None)

nikomatsakis (Sep 18 2018 at 19:55, on Zulip):

is this correct, @pnkfelix ?

Jake Goulding (Sep 18 2018 at 19:55, on Zulip):

perhaps this should be out of band, but I don't understand why the binding xx @ causes a problem if it's never used. That feels like a thing that NLL would handle

pnkfelix (Sep 18 2018 at 19:55, on Zulip):

@nikomatsakis Yes, to solve the bug in full, we'd have to get to that point

pnkfelix (Sep 18 2018 at 19:56, on Zulip):

namely, we'd have to actually deal with the case of if let and having knowledge of what that implies for the else branch

nikomatsakis (Sep 18 2018 at 19:56, on Zulip):

So

nikomatsakis (Sep 18 2018 at 19:56, on Zulip):

another way to solve this

pnkfelix (Sep 18 2018 at 19:56, on Zulip):

I suspect MIR codegen would have to change to emit drops on each branch

pnkfelix (Sep 18 2018 at 19:56, on Zulip):

instead of at the end

nikomatsakis (Sep 18 2018 at 19:56, on Zulip):

I imagine that drop elaboration knows the .as<Some> case.. was moved? Oh, I think we don't track that

nikomatsakis (Sep 18 2018 at 19:56, on Zulip):

yeah

nikomatsakis (Sep 18 2018 at 19:57, on Zulip):

I think this is WONTFIX, possible future extension

nikomatsakis (Sep 18 2018 at 19:57, on Zulip):

it's an interesting problem though!

pnkfelix (Sep 18 2018 at 19:57, on Zulip):

@Jake Goulding maybe follow up about your Q after the meeting; in particular, its not the binding of xx that is causing the problem here.

pnkfelix (Sep 18 2018 at 19:57, on Zulip):

@nikomatsakis I'm inclined to also just say "this is currently a WONTFIX; maybe for Rust 2027..."

pnkfelix (Sep 18 2018 at 19:58, on Zulip):

okay sounds good to me

nikomatsakis (Sep 18 2018 at 19:58, on Zulip):

we should consider diagnostics though

lqd (Sep 18 2018 at 19:58, on Zulip):

Rust 2021 plz

nikomatsakis (Sep 18 2018 at 19:58, on Zulip):

that said, I think that some of the pending PRs

nikomatsakis (Sep 18 2018 at 19:58, on Zulip):

might address this

pnkfelix (Sep 18 2018 at 19:58, on Zulip):

(but of course other people should chime in if they have thoughts)

nikomatsakis (Sep 18 2018 at 19:58, on Zulip):

e.g., yours, @pnkfelix, that is more detailed

nikomatsakis (Sep 18 2018 at 19:58, on Zulip):

it would be very helpful if we were talking about drop here

nikomatsakis (Sep 18 2018 at 19:58, on Zulip):

at least for experts like us :P

nikomatsakis (Sep 18 2018 at 19:58, on Zulip):

you could even imagine us trying to explain that, on the else path, we still need to drop because no move occurred

pnkfelix (Sep 18 2018 at 19:59, on Zulip):

right. Another instance of "lets explain drops of temporary values"

Jake Goulding (Sep 18 2018 at 19:59, on Zulip):

Is there any concern that impl trait causes it vs non-impl trait?

pnkfelix (Sep 18 2018 at 19:59, on Zulip):

@Jake Goulding I think that's more about how impl Trait has to allow for a destructor

pnkfelix (Sep 18 2018 at 19:59, on Zulip):

I have a comment about this somewhere

nikomatsakis (Sep 18 2018 at 20:00, on Zulip):

yes, that's the problem

pnkfelix (Sep 18 2018 at 20:00, on Zulip):

we don't have a way to say "this impl Trait will never implement Drop"

nikomatsakis (Sep 18 2018 at 20:00, on Zulip):

the interesting thing that you maybe should be asking is

Jake Goulding (Sep 18 2018 at 20:00, on Zulip):

gotcha. More cases of diagnostics for the "maybe" case

nikomatsakis (Sep 18 2018 at 20:00, on Zulip):

doesn't this mean that NLL makes adding Drop semver breaking?

nikomatsakis (Sep 18 2018 at 20:00, on Zulip):

the answer is "yes", though it already was

nikomatsakis (Sep 18 2018 at 20:00, on Zulip):

but perhaps more so than before

Jake Goulding (Sep 18 2018 at 20:00, on Zulip):

Oh, I was about to ask that, but you beat me to it :innocent:

pnkfelix (Sep 18 2018 at 20:00, on Zulip):

@Jake Goulding yeah just look at my comment sequence on #53528

pnkfelix (Sep 18 2018 at 20:01, on Zulip):

@Jake Goulding I had a very gradual awakening to the scope of the problem

Jake Goulding (Sep 18 2018 at 20:01, on Zulip):

Or right, I recall when this was added now.

nikomatsakis (Sep 18 2018 at 20:01, on Zulip):

@pnkfelix we need some way to track these sorts of problems

nikomatsakis (Sep 18 2018 at 20:02, on Zulip):

that is, possible future extensions and interesting scenarios

nikomatsakis (Sep 18 2018 at 20:02, on Zulip):

not sure where to do that though :(

nikomatsakis (Sep 18 2018 at 20:02, on Zulip):

so, it's 4pm here...

pnkfelix (Sep 18 2018 at 20:02, on Zulip):

rfc repo/issues, of course

nikomatsakis (Sep 18 2018 at 20:02, on Zulip):

we didn't talk about open issues

pnkfelix (Sep 18 2018 at 20:02, on Zulip):

(ha ha)

nikomatsakis (Sep 18 2018 at 20:02, on Zulip):

sigh

nikomatsakis (Sep 18 2018 at 20:02, on Zulip):

theoretically yes :)

pnkfelix (Sep 18 2018 at 20:02, on Zulip):

oh okay, lets maybe check on the open issues

nikomatsakis (Sep 18 2018 at 20:02, on Zulip):

one thing I think we should follow up on is type annotations

nikomatsakis (Sep 18 2018 at 20:03, on Zulip):

I was supposed to open some subissues I think

nikomatsakis (Sep 18 2018 at 20:03, on Zulip):

but I failed to do it

nikomatsakis (Sep 18 2018 at 20:05, on Zulip):

PS @eddyb made the cogent observation that #[thread_local] is unstable @pnkfelix — so we can actually file this under "known issues" with #[thread_local] and move on with our lives, probably

nikomatsakis (Sep 18 2018 at 20:05, on Zulip):

(re: that other issue)

nikomatsakis (Sep 18 2018 at 20:05, on Zulip):

it seems like type annotations is the major thing

pnkfelix (Sep 18 2018 at 20:06, on Zulip):

okay, lets see, unassigned issues

nikomatsakis (Sep 18 2018 at 20:06, on Zulip):

though @lqd found some diagnostic issues from the NLL run that I was supposed to open issues on

pnkfelix (Sep 18 2018 at 20:06, on Zulip):

right, and the rest of the type annotations work

nikomatsakis (Sep 18 2018 at 20:06, on Zulip):

there are a lot of pending diagnostic-y PRs,

nikomatsakis (Sep 18 2018 at 20:06, on Zulip):

I think want to start giving p=1 to them

nikomatsakis (Sep 18 2018 at 20:06, on Zulip):

because it's hard to tell what is "in flight"

pnkfelix (Sep 18 2018 at 20:06, on Zulip):

mmm

pnkfelix (Sep 18 2018 at 20:06, on Zulip):

I don't know if that's a good argument for p=1

pnkfelix (Sep 18 2018 at 20:06, on Zulip):

isn't in flight stuff supposed to have [WIP] on it?

nikomatsakis (Sep 18 2018 at 20:06, on Zulip):

e.g. @pnkfelix, @Matthew Jasper, and @davidtwco all have such PRs

pnkfelix (Sep 18 2018 at 20:06, on Zulip):

or maybe I misunderstand what you mean by "in flight"

nikomatsakis (Sep 18 2018 at 20:07, on Zulip):

sorry, what I mean is, it's hard to tell what the fixed problems are

pnkfelix (Sep 18 2018 at 20:07, on Zulip):

ah like which issues have PR's

nikomatsakis (Sep 18 2018 at 20:07, on Zulip):

and what the diagnostics will look like once those PRs all land

pnkfelix (Sep 18 2018 at 20:07, on Zulip):

that just haven't landed

pnkfelix (Sep 18 2018 at 20:08, on Zulip):

well

pnkfelix (Sep 18 2018 at 20:08, on Zulip):

maybe we need to do a NLL diagnostics rollup PR

nikomatsakis (Sep 18 2018 at 20:08, on Zulip):

and p=1 that? wfm

pnkfelix (Sep 18 2018 at 20:08, on Zulip):

okay

pnkfelix (Sep 18 2018 at 20:09, on Zulip):

do we want to try to figure out who's going to follow up with type annotation work?

nikomatsakis (Sep 18 2018 at 20:09, on Zulip):

we could, yes

davidtwco (Sep 18 2018 at 20:09, on Zulip):

It might be hard to do a rollup because of merge conflicts. I think all of my PRs in the past few days that are attempting to land or recently landed have needed rebases due to other diagnostic PRs landing.

nikomatsakis (Sep 18 2018 at 20:09, on Zulip):

a lot of negatives in that sentence :)

pnkfelix (Sep 18 2018 at 20:09, on Zulip):

@davidtwco I suspect it will indeed be a rollup that will require some manual effort

pnkfelix (Sep 18 2018 at 20:10, on Zulip):

which is why one of us will probably need to do it

pnkfelix (Sep 18 2018 at 20:10, on Zulip):

instead of having one of the usual rollup creators do it

nikomatsakis (Sep 18 2018 at 20:10, on Zulip):

confirm

nikomatsakis (Sep 18 2018 at 20:10, on Zulip):

(that was my expectation)

pnkfelix (Sep 18 2018 at 20:10, on Zulip):

I'm happy to have a shot at doing the rollup.

nikomatsakis (Sep 18 2018 at 20:11, on Zulip):

which PRs should be included? maybe we can make a list

pnkfelix (Sep 18 2018 at 20:12, on Zulip):

how about this:

pnkfelix (Sep 18 2018 at 20:12, on Zulip):

I'll open a bug

nikomatsakis (Sep 18 2018 at 20:12, on Zulip):

I realize there are more. e.g. @Santiago Pastorino has #54255

pnkfelix (Sep 18 2018 at 20:12, on Zulip):

I just opened #54329

nikomatsakis (Sep 18 2018 at 20:12, on Zulip):

I'll open a bug

and we can throw links in there?

pnkfelix (Sep 18 2018 at 20:13, on Zulip):

exactly

pnkfelix (Sep 18 2018 at 20:13, on Zulip):

so back to "NLL should identify and respect the lifetime annotations that the user wrote" #47184

pnkfelix (Sep 18 2018 at 20:14, on Zulip):

no one's assigned to the issue. the bullet list has these items left: "Complex bindings with no initializer"; "Associated constants in expressions?"; "Associated constants in patterns?"

nikomatsakis (Sep 18 2018 at 20:14, on Zulip):

ok so I think I would divide it up into:

nikomatsakis (Sep 18 2018 at 20:15, on Zulip):

@Santiago Pastorino you were looking for tasks, maybe I can carve out some of those? @Keith Yeung had also expressed interest, and maybe @mikhail-m1 ...

nikomatsakis (Sep 18 2018 at 20:15, on Zulip):

I think "casts" would be a good starter issue

nikomatsakis (Sep 18 2018 at 20:15, on Zulip):

maybe it makes sense to have one person, since they are all kind of related

Keith Yeung (Sep 18 2018 at 20:16, on Zulip):

i was indeed looking for tasks

pnkfelix (Sep 18 2018 at 20:16, on Zulip):

well, are they that related?

nikomatsakis (Sep 18 2018 at 20:16, on Zulip):

in the sense that they all involve 'capturing' a user's type and enforcing it later

pnkfelix (Sep 18 2018 at 20:17, on Zulip):

I guess I was not sure if patterns end up overlapping much with casts

nikomatsakis (Sep 18 2018 at 20:17, on Zulip):

but not otherwise

Santiago Pastorino (Sep 18 2018 at 20:17, on Zulip):

@Santiago Pastorino you were looking for tasks, maybe I can carve out some of those? @Keith Yeung had also expressed interest, and maybe @mikhail-m1 ...

:+1:

nikomatsakis (Sep 18 2018 at 20:17, on Zulip):

it's just that they'll rely on the same helper fns and things

pnkfelix (Sep 18 2018 at 20:17, on Zulip):

okay. This issue probably is the most pressing thing right now

pnkfelix (Sep 18 2018 at 20:18, on Zulip):

since I think the last of our known performance issues seem to have been resolved?

nikomatsakis (Sep 18 2018 at 20:18, on Zulip):

basically. @nnethercote has a great PR helping with memory use

pnkfelix (Sep 18 2018 at 20:18, on Zulip):

two of them

nikomatsakis (Sep 18 2018 at 20:18, on Zulip):

maybe two, I forget

pnkfelix (Sep 18 2018 at 20:18, on Zulip):

but yeah

nikomatsakis (Sep 18 2018 at 20:18, on Zulip):

it might be time to rejuvenate polonius then :)

pnkfelix (Sep 18 2018 at 20:18, on Zulip):

(the first already landed)

nikomatsakis (Sep 18 2018 at 20:19, on Zulip):

there is something else

nikomatsakis (Sep 18 2018 at 20:19, on Zulip):

that is also relevant

lqd (Sep 18 2018 at 20:19, on Zulip):

the 2nd main one failed travis just now (3h timeout)

pnkfelix (Sep 18 2018 at 20:19, on Zulip):

oh didn't someone ask above if Polonius would help with that WONTFIX bug

nikomatsakis (Sep 18 2018 at 20:19, on Zulip):

not sure how to schedule

nikomatsakis (Sep 18 2018 at 20:19, on Zulip):

oh didn't someone ask above if Polonius would help with that WONTFIX bug

it won't

nikomatsakis (Sep 18 2018 at 20:19, on Zulip):

at least, not directly

nikomatsakis (Sep 18 2018 at 20:19, on Zulip):

in particular, we'll still generate the facts that say that the region is live and used in the dtor

nikomatsakis (Sep 18 2018 at 20:20, on Zulip):

the 2nd main one failed travis just now (3h timeout)

sounds maybe like a retry

nikomatsakis (Sep 18 2018 at 20:20, on Zulip):

there is something else

what I was referring to here:

right now, we still use the "lexical region checker" for things that are not fn bodies

nikomatsakis (Sep 18 2018 at 20:20, on Zulip):

e.g., WF checking

nikomatsakis (Sep 18 2018 at 20:20, on Zulip):

I would like to be able to fully transition to NLL at some point

nikomatsakis (Sep 18 2018 at 20:20, on Zulip):

this will require removing that code

Keith Yeung (Sep 18 2018 at 20:20, on Zulip):

what's WF?

nikomatsakis (Sep 18 2018 at 20:20, on Zulip):

sorry, well-formedness checking

lqd (Sep 18 2018 at 20:21, on Zulip):

sounds maybe like a retry

(it's #54318 for people with bors permissions)

nikomatsakis (Sep 18 2018 at 20:21, on Zulip):

e.g., if you have

struct Foo<'a, T> {
    x: &'a T
}

this is the code that checks that T: 'a is required (though now we infer that)

nikomatsakis (Sep 18 2018 at 20:21, on Zulip):

but there are also lots of random bits of code that rely on the old checker

nikomatsakis (Sep 18 2018 at 20:21, on Zulip):

e.g., the stuff that checks impl method signatures against the sig from the traits

lqd (Sep 18 2018 at 20:22, on Zulip):

(@Jake Goulding thanks)

nikomatsakis (Sep 18 2018 at 20:23, on Zulip):

anyway, let's drop that for now

nikomatsakis (Sep 18 2018 at 20:23, on Zulip):

I'll try to file some issues about type annotations

nikomatsakis (Sep 18 2018 at 20:23, on Zulip):

(right now, probably)

nikomatsakis (Sep 18 2018 at 20:23, on Zulip):

wait, is type ascription still a thing?

nikomatsakis (Sep 18 2018 at 20:23, on Zulip):

we probably should add that to the list too

Keith Yeung (Sep 18 2018 at 20:24, on Zulip):

isn't that #47184?

Keith Yeung (Sep 18 2018 at 20:24, on Zulip):

no wait, i was thinking of an RFC

lqd (Sep 18 2018 at 20:24, on Zulip):

yes, some of the subparts of this issue

lqd (Sep 18 2018 at 20:24, on Zulip):

(ah recent generalized type ascription rfc from centril)

Keith Yeung (Sep 18 2018 at 20:25, on Zulip):

yes, the fact that you can have type ascriptions with expressions

Keith Yeung (Sep 18 2018 at 20:25, on Zulip):

i'm unsure if that relates to us

lqd (Sep 18 2018 at 20:25, on Zulip):

is it all-hands on deck with type annotations for this week ?

pnkfelix (Sep 18 2018 at 20:25, on Zulip):

(i'll move to a topic)

Last update: Nov 21 2019 at 13:55UTC