
* 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
37 lines
518 B
Plaintext
37 lines
518 B
Plaintext
include "Option.aes"
|
|
include "Pair.aes"
|
|
include "String.aes"
|
|
include "Triple.aes"
|
|
|
|
using Pair
|
|
using Triple hiding [fst, snd]
|
|
|
|
namespace Nsp =
|
|
using Option
|
|
|
|
function h() =
|
|
let op = Some((2, 3, 4))
|
|
if (is_some(op))
|
|
thd(force(op)) == 4
|
|
else
|
|
false
|
|
|
|
contract Cntr =
|
|
using Nsp
|
|
|
|
entrypoint init() = ()
|
|
|
|
function f() =
|
|
let p = (1, 2)
|
|
if (h())
|
|
fst(p)
|
|
else
|
|
snd(p)
|
|
|
|
function g() =
|
|
using String for [concat]
|
|
|
|
let s1 = "abc"
|
|
let s2 = "def"
|
|
concat(s1, s2)
|