Implement loading namespaces with the using keyword (#338)

* Add using namespace as to scanner and parser

* Change the alias from id() to con()

* Add using namespace to AST type inference

* Allow using namespace to appear in the top level

* Allow using namespace to appear inside functions

* Add a compiler test for using namespace

* Handle name collisions

* Implement mk_error for ambiguous_name

* Add failing test for ambiguous names

* Limit the scope of the used namespaces

* Add test for wrong scope of using namespace

* Use a single using declaration

* Split long line

* Forbid using undefined namespaces

* Add a test for using undefined namespaces

* Change the type of used_namespaces

* Add using namespace parts to scanner and parser

* Add using namespace parts to ast type inference

* Add tests for using namespace parts

* Update CHANGELOG.md

* Code cleaning

* Update the docs

* Update the docs about the same alias for multiple namespaces
This commit is contained in:
Gaith Hallak
2021-09-07 17:45:28 +03:00
committed by GitHub
parent 262452fb70
commit a7b7aafced
13 changed files with 310 additions and 18 deletions
@@ -0,0 +1,21 @@
namespace Nsp1 =
function f() = 1
namespace Nsp2 =
using Nsp1
function g() = 1
contract Cntr =
using Nsp2
type state = int
function x() =
using Nsp1
f()
function y() =
f()
entrypoint init() = f()