Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Support
    • Submit feedback
    • Contribute to GitLab
  • Sign in
why3
why3
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 84
    • Issues 84
    • List
    • Boards
    • Labels
    • Milestones
  • Merge Requests 11
    • Merge Requests 11
  • Packages
    • Packages
    • Container Registry
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Commits
  • Issue Boards
  • Why3
  • why3why3
  • Issues
  • #141

Closed
Open
Opened Jun 18, 2018 by BECKER Benedikt@bbecker
  • Report abuse
  • New issue
Report abuse New issue

Patterns for local ghost values too restrictive

The parser seems to be too restrictive for patterns when defining local ghost values by let ghost PATTERN = EXPR in EXPR. Each of the lines marked with a-c are refused with error "illegal ghost qualifier":

let constant u : unit =
  let e = (0, 0) in
  let ghost _ = e in (* a *)
  let ghost _, y = e in (* b *)
  let ghost (x, y) = e in (* c *)
  ()

But the lines marked with e-g are accepted.

let constant u : unit =
  let e = (0, 0) in
  let ghost _x = e in (* e *)
  let ghost _x, y = e in (* f *)
  let ghost x, y = e in (* g *)
  ()

I would expect all lines a-g syntactically valid in Why3 (as they were in version 0.88).

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
1
Labels
component: syntax
Assign labels
  • View project labels
Reference: why3/why3#141