@@ -7,6 +7,11 @@ class C {
7
7
a()
8
8
a(123)
9
9
a(b, c)
10
+ a.map(x => x + 1)
11
+ a { 123 }
12
+ a { b }
13
+ a.map{ x => x + 1 }
14
+ a.exists { case ((i, _)) => i }
10
15
}
11
16
}
12
17
@@ -22,7 +27,17 @@ class C {
22
27
(block
23
28
(call_expression (identifier) (arguments))
24
29
(call_expression (identifier) (arguments (integer_literal)))
25
- (call_expression (identifier) (arguments (identifier) (identifier))))))))
30
+ (call_expression (identifier) (arguments (identifier) (identifier)))
31
+ (call_expression (field_expression (identifier) (identifier)) (arguments
32
+ (lambda_expression (identifier)
33
+ (infix_expression (identifier) (operator_identifier) (integer_literal)))))
34
+ (call_expression (identifier) (block (integer_literal)))
35
+ (call_expression (identifier) (block (identifier)))
36
+ (call_expression (field_expression (identifier) (identifier)) (block
37
+ (lambda_expression (identifier)
38
+ (infix_expression (identifier) (operator_identifier) (integer_literal)))))
39
+ (call_expression (field_expression (identifier) (identifier)) (case_clause
40
+ (tuple_pattern (tuple_pattern (identifier) (wildcard))) (identifier))))))))
26
41
27
42
===============================
28
43
Generic functions
@@ -216,6 +231,7 @@ def matchTest(x: Int): String = x match {
216
231
case 3 => {
217
232
"3"
218
233
}
234
+ case ((i, _)) => i
219
235
case _ =>
220
236
val x = "many"
221
237
"more"
@@ -233,6 +249,7 @@ def matchTest(x: Int): String = x match {
233
249
(case_clause (integer_literal) (string) (string))
234
250
(case_clause (integer_literal) (string))
235
251
(case_clause (integer_literal) (block (string)))
252
+ (case_clause (tuple_pattern (tuple_pattern (identifier) (wildcard))) (identifier))
236
253
(case_clause (wildcard) (val_definition (identifier) (string)) (string))))))
237
254
238
255
===============================
@@ -403,6 +420,42 @@ object O {
403
420
(ascription_expression (integer_literal)
404
421
(repeated_parameter_type (type_identifier))))))
405
422
423
+ ================================================================================
424
+ Lambda Expression
425
+ ================================================================================
426
+
427
+ object O {
428
+ val l = a => a + 1
429
+ val b = (x: Int, y: Int) => { x * y }
430
+ val f = _ => 2
431
+ (a, b, _) => a - b
432
+ }
433
+
434
+ --------------------------------------------------------------------------------
435
+
436
+ (compilation_unit
437
+ (object_definition (identifier)
438
+ (template_body (val_definition
439
+ (identifier) (lambda_expression
440
+ (identifier) (infix_expression
441
+ (identifier) (operator_identifier) (integer_literal))))
442
+ (val_definition (identifier)
443
+ (lambda_expression (bindings
444
+ (binding (identifier) (type_identifier))
445
+ (binding (identifier) (type_identifier)))
446
+ (block (infix_expression
447
+ (identifier) (operator_identifier) (identifier)))))
448
+ (val_definition (identifier)
449
+ (lambda_expression (identifier) (integer_literal)))
450
+ (lambda_expression
451
+ (bindings
452
+ (binding (identifier))
453
+ (binding (identifier))
454
+ (binding (identifier)))
455
+ (infix_expression (identifier)
456
+ (operator_identifier)
457
+ (identifier))))))
458
+
406
459
===============================
407
460
Unit expressions
408
461
===============================
@@ -506,6 +559,7 @@ def f() = {
506
559
x <- xs
507
560
a = b + c
508
561
y <- g() if d
562
+ (t, u) = y
509
563
} yield {
510
564
h(x, y)
511
565
}
@@ -529,8 +583,9 @@ def f() = {
529
583
(for_expression
530
584
(enumerators
531
585
(enumerator (identifier) (identifier))
532
- (assignment_expression (identifier) (infix_expression (identifier) (operator_identifier) (identifier)))
533
- (enumerator (identifier) (call_expression (identifier) (arguments)) (guard (identifier))))
586
+ (enumerator (identifier) (infix_expression (identifier) (operator_identifier) (identifier)))
587
+ (enumerator (identifier) (call_expression (identifier) (arguments)) (guard (identifier)))
588
+ (enumerator (tuple_pattern (identifier) (identifier)) (identifier)))
534
589
(block (call_expression (identifier) (arguments (identifier) (identifier))))))))
535
590
536
591
===============================
0 commit comments