#!/usr/bin/env groovy

// Single-line comment. TODO markers work.
/* Multi-line comment.
   TODO markers work. */

'line' \
    + 'continuation'

def tsq = '''Triple single-quoted string.

    Escapes work: \' \n \123 \u12ab \
    Interpolation doesn't work: $x ${x}
'''

def sq = 'Single-quoted string. Escapes work: \' \r \45 \u45CD \
    Interpolation does not: $x ${x}'

def tdq = """Triple double-quoted string.

    Escapes work: \" \f \6 \uABCD \
    Interpolation works: $x._y.z0 ${x + 5}
"""

def dq = "Double-quoted string. Escapes work: \" \b \7 \u5678 \
    So does interpolation: $_abc1 ${x + "abc"}"

def slashy = /Slashy string.

    There are only two escape sequences: \/ \
    Interpolation works: $X ${-> X}
    Dollars $ and backslashes \ on their own are interpreted literally./

def notSlashy = 1 /2/ 3 // not a slashy string; just two division operators

def dollarSlashy = $/Dollar slashy string.

    There are three escape sequences: $$ $/ \
    Interpolation works: $_ ${true}
    Dollars $ and backslashes \ on their own are interpreted literally./$

0b10i + 0b0110_1011 // binary numbers
0 + 123L + 456_789 // decimal numbers
0xab + 0xcd_efG // hexadecimal numbers

01_23.45_67g + 1e-23f + 2d + 08.80 // floating-point numbers

trait Test {
    void foo(List list) {
        def sum = 0
        for (n in list) sum += n as int
        println sum
    }
}

