Contextual scoping, e.g. defines x in y, seems to be broken in the latest nightly: x is not visible in y. Here is an example:


binding rules

  Foreach(t, v, exp, body):
    defines unique Variable v
      of type t
      in body

    refers to Variable v


context-free syntax

	Start.Start = <<Foreach>>
	Foreach.Foreach = <for (<Type> <ID> : <Exp>) {

  Type.Int = <int>
  Exp.Exp = <<VarRef>>
  Body.Body = <<Exp*>>
  VarRef.VarRef = <<ID>>

Example program:

for (int i : i) { // second 'i' unresolved is expected
  i // but this 'i' should not be unresolved, but it is!
Submitted by Oskar van Rest on 24 December 2014 at 12:44

On 28 December 2014 at 13:49 Eelco Visser commented:

This has been broken for a while; not just in current nightly

On 28 December 2014 at 23:38 Guido Wachsmuth commented:

I am looking into it and into #117 and #118 tonight and tomorrow.

On 12 January 2015 at 03:47 Guido Wachsmuth commented:

I found the issue in the generator. There is a too generic check, which rules out all rules with explicit definition clauses. This is clearly wrong, but I still need to investigate what removing the check means for combinations of implicit definition and scoping clauses.

Log in to post comments