grammar: accept `public` as a valid visibility
authorJean Privat <jean@pryen.org>
Wed, 18 Jun 2014 01:13:12 +0000 (21:13 -0400)
committerJean Privat <jean@pryen.org>
Wed, 16 Jul 2014 20:56:48 +0000 (16:56 -0400)
It has the same semantic than no explicit visibility, but
will allows a simpler transition to a new visibility level.

See: #499
Signed-off-by: Jean Privat <jean@pryen.org>

src/parser/nit.sablecc3xx
src/parser/parser_nodes.nit

index 98bbcc2..5d97179 100644 (file)
@@ -295,7 +295,8 @@ writable {-> able}
        ;
 
 visibility
-       = {public} {-> New visibility.public()}
+       = {public} {-> New visibility.public(Null)}
+       | {public2} kwpublic no {-> New visibility.public(kwpublic)}
        | {private} kwprivate no {-> New visibility.private(kwprivate)}
        | {protected} kwprotected no {-> New visibility.protected(kwprotected)}
        | {intrude} kwintrude no {-> New visibility.intrude(kwintrude)}
@@ -745,7 +746,7 @@ import      = {std} visibility kwimport [name]:module_name annotations?
        ;
 
 visibility
-       = {public}
+       = {public} kwpublic?
        | {private} kwprivate
        | {protected} kwprotected
        | {intrude} kwintrude
index 7ea1c4b..5cdf527 100644 (file)
@@ -761,6 +761,10 @@ abstract class AVisibility
 end
 class APublicVisibility
        super AVisibility
+       var _n_kwpublic: nullable TKwpublic
+       fun n_kwpublic: nullable TKwpublic do return _n_kwpublic
+       fun n_kwpublic=(n_kwpublic: nullable TKwpublic) do _n_kwpublic = n_kwpublic
+       init do end
 end
 class APrivateVisibility
        super AVisibility