| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /*
- * Different shadowing concepts illustrated
- */
- extern void printInt( int val);
- extern void printSpaces( int num);
- extern void printNewlines( int num);
- export int main()
- {
- // this variable is going will be escaping below
- int a = 123;
- // The bir variable is an example of a local (ie non-escaped) variable
- int bir = a;
- /* A variable shadowed by an argument */
- void bar (int a)
- {
- a = 11111;
- printInt(a);
- printNewlines(1);
- }
- /* A variable initalized by a variable of the same name */
- void boz ()
- {
- int a = a;
- a = a + 11111;
- printInt(a);
- printNewlines(1);
- }
- /* using a in the inner function makes it an escaped variable */
- void biz ()
- {
- a = 55555;
- }
- bar(a);
- printNewlines(1);
- printInt(a);
- printNewlines(2);
- baz(a);
- printNewlines(1);
- printInt(a);
- printNewlines(2);
- bor(a);
- printNewlines(1);
- printInt(a);
- printNewlines(2);
- //boz(); FIXME
- printNewlines(1);
- printInt(a);
- printNewlines(2);
- printInt(bir);
- printNewlines(2);
- biz();
- printInt(a);
- printNewlines(2);
- printInt(bir);
- printNewlines(2);
- return 0;
- }
- /* An argument shadowed by a variable */
- void baz(int b){
- // The variable b cannot be defined in the same scope hence it is in an inner function
- void baz_inner(){
- int b = 22222;
- printInt(b);
- }
- baz_inner();
- }
- /* An argument shadowed by a variable */
- void bor(int b){
- // The function b cannot be defined in the same scope hence it is in an inner function
- void baz_inner(){
- void b() {
- printInt(33333);
- }
- b();
- }
- baz_inner();
- }
- /* This function is going to be shadowed by a variable in main */
- void bir(){
- printInt(3333);
- }
|