Changing from "pimps" to "class augmentations"

This change is being made to accomodate cultural differences around the world.

The new keyword is 'augment' instead of 'pimp'. The 'pimp' keyword will continue to remain valid in
the parser for some time, although its existence has been removed from the documentation and the
terminology used in the source code.

Signed-off-by: Julien Ponge <julien.ponge@insa-lyon.fr>
Netbeans IDE reference
Fixes a bug in the capture of nested closures

Could such as the following would fail:

    function nested_closures = {
      let s = "plop"
      let f1 = |x| -> x
      let f2 = {
        return {
          return f1(s)
        }
      }
      return f2()
    }

The call to f1 in the definition of f2 would be interpreted as a regular call to some function f1
rather than a call on the closure assigned to reference f1. The call to f2 was correct, though.

The fix involved some more work on the closure capture visitor on the intermediate representation.
Do not propagate regular parameters of closures

The previous commit allowed for the propagation of closure context when nested. This worked a bit
too well as regular closure parameters would be considered as dependencies to be resolved, too,
causing closure references to make lookups on non-existing references in the wrong block.

This commit prevents regular parameters to be propagated. This has been tested on samples with
deeply nested closures.

Squashed commit of the following:

commit 38ab16d2fd9a9fc4a7e11e93f34123e138c8aac0
Author: Julien Ponge <julien.ponge@insa-lyon.fr>
Date:   Wed Apr 10 23:21:26 2013 +0200

    Sounds good

commit c8175fdc75bd50f3eebe26365ef7c3d08bdc2d17
Author: Julien Ponge <julien.ponge@insa-lyon.fr>
Date:   Wed Apr 10 23:18:52 2013 +0200

    Could this be it?

commit c01e34ae1d4e459670ad5cda200c33634334e0a7
Author: Julien Ponge <julien.ponge@insa-lyon.fr>
Date:   Wed Apr 10 22:55:01 2013 +0200

    Seems better....

commit 430d2279df1c20f5159ea7ac6a5dabd5f82db764
Author: Julien Ponge <julien.ponge@insa-lyon.fr>
Date:   Wed Apr 10 16:58:59 2013 +0200

    Traces--

commit 92b3b80629fb5ba21828f53604ed327176322059
Author: Julien Ponge <julien.ponge@insa-lyon.fr>
Date:   Wed Apr 10 16:23:39 2013 +0200

    Adding references is useless

commit 668094cdcbef3532d02f0720e1f5fc2d3095106d
Author: Julien Ponge <julien.ponge@insa-lyon.fr>
Date:   Wed Apr 10 15:36:56 2013 +0200

    A pathological case

commit da071d0777e2dc6a2548ba1d81b969a2c79efee5
Author: Julien Ponge <julien.ponge@insa-lyon.fr>
Date:   Wed Apr 10 14:59:31 2013 +0200

    Debug in progress

commit 1b257eaee7465de2967dd46cb43b323d29bb81aa
Author: Julien Ponge <julien.ponge@insa-lyon.fr>
Date:   Wed Apr 10 13:06:41 2013 +0200

    Bug: parameter names shall not be propagated
Report undeclared reference names
Install a GWT on vtable dispatches

This fixes a bug where the guardWithTest was created but overwritten by the vtable dispatch method
handle. This could have caused wrong dispatches on megamorphic call sites with dynamic and
non-dynamic objects.
Give a fairer shot for Groovy on surrounding loops
Introducing an invocation token
Introducing the orIfNull operator

The usage is best illustrated with an example:

    let map = java.util.HashMap()
    println(map: get("bogus") orIfNull "n/a")

would print "n/a".
Documentation for orIfNull
Experimentations with an elvis operator

This could allow null-safe method invocations, like:

    person: address()?: city()

Calls with ?: instead of : return null if ever done on a null reference:

    null?: plop()

returns null, while:

    null: plop()

throws a NullPointerException.
Clarifying legal and technical considerations
Elvis tests refactorings
Documentation for null-safe method invocations
An example of dealing with null-safety
Tolerate the lack of a newline if the last line is a comment
Trim code block delimiters to 4 characters
A note on newlines
Forgot the license header
Back to Travis-CI default email notifications