E3016

E3016#

Unexpected ~ in argument. Did you mean label=pattern or label~?

Erroneous example#

///|
pub(all) enum A {
  A(b~ : Int)
}

///|
fn describe(a : A) -> Unit {
  match a {
    A(b~=c) => println("Hello, world! \{c}") // Error: unexpected `~` in argument. Did you mean `label=pattern` or `label~`?
  }
}

///|
test {
  describe(A(b=1))
}

Suggestion#

Replace b~ with b= or b~ as appropriate.

///|
pub(all) enum A {
  A(b~ : Int)
}

///|
fn use_pun_pattern(a : A) -> Unit {
  match a {
    A(b~) => println("Hello, world! \{b}")
  }
}

///|
test {
  use_pun_pattern(A(b=1))
  use_named_pattern(A(b=1))
}

Or,

///|
fn use_named_pattern(a : A) -> Unit {
  match a {
    A(b=c) => println("Hello, world! \{c}")
  }
}