diff options
author | Michael Lowell Roberts <mirobert@microsoft.com> | 2015-07-02 15:00:52 -0700 |
---|---|---|
committer | Michael Lowell Roberts <mirobert@microsoft.com> | 2015-07-02 15:00:52 -0700 |
commit | 85d4456ccf1e1d8c456dffa012d3f3d724f50a4a (patch) | |
tree | da1311552725ba7809e4f3445870c86c98a5fbe6 /Source/Dafny/Dafny.atg | |
parent | c7f6887e452cbb91a8297bb64db39a8066750351 (diff) |
multiple changes...
- fix for requirement inheritance in refinement.
- minimimally viable implementation of exclusive refinement feature.
Diffstat (limited to 'Source/Dafny/Dafny.atg')
-rw-r--r-- | Source/Dafny/Dafny.atg | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/Source/Dafny/Dafny.atg b/Source/Dafny/Dafny.atg index 5d4a4321..7b51fb5e 100644 --- a/Source/Dafny/Dafny.atg +++ b/Source/Dafny/Dafny.atg @@ -542,6 +542,7 @@ SubModuleDecl<ModuleDefinition parent, out ModuleDecl submodule> ModuleDecl sm;
submodule = null; // appease compiler
bool isAbstract = false;
+ bool isExclusively = false;
bool opened = false;
.)
( [ "abstract" (. isAbstract = true; .) ]
@@ -549,7 +550,9 @@ SubModuleDecl<ModuleDefinition parent, out ModuleDecl submodule> { Attribute<ref attrs> }
NoUSIdent<out id>
- [ "refines" QualifiedModuleName<out idRefined> ] (. module = new ModuleDefinition(id, id.val, isAbstract, false, idRefined == null ? null : idRefined, parent, attrs, false); .)
+ [ "exclusively" "refines" QualifiedModuleName<out idRefined> (. isExclusively = true; .)
+ | "refines" QualifiedModuleName<out idRefined> (. isExclusively = false; .) ]
+ (. module = new ModuleDefinition(id, id.val, isAbstract, false, isExclusively, idRefined == null ? null : idRefined, parent, attrs, false, this); .)
"{" (. module.BodyStartTok = t; .)
{ SubModuleDecl<module, out sm> (. module.TopLevelDecls.Add(sm); .)
| ClassDecl<module, out c> (. module.TopLevelDecls.Add(c); .)
|