Skip to content

Syntax match strange error #11951

@PatrickMassot

Description

@PatrickMassot

Prerequisites

Description

Pattern matching on syntax can lead to unexpected errors as in:

import Lean

open Lean Meta

def foo (t : Term) : Name :=
  match t with -- Failed to infer binder type
  | `($x:ident > 0) =>  .mkSimple <| x.getId.toString ++ "_pos"
  | `($x:ident > $y:ident) => .mkSimple <| x.getId.toString ++ "_gt_" ++ y.getId.toString
  | `($x:ident > $_) =>  x.getId
  | _ => `Bas

Context

See variations on https://leanprover.zulipchat.com/#narrow/channel/270676-lean4/topic/Weird.20errors.20in.20quotation.20match

Steps to Reproduce

The above code is enough.

Expected behavior:

This definition should work

Actual behavior:

There is a “Failed to infer binder type” error on the match line.

Versions

4.27.0-rc1

Impact

Add 👍 to issues you consider important. If others are impacted by this issue, please ask them to add 👍 to it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions