| ------------------------------------------------------------------------------- |
| -- Copyright (c) 2006-2013 Fabien Fleutot and others. |
| -- |
| -- All rights reserved. |
| -- |
| -- This program and the accompanying materials are made available |
| -- under the terms of the Eclipse Public License v1.0 which |
| -- accompanies this distribution, and is available at |
| -- http://www.eclipse.org/legal/epl-v10.html |
| -- |
| -- This program and the accompanying materials are also made available |
| -- under the terms of the MIT public license which accompanies this |
| -- distribution, and is available at http://www.lua.org/license.html |
| -- |
| -- Contributors: |
| -- Fabien Fleutot - API and implementation |
| -- |
| ------------------------------------------------------------------------------- |
| |
| -{ extension 'xglobal' } |
| |
| ---------------------------------------------------------------------- |
| print "1) declare unassigned globals" |
| global a, b |
| |
| ---------------------------------------------------------------------- |
| print "2) declare-and-assign global" |
| global c = 3 |
| |
| ---------------------------------------------------------------------- |
| print "3) assign to pre-declared globals" |
| a, b = 1, 2 |
| |
| ---------------------------------------------------------------------- |
| print "4) fail when setting an undeclared global" |
| local st1, msg1 = pcall(function() |
| a = 4 |
| d = 5 -- failure, assignment to undeclared global |
| end) |
| assert(not st1) |
| printf (" -> This error was expected: %s", msg1) |
| |
| ---------------------------------------------------------------------- |
| print "5) fail when reading an undeclared global" |
| local st2, msg2 = pcall(function() |
| b = c -- OK |
| local _ = d -- failure, try to read undeclared global |
| end) |
| assert(not st2) |
| printf (" -> This error was expected: %s", msg2) |
| |
| ---------------------------------------------------------------------- |
| print "6) check the globals' values" |
| assert(a==4) |
| assert(b==3) |
| assert(c==3) |
| |
| ---------------------------------------------------------------------- |
| print "*) done." |