• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

moosetechnology / FAST-JAVA / 13011657674

28 Jan 2025 01:35PM UTC coverage: 65.643% (+0.03%) from 65.612%
13011657674

push

github

web-flow
Merge pull request #249 from knowbased/fix/javaInfixOperation-should-be-a-tAnnotationElement

fix: FASTJavaAnnotation can have FASTJavaInfixOperation has element

13 of 14 new or added lines in 2 files covered. (92.86%)

8141 of 12402 relevant lines covered (65.64%)

0.66 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/FAST-Java-Model-Generator/FASTJavaMetamodelGenerator.class.st
1
"
2
I contains the generator to create the Java FAST Metamodel
3

4

5
Use this to re generate the metamodel.
6

7
```st
8
FASTJavaMetamodelGenerator new generate.
9
FASTJavaMetamodelGenerator resetMetamodel.
10
```
11
"
12
Class {
13
        #name : 'FASTJavaMetamodelGenerator',
14
        #superclass : 'FamixMetamodelGenerator',
15
        #instVars : [
16
                'javaBreakStatement',
17
                'javaCaseStatement',
18
                'javaCharacterLiteral',
19
                'javaContinueStatement',
20
                'javaDoWhileStatement',
21
                'javaFieldAccess',
22
                'javaFloatLiteral',
23
                'javaForStatement',
24
                'javaIdentifier',
25
                'javaIfStatement',
26
                'javaInfixOperation',
27
                'javaIntegerLiteral',
28
                'javaMethodEntity',
29
                'javaMethodInvocation',
30
                'javaNullLiteral',
31
                'javaStringLiteral',
32
                'javaSwitchStatement',
33
                'javaThis',
34
                'javaVarDeclStatement',
35
                'javaVariableDeclarator',
36
                'javaWhileStatement',
37
                'javaCastExpression',
38
                'javaClassProperty',
39
                'javaForEachStatement',
40
                'javaUnaryExpression',
41
                'javaNewExpression',
42
                'javaNewClassExpression',
43
                'javaNewArray',
44
                'javaConditionalExpression',
45
                'javaArrayAccess',
46
                'javaInitializer',
47
                'javaOuterThis',
48
                'javaThrowStatement',
49
                'javaLabeledCaseStatement',
50
                'javaDefaultCaseStatement',
51
                'javaEmptyMethodDeclaration',
52
                'javaArrayInitializer',
53
                'javaClassDeclaration',
54
                'javaModifier',
55
                'javaCatchPartStatement',
56
                'javaLambdaExpression',
57
                'javaMethodReference',
58
                'javaSynchronizedStatement',
59
                'javaTypeName',
60
                'javaQualifiedTypeName',
61
                'javaTypeExpression',
62
                'javaArrayTypeExpression',
63
                'javaClassTypeExpression',
64
                'javaPrimitiveTypeExpression',
65
                'javaBooleanTypeExpression',
66
                'javaByteTypeExpression',
67
                'javaCharTypeExpression',
68
                'javaDoubleTypeExpression',
69
                'javaFloatTypeExpression',
70
                'javaIntTypeExpression',
71
                'javaLongTypeExpression',
72
                'javaShortTypeExpression',
73
                'javaVoidTypeExpression',
74
                'javaParameterExpression',
75
                'javaAssertStatement',
76
                'javaAnnotationExpression',
77
                'javaVariableExpression',
78
                'javaStatementBlock',
79
                'javaReturnStatement',
80
                'javaExpressionStatement',
81
                'javaStatement',
82
                'javaBooleanLiteral',
83
                'tDeclaration',
84
                'tWithDeclarations',
85
                'tModifier',
86
                'tWithModifiers',
87
                'tWithReceiver',
88
                'tReceiver',
89
                'tNamedEntity',
90
                'tEntity',
91
                'tExpression',
92
                'tStatement',
93
                'tCharacterLiteral',
94
                'tLiteral',
95
                'tVariableExpression',
96
                'tNamedBehaviouralEntity',
97
                'tNullPointerLiteral',
98
                'tStringLiteral',
99
                'tScopableEntity',
100
                'tVariableEntity',
101
                'tStatementBlock',
102
                'tExpressionStatement',
103
                'tWithParameters',
104
                'tReturnStatement',
105
                'tBooleanLiteral',
106
                'javaEnumDeclaration',
107
                'javaInterfaceDeclaration',
108
                'packageDeclaration',
109
                'importDeclaration',
110
                'qualifiedName',
111
                'javaLabeledStatement',
112
                'javaTypeParameter',
113
                'javaAssignmentExpression',
114
                'tAssignable',
115
                'tWithAssignable',
116
                'tWithQualifiedName',
117
                'javaTryCatchStatement',
118
                'compilationUnit',
119
                'javaLongLiteral',
120
                'javaDoubleLiteral',
121
                'tInvocation',
122
                'tComment',
123
                'tWithComments',
124
                'javaEntity',
125
                'javaComment',
126
                'javaEmptyDimExpression',
127
                'javaEnumConstant',
128
                'tAnnotationElement',
129
                'javaLiteral',
130
                'javaArrayAnnotationElement',
131
                'javaTypePattern'
132
        ],
133
        #category : 'FAST-Java-Model-Generator',
134
        #package : 'FAST-Java-Model-Generator'
135
}
136

137
{ #category : 'accessing' }
138
FASTJavaMetamodelGenerator class >> packageName [
×
139

×
140
        ^ #'FAST-Java-Model'
×
141
]
×
142

143
{ #category : 'accessing' }
144
FASTJavaMetamodelGenerator class >> prefix [
×
145
        ^ #FASTJava
×
146
]
×
147

148
{ #category : 'accessing' }
149
FASTJavaMetamodelGenerator class >> submetamodels [
×
150
        ^ { FASTMetamodelGenerator }
×
151
]
×
152

153
{ #category : 'comments' }
154
FASTJavaMetamodelGenerator >> commentForAssertStatement [
×
155
        ^ 'I represent an assert statement
×
156

×
157
example:
×
158

×
159
void method (){
×
160
        assert condition1 || condition2 : "error message"
×
161
}
×
162
'
×
163
]
×
164

165
{ #category : 'comments' }
166
FASTJavaMetamodelGenerator >> commentForJavaAnnotation [
×
167
        ^ 'I reprensent a Java Annotation
×
168

×
169
example:
×
170

×
171
@Override'
×
172
]
×
173

174
{ #category : 'comments' }
175
FASTJavaMetamodelGenerator >> commentForJavaArrayAccess [
×
176
        ^ 'I represent a java array access
×
177
        
×
178
ex:
×
179

×
180
liste[i]'
×
181
]
×
182

183
{ #category : 'comments' }
184
FASTJavaMetamodelGenerator >> commentForJavaArrayInitializer [
×
185
        ^ 'I represent the array initializer and I have many initializers
×
186
        
×
187
ex:
×
188
String patate = {"hello", "world"}
×
189

×
190

×
191
I am : {"hello", "world"} 
×
192
My initializers are 
×
193
"hello" and "world"
×
194
 '
×
195
]
×
196

×
197
{ #category : 'comments' }
×
198
FASTJavaMetamodelGenerator >> commentForJavaAssignmentExpression [
×
199
        ^ 'An assignment expression mode.
×
200

×
201
Contains a referances to an assignee assignee and the expression that''s being assigned.'
×
202
]
×
203

×
204
{ #category : 'comments' }
×
205
FASTJavaMetamodelGenerator >> commentForJavaBooleanLiteral [
×
206
        ^ 'I represent a boolean literal node.'
×
207
]
×
208

×
209
{ #category : 'comments' }
×
210
FASTJavaMetamodelGenerator >> commentForJavaBreakStatement [
×
211
        ^ 'A node representing break statement in java'
×
212
]
×
213

×
214
{ #category : 'comments' }
×
215
FASTJavaMetamodelGenerator >> commentForJavaCaseStatement [
×
216
        ^ 'case part of switch statement'
×
217
]
×
218

×
219
{ #category : 'comments' }
×
220
FASTJavaMetamodelGenerator >> commentForJavaCharacterLiteral [
×
221
        ^ 'I represent a character literal node.
×
222
example:
×
223
```java
×
224
char c = ''a'';
×
225
```
×
226
`''a''` is the literal'
×
227
]
×
228

×
229
{ #category : 'comments' }
×
230
FASTJavaMetamodelGenerator >> commentForJavaClassDeclaration [
×
231
        ^ 'I represent a class declaration
×
232
example
×
233

×
234
public class ClassName extends SomeClass implements OneClass, TwoClass {
×
235

×
236
        int oneDeclaration;
×
237
        
×
238
        void methodDeclaration(){
×
239
        }
×
240
}'
×
241
]
×
242

×
243
{ #category : 'comments' }
×
244
FASTJavaMetamodelGenerator >> commentForJavaClassProperty [
×
245
        ^ 'A FASTJavaClassProperty corresponds to the access to a class property
×
246
        
×
247
        It is not the same as the field access because there are some specific usage of class property to access the current object.
×
248
        
×
249
ex.
×
250

×
251
class Enclosing {
×
252
    void method(Enclosing other) {
×
253
        // ...
×
254
    }
×
255

×
256
    void otherMethod() {
×
257
        new Runnable() {
×
258
            public void run() {
×
259
                method(this);
×
260

×
261

×
262
                                                                --> Does not compile. ''this'' is a Runnable!
×
263

×
264

×
265

×
266
                method(Enclosing.this);
×
267

×
268
                                                                --> Compiles fine.
×
269

×
270

×
271
            }
×
272
        }.run();
×
273
    }
×
274
}
×
275
'
×
276
]
×
277

×
278
{ #category : 'comments' }
×
279
FASTJavaMetamodelGenerator >> commentForJavaComment [
×
280
        ^ 'I represent a Java comment (block or line comment)'
×
281
]
×
282

×
283
{ #category : 'comments' }
×
284
FASTJavaMetamodelGenerator >> commentForJavaConditionalStatement [
×
285
        ^ 'I represent a Java conditionnal Statement
×
286

×
287
ex:
×
288

×
289
(h.get() == 2) ? thenPart : elsePart'
×
290
]
×
291

×
292
{ #category : 'comments' }
×
293
FASTJavaMetamodelGenerator >> commentForJavaContinueStatement [
×
294
        ^ 'A node representing continue statement in java'
×
295
]
×
296

×
297
{ #category : 'comments' }
×
298
FASTJavaMetamodelGenerator >> commentForJavaDefaultCaseStatement [
×
299
        ^ 'I represent a default case
×
300
        
×
301
ex.:
×
302

×
303
default:'
×
304
]
×
305

×
306
{ #category : 'comments' }
×
307
FASTJavaMetamodelGenerator >> commentForJavaDoWhileStatement [
×
308
        ^ 'A node of a do-while statement.
×
309

×
310
eg.
×
311
do {
×
312
...
×
313
} while(...);'
×
314
]
×
315

×
316
{ #category : 'comments' }
×
317
FASTJavaMetamodelGenerator >> commentForJavaDoubleLiteral [
×
318
        ^ 'I represent a double literal node.
×
319
example:
×
320
```java
×
321
double d1 = 12.3;
×
322
double d2 = 12.3d;
×
323
```
×
324
`12.3` and `12.3d` are double literals'
×
325
]
×
326

×
327
{ #category : 'comments' }
×
328
FASTJavaMetamodelGenerator >> commentForJavaEmptyDimExpression [
×
329
        ^ 'A node representing an empty expression when creating an array, for example:
×
330
        
×
331
        new String[] {"a"};'
×
332
]
×
333

×
334
{ #category : 'comments' }
×
335
FASTJavaMetamodelGenerator >> commentForJavaEmptyMethodDeclaration [
×
336
        ^ 'I reprensent an empty method declaration
×
337
        
×
338
ex.:
×
339
void newMethod() {
×
340
        new Patate() {
×
341
                //The empty method declaration is ";" 
×
342
                ;
×
343
                
×
344
        };
×
345
}'
×
346
]
×
347

×
348
{ #category : 'comments' }
×
349
FASTJavaMetamodelGenerator >> commentForJavaEnumDeclaration [
×
350
        ^ 'I represent an enum declaration
×
351
example
×
352

×
353
public enum MyEnum {
×
354
        
×
355
        HELLO;
×
356
        
×
357
        int oneDeclaration;
×
358
        
×
359
        void methodDeclaration(){
×
360
        }
×
361
}'
×
362
]
×
363

×
364
{ #category : 'comments' }
×
365
FASTJavaMetamodelGenerator >> commentForJavaFieldAccess [
×
366
        ^ 'A FASTJavaFieldAccess corresponds to an access to an instance variable (field)'
×
367
]
×
368

×
369
{ #category : 'comments' }
×
370
FASTJavaMetamodelGenerator >> commentForJavaFloatLiteral [
×
371
        ^ 'I represent a float literal node.
×
372
example:
×
373
```java
×
374
float f = 12.3f;
×
375
```
×
376
`12.3f` is the literal'
×
377
]
×
378

×
379
{ #category : 'comments' }
×
380
FASTJavaMetamodelGenerator >> commentForJavaForEachStatement [
×
381
        ^ 'A node of a for loop statement.
×
382

×
383
eg.
×
384
for(Patate p : list) {
×
385
...
×
386
}'
×
387
]
×
388

×
389
{ #category : 'comments' }
×
390
FASTJavaMetamodelGenerator >> commentForJavaForStatement [
×
391
        ^ 'A node of a for loop statement.
×
392

×
393
eg.
×
394
for(_;_;_) {
×
395
...
×
396
}'
×
397
]
×
398

×
399
{ #category : 'comments' }
×
400
FASTJavaMetamodelGenerator >> commentForJavaIdentifier [
×
401
        ^ 'A FASTJavaIdentifier is an identifier in a Java program'
×
402
]
×
403

×
404
{ #category : 'comments' }
×
405
FASTJavaMetamodelGenerator >> commentForJavaIfStatement [
×
406
        ^ 'A node of a if statement or an if-else statement.
×
407

×
408
eg.
×
409
if(...) {
×
410
...
×
411
} else {
×
412
...
×
413
}'
×
414
]
×
415

×
416
{ #category : 'comments' }
×
417
FASTJavaMetamodelGenerator >> commentForJavaInfixOperation [
×
418
        ^ 'Binary java operations in  format: <expr> <operator> <expr>
×
419

×
420
ex:
×
421
        a + b
×
422
        3 == 6
×
423
        a = 6'
×
424
]
×
425

×
426
{ #category : 'comments' }
×
427
FASTJavaMetamodelGenerator >> commentForJavaInitializer [
×
428
        ^ 'I represent a Java initializer
×
429
        
×
430
ex.:
×
431

×
432
new Button(){
×
433

×
434
{ something }
×
435

×
436
}
×
437
'
×
438
]
×
439

×
440
{ #category : 'comments' }
×
441
FASTJavaMetamodelGenerator >> commentForJavaIntegerLiteral [
×
442
        ^ 'I represent an integer literal node.'
×
443
]
×
444

×
445
{ #category : 'comments' }
×
446
FASTJavaMetamodelGenerator >> commentForJavaInterfaceDeclaration [
×
447
        ^ 'I represent an interface declaration
×
448
example
×
449

×
450
```java
×
451
public interface MyInterface {
×
452

×
453
    public static final String CODE = "SEME";
×
454

×
455
}
×
456
```
×
457
'
×
458
]
×
459

×
460
{ #category : 'comments' }
×
461
FASTJavaMetamodelGenerator >> commentForJavaLabeledCaseStatement [
×
462
        ^ 'I represent a Labeled case
×
463
        
×
464
ex.:
×
465

×
466
case LABEL:'
×
467
]
×
468

×
469
{ #category : 'comments' }
×
470
FASTJavaMetamodelGenerator >> commentForJavaLongLiteral [
×
471
        ^ 'I represent a long literal node.
×
472
example:
×
473
```java
×
474
long l = 2147483648L;
×
475
```
×
476
`2147483648L` is the literal'
×
477
]
×
478

×
479
{ #category : 'comments' }
×
480
FASTJavaMetamodelGenerator >> commentForJavaMethodEntity [
×
481
        ^ 'Represents a Java method'
×
482
]
×
483

×
484
{ #category : 'comments' }
×
485
FASTJavaMetamodelGenerator >> commentForJavaMethodInvocation [
×
486
        ^ 'A node representing method invocation'
×
487
]
×
488

×
489
{ #category : 'comments' }
×
490
FASTJavaMetamodelGenerator >> commentForJavaModifier [
×
491
        ^ 'I am a Java modifier
×
492

×
493
example: 
×
494
for classes: 
×
495

×
496
- public
×
497
- default
×
498
- final
×
499
- abstract
×
500

×
501
for methods:
×
502

×
503
- public
×
504
- private
×
505
- default
×
506
- protected
×
507
- final
×
508
- static
×
509
- abstract
×
510
- transient
×
511
- synchronized
×
512
- volatile
×
513

×
514

×
515
'
×
516
]
×
517

×
518
{ #category : 'comments' }
×
519
FASTJavaMetamodelGenerator >> commentForJavaNewArray [
×
520
        ^ 'I represent a java new array node.
×
521
ex.
×
522

×
523
new String()["10px", "Hello world"]'
×
524
]
×
525

×
526
{ #category : 'comments' }
×
527
FASTJavaMetamodelGenerator >> commentForJavaNewClassExpression [
×
528
        ^ 'I represent a new class expression (which is most of the time a new anonymous class)
×
529
        
×
530
        
×
531
ex. for SecureAsyncCallback
×
532

×
533
new SecureAsyncCallback<Void>() {
×
534
        @Override
×
535
        public void onSuccess(final Void result) {}
×
536
        
×
537
        @Override
×
538
        public void onFailure(final Throwable caught) {
×
539
                super.onFailure(caught);
×
540
        }
×
541
}'
×
542
]
×
543

×
544
{ #category : 'comments' }
×
545
FASTJavaMetamodelGenerator >> commentForJavaNewExpression [
×
546
        ^ 'I represent the invocation of a Class constructor with the keyword ''new''
×
547

×
548
ex.
×
549

×
550
new Patate()'
×
551
]
×
552

×
553
{ #category : 'comments' }
×
554
FASTJavaMetamodelGenerator >> commentForJavaNullLiteral [
×
555
        ^ 'I represent a `null` literal node.'
×
556
]
×
557

×
558
{ #category : 'comments' }
×
559
FASTJavaMetamodelGenerator >> commentForJavaOuterThis [
×
560
        ^ 'I represent a java outer this (only a call to ''this'' to a class)
×
561
        
×
562
ex.:
×
563

×
564
hello(MyClass.this)'
×
565
]
×
566

×
567
{ #category : 'comments' }
×
568
FASTJavaMetamodelGenerator >> commentForJavaQualifiedTypeName [
×
569
        ^ 'I represent a qualified name for a type
×
570

×
571
example:
×
572

×
573
new Canard.Poulet(){
×
574

×
575
}
×
576

×
577
"Canard.Poulet" is the qualified name
×
578

×
579
"Poulet" is the main name
×
580

×
581
"Canard" is the namespace of the main name 
×
582
'
×
583
]
×
584

585
{ #category : 'comments' }
586
FASTJavaMetamodelGenerator >> commentForJavaStringLiteral [
×
587
        ^ 'I represent a string literal node.'
×
588
]
×
589

590
{ #category : 'comments' }
591
FASTJavaMetamodelGenerator >> commentForJavaSwitchStatement [
×
592
        ^ 'A node representing switch statement
×
593

×
594
eg.
×
595
switch (_) {
×
596
...
×
597
}'
×
598
]
×
599

600
{ #category : 'comments' }
601
FASTJavaMetamodelGenerator >> commentForJavaTAssignable [
×
602
        ^ 'You can assign something to me
×
603
example:
×
604

×
605
this.hello = "hello"'
×
606
]
×
607

608
{ #category : 'comments' }
609
FASTJavaMetamodelGenerator >> commentForJavaTModifier [
×
610
        ^ 'I am a modifier in java
×
611
example:
×
612

×
613
public, proctected, private'
×
614
]
×
615

616
{ #category : 'comments' }
617
FASTJavaMetamodelGenerator >> commentForJavaThis [
×
618
        ^ 'A FASTJavaThis corresponds to ''this'' in Java'
×
619
]
×
620

621
{ #category : 'comments' }
622
FASTJavaMetamodelGenerator >> commentForJavaThrowStatement [
×
623
        ^ 'I represent a java throw statement
×
624
        
×
625
ex:
×
626

×
627
throw new Hello();'
×
628
]
×
629

630
{ #category : 'comments' }
631
FASTJavaMetamodelGenerator >> commentForJavaTryCatchStatement [
×
632
        ^ 'I represent the java try catch statement. I must have two parts: the ''Try'' part and the ''catch'' part. 
×
633
        
×
634
ex.
×
635

×
636
void tryCatch() {
×
637
        int x;
×
638
        try {
×
639
                x = 1;
×
640
   } catch (Exception e) {
×
641
                Patate.displayError(e.getMessage());
×
642
        };
×
643
}
×
644

×
645
'
×
646
]
×
647

648
{ #category : 'comments' }
649
FASTJavaMetamodelGenerator >> commentForJavaTypePattern [
×
650

×
651
        ^ 'This code element defines a type pattern, introduced in Java 16 by [JEP 394](https://openjdk.java.net/jeps/394).
×
652
Example:
×
653
```language=text
×
654
        Object obj = null;
×
655
        boolean longerThanTwo = false;
×
656
        // String s is the type pattern, declaring a local variable
×
657
        if (obj instanceof String s) {
×
658
                longerThanTwo = s.length() > 2;
×
659
        }
×
660
```'
×
661
]
×
662

663
{ #category : 'comments' }
664
FASTJavaMetamodelGenerator >> commentForJavaUnaryExpression [
×
665
        ^ 'I represent a Java Unary Expression
×
666
        
×
667
It can be :
×
668

×
669
++i
×
670
i++
×
671
--i
×
672
i--
×
673
!b
×
674
+i
×
675
-i
×
676

×
677
see: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html'
×
678
]
×
679

680
{ #category : 'comments' }
681
FASTJavaMetamodelGenerator >> commentForJavaVarDeclStatement [
×
682
        ^ 'A statement of variable declaration.
×
683
A variable declaration statement can contain several declarators.
×
684

×
685
eg.
×
686

×
687
int d = 3, e, f = 5;
×
688
statement has 3 declarators separated by commas. Second declarator has no expression.'
×
689
]
×
690

691
{ #category : 'comments' }
692
FASTJavaMetamodelGenerator >> commentForJavaVariableDeclarator [
×
693
        ^ 'A part of variable declaration statement containing a variable (named entity) and an expression (optional) that is assigned to it.
×
694
A variable declaration statement can contain several declarators.
×
695

×
696
eg.
×
697

×
698
int d = 3, e, f = 5;
×
699
statement has 3 declarators separated by commas. Second declarator has no expression.'
×
700
]
×
701

702
{ #category : 'comments' }
703
FASTJavaMetamodelGenerator >> commentForJavaWhileStatement [
×
704
        ^ 'A node of a while statement.
×
705

×
706
eg.
×
707
while(...) {
×
708
...
×
709
}'
×
710
]
×
711

712
{ #category : 'definition' }
713
FASTJavaMetamodelGenerator >> defineClasses [
×
714
        super defineClasses.
×
715

×
716
        javaEntity  := self newClassNamed: #Entity.
×
717

×
718
        javaComment := self newClassNamed: #Comment comment: self commentForJavaComment.
×
719
        javaFieldAccess := self newClassNamed: #FieldAccess comment: self commentForJavaFieldAccess.
×
720
        javaFieldAccess withTesting.
×
721
        javaIdentifier := self newClassNamed: #Identifier comment: self commentForJavaIdentifier.
×
722
        javaIdentifier withTesting.
×
723
        javaInfixOperation := self newClassNamed: #InfixOperation comment: self commentForJavaInfixOperation.
×
724
        javaInfixOperation withTesting.
×
725
        javaMethodEntity := self newClassNamed: #MethodEntity comment: self commentForJavaMethodEntity.
×
726
        javaMethodEntity withTesting.
×
727
        javaMethodInvocation := self newClassNamed: #MethodInvocation comment: self commentForJavaMethodInvocation.
×
728
        javaThis := self newClassNamed: #This comment: self commentForJavaThis.
×
729
        javaThis withTesting.
×
730
        javaOuterThis := self newClassNamed: #OuterThis comment: self commentForJavaOuterThis.
×
731
        javaOuterThis withTesting.
×
732
        javaVariableDeclarator := self newClassNamed: #VariableDeclarator comment: self commentForJavaVariableDeclarator.
×
733
        javaVariableDeclarator withTesting.
×
734
        javaClassProperty := self newClassNamed: #ClassProperty comment: self commentForJavaClassProperty.
×
735
        javaClassProperty withTesting.
×
736
        javaNewArray := self newClassNamed: #NewArray comment: self commentForJavaNewArray.
×
737
        javaNewArray withTesting.
×
738
        javaArrayAccess := self newClassNamed: #ArrayAccess comment: self commentForJavaArrayAccess.
×
739
        javaArrayAccess withTesting.
×
740
        javaInitializer := self newClassNamed: #Initializer comment: self commentForJavaInitializer.
×
741
        javaInitializer withTesting.
×
742
        javaArrayInitializer :=  self newClassNamed: #ArrayInitializer comment: self commentForJavaArrayInitializer.
×
743
        javaArrayInitializer withTesting.
×
744
        javaModifier := self newClassNamed: #Modifier comment: self commentForJavaModifier.
×
745
        javaModifier withTesting.
×
746
        javaEnumConstant := self newClassNamed: #EnumConstant.
×
747
        javaEnumConstant withTesting.
×
748

×
749
        javaLambdaExpression := self newClassNamed: #LambdaExpression comment: 'I represent a lambda expression'.
×
750
        javaLambdaExpression withTesting.
×
751
        javaMethodReference := self newClassNamed: #MethodReference comment: 'I represent a method reference'.
×
752
        javaMethodReference withTesting.
×
753
        javaSynchronizedStatement := self newClassNamed: #SynchronizedStatement comment: 'I represent a ''synchronized'' statement'.
×
754
        javaSynchronizedStatement withTesting.
×
755

×
756
        "type name"
×
757
        javaTypeName := self newClassNamed: #TypeName comment: 'I represent the name of a type'.
×
758
        javaTypeName withTesting.
×
759
        javaQualifiedTypeName := self newClassNamed: #QualifiedTypeName comment: self commentForJavaQualifiedTypeName.
×
760
        javaQualifiedTypeName withTesting.
×
761

×
762
        "literals"
×
763
        javaLiteral := self newClassNamed: #Literal comment: 'abtract class for all literals'.
×
764
        javaCharacterLiteral := self newClassNamed: #CharacterLiteral comment: self commentForJavaCharacterLiteral.
×
765
        javaFloatLiteral := self newClassNamed: #FloatLiteral comment: self commentForJavaFloatLiteral.
×
766
        javaIntegerLiteral := self newClassNamed: #IntegerLiteral comment: self commentForJavaIntegerLiteral.
×
767
        javaNullLiteral := self newClassNamed: #NullLiteral comment: self commentForJavaNullLiteral.
×
768
        javaStringLiteral := self newClassNamed: #StringLiteral comment: self commentForJavaStringLiteral.
×
769
        javaBooleanLiteral := self newClassNamed: #BooleanLiteral comment: self commentForJavaBooleanLiteral.
×
770
        javaLongLiteral := self newClassNamed: #LongLiteral comment: self commentForJavaLongLiteral.
×
771
        javaDoubleLiteral := self newClassNamed: #DoubleLiteral comment: self commentForJavaDoubleLiteral.
×
772

×
773
        "type expressions"
×
774
        javaTypeExpression := self newClassNamed: #TypeExpression comment: 'I am an abstract class representing a type'.
×
775
        javaTypeExpression withTesting.
×
776
        javaArrayTypeExpression := self newClassNamed: #ArrayTypeExpression comment: 'I represent an array type'.
×
777
        javaArrayTypeExpression withTesting.
×
778
        javaClassTypeExpression := self newClassNamed: #ClassTypeExpression comment: 'I represent a class type'.
×
779
        javaClassTypeExpression withTesting.
×
780
        javaPrimitiveTypeExpression := self newClassNamed: #PrimitiveTypeExpression comment: 'I represent a primitive type'.
×
781
        javaPrimitiveTypeExpression withTesting.
×
782
        javaTypeParameter := self newClassNamed: #TypeParameterExpression comment: 'I represent JavaTypeParameter such as `void <T extends Hello> T myMethod()`'.
×
783
        javaTypeParameter withTesting.
×
784

×
785
        "primitive type expressions"
×
786
        javaBooleanTypeExpression := self newClassNamed: #BooleanTypeExpression comment: 'I represent a boolean type'.
×
787
        javaBooleanTypeExpression withTesting.
×
788
        javaByteTypeExpression := self newClassNamed: #ByteTypeExpression comment: 'I represent a byte type'.
×
789
        javaByteTypeExpression withTesting.
×
790
        javaCharTypeExpression := self newClassNamed: #CharTypeExpression comment: 'I represent a char type'.
×
791
        javaCharTypeExpression withTesting.
×
792
        javaDoubleTypeExpression := self newClassNamed: #DoubleTypeExpression comment: 'I represent a double type'.
×
793
        javaDoubleTypeExpression withTesting.
×
794
        javaFloatTypeExpression := self newClassNamed: #FloatTypeExpression comment: 'I represent a float type'.
×
795
        javaFloatTypeExpression withTesting.
×
796
        javaIntTypeExpression := self newClassNamed: #IntTypeExpression comment: 'I represent an int type'.
×
797
        javaIntTypeExpression withTesting.
×
798
        javaLongTypeExpression := self newClassNamed: #LongTypeExpression comment: 'I represent a long type'.
×
799
        javaLongTypeExpression withTesting.
×
800
        javaShortTypeExpression := self newClassNamed: #ShortTypeExpression comment: 'I represent a short type'.
×
801
        javaShortTypeExpression withTesting.
×
802
        javaVoidTypeExpression := self newClassNamed: #VoidTypeExpression comment: 'I represent a short type'.
×
803
        javaVoidTypeExpression withTesting.
×
804

×
805
        "expressions"
×
806
        javaUnaryExpression := self newClassNamed: #UnaryExpression comment: self commentForJavaUnaryExpression.
×
807
        javaNewExpression := self newClassNamed: #NewExpression comment: self commentForJavaNewExpression.
×
808
        javaNewExpression withTesting.
×
809
        javaNewClassExpression := self newClassNamed: #NewClassExpression comment: self commentForJavaNewClassExpression.
×
810
        javaNewClassExpression withTesting.
×
811
        javaAssignmentExpression := self newClassNamed: #AssignmentExpression comment: self commentForJavaAssignmentExpression.
×
812
        javaAssignmentExpression withTesting.
×
813
        javaCastExpression := self newClassNamed: #CastExpression comment: 'I represent a cast expression, e.g. `(int) 0.5`'.
×
814
        javaCastExpression withTesting.
×
815
        javaParameterExpression := self newClassNamed: #Parameter comment: 'I represent a parameter of a method declaration'.
×
816
        javaParameterExpression withTesting.
×
817
        javaConditionalExpression := self newClassNamed: #ConditionalExpression comment: self commentForJavaConditionalStatement.
×
818
        javaConditionalExpression withTesting.
×
819
        javaVariableExpression := self newClassNamed: #VariableExpression.
×
820
        javaEmptyDimExpression := self newClassNamed: #EmptyDimExpression comment: self commentForJavaEmptyDimExpression.
×
821
        javaEmptyDimExpression withTesting.
×
822
        javaAnnotationExpression := self newClassNamed: #Annotation comment: self commentForJavaAnnotation.
×
823
        javaAnnotationExpression withTesting.
×
824
        javaArrayAnnotationElement := self newClassNamed: #ArrayAnnotationElement comment: 'I represent an array as argument of an annotationExpression'.
×
825
        javaArrayAnnotationElement withTesting.
×
826
        javaTypePattern := self newClassNamed: #TypePattern comment: self commentForJavaTypePattern.
×
827
        javaTypePattern withTesting.
×
828

×
829
        "statements"
×
830
        javaStatement := self newClassNamed: #Statement.
×
831
        javaIfStatement := self newClassNamed: #IfStatement comment: self commentForJavaIfStatement.
×
832
        javaIfStatement withTesting.
×
833
        javaForStatement := self newClassNamed: #ForStatement comment: self commentForJavaForStatement.
×
834
        javaForStatement withTesting.
×
835
        javaBreakStatement := self newClassNamed: #BreakStatement comment: self commentForJavaBreakStatement.
×
836
        javaBreakStatement withTesting.
×
837
        javaSwitchStatement := self newClassNamed: #SwitchStatement comment: self commentForJavaSwitchStatement.
×
838
        javaSwitchStatement withTesting.
×
839
        javaCaseStatement := self newClassNamed: #CaseStatement comment: self commentForJavaCaseStatement.
×
840
        javaCaseStatement withTesting.
×
841
        javaContinueStatement := self newClassNamed: #ContinueStatement comment: self commentForJavaContinueStatement.
×
842
        javaContinueStatement withTesting.
×
843
        javaWhileStatement := self newClassNamed: #WhileStatement comment: self commentForJavaWhileStatement.
×
844
        javaWhileStatement withTesting.
×
845
        javaDoWhileStatement := self newClassNamed: #DoWhileStatement comment: self commentForJavaDoWhileStatement.
×
846
        javaDoWhileStatement withTesting.
×
847
        javaThrowStatement := self newClassNamed: #ThrowStatement comment: self commentForJavaThrowStatement.
×
848
        javaThrowStatement withTesting.
×
849
        javaTryCatchStatement := self newClassNamed: #TryCatchStatement comment: self commentForJavaTryCatchStatement.
×
850
        javaTryCatchStatement withTesting.
×
851
        javaCatchPartStatement := self newClassNamed: #CatchPartStatement comment: 'I represent the ''catch'' part of the TryCatch Statement'.
×
852
        javaCatchPartStatement withTesting.
×
853
        javaForEachStatement := self newClassNamed: #ForEachStatement comment: self commentForJavaForEachStatement.
×
854
        javaForEachStatement withTesting.
×
855
        javaLabeledCaseStatement := self newClassNamed: #LabeledCaseStatement comment: self commentForJavaLabeledCaseStatement.
×
856
        javaLabeledCaseStatement withTesting.
×
857
        javaDefaultCaseStatement := self newClassNamed: #DefaultCaseStatement comment: self commentForJavaDefaultCaseStatement.
×
858
        javaDefaultCaseStatement withTesting.
×
859
        javaVarDeclStatement := self newClassNamed: #VarDeclStatement comment: self commentForJavaVarDeclStatement.
×
860
        javaVarDeclStatement withTesting.
×
861
        javaAssertStatement := self newClassNamed: #AssertStatement comment: self commentForAssertStatement.
×
862
        javaVarDeclStatement withTesting.
×
863
        javaStatementBlock := self newClassNamed: #StatementBlock.
×
864
        javaReturnStatement := self newClassNamed: #ReturnStatement.
×
865
        javaExpressionStatement := self newClassNamed: #ExpressionStatement.
×
866
        javaLabeledStatement := self newClassNamed: #LabeledStatement.
×
867
        javaLabeledStatement withTesting.
×
868

×
869
        "declarations"
×
870
        javaClassDeclaration := self newClassNamed: #ClassDeclaration comment: self commentForJavaClassDeclaration.
×
871
        javaClassDeclaration withTesting.
×
872
        javaEnumDeclaration := self newClassNamed: #EnumDeclaration comment: self commentForJavaEnumDeclaration.
×
873
        javaEnumDeclaration withTesting.
×
874
        javaInterfaceDeclaration := self newClassNamed: #InterfaceDeclaration comment: self commentForJavaInterfaceDeclaration.
×
875
        javaInterfaceDeclaration withTesting.
×
876
        javaEmptyMethodDeclaration := self newClassNamed: #EmptyMethodDeclaration comment: self commentForJavaEmptyMethodDeclaration.
×
877
        javaEmptyMethodDeclaration withTesting.
×
878
        compilationUnit := self newClassNamed: #CompilationUnit comment: 'I represent a compilation unit, I can contain declarations for a package, imports, and types'.
×
879
        compilationUnit withTesting.
×
880
        packageDeclaration := self newClassNamed: #PackageDeclaration comment: 'I represent a package declaration, e.g. `package fr.inria;`'.
×
881
        packageDeclaration withTesting.
×
882
        importDeclaration := self newClassNamed: #ImportDeclaration comment: 'I represent an import declaration, e.g. `import java.util.List;`'.
×
883
        importDeclaration withTesting.
×
884
        qualifiedName := self newClassNamed: #QualifiedName.
×
885
        qualifiedName withTesting.
×
886
]
×
887

888
{ #category : 'definition' }
889
FASTJavaMetamodelGenerator >> defineHierarchy [
×
890
        "define class hierarchy"
×
891

×
892
        super defineHierarchy.
×
893

×
894
        javaEntity --|> tEntity.
×
895
        javaEntity --|> tWithComments.
×
896

×
897
        javaComment --|> tComment.
×
898

×
899
        javaAssignmentExpression --|> tExpression.
×
900
        javaAssignmentExpression --|> tAnnotationElement.
×
901
        javaAssignmentExpression --|> tReceiver.
×
902
        javaAssignmentExpression --|> tWithAssignable.
×
903

×
904
        javaFieldAccess --|> tExpression.
×
905
        javaFieldAccess --|> tAssignable.
×
906
        javaFieldAccess --|> tWithReceiver.
×
907
        javaFieldAccess --|> tReceiver.
×
908

×
909
        javaInfixOperation --|> tExpression.
×
910
        javaInfixOperation --|> tReceiver.
×
NEW
911
        javaInfixOperation --|> tAnnotationElement.
×
912

×
913
        javaBreakStatement --|> tStatement.
×
914
        javaCaseStatement --|> tStatementBlock.
×
915
        javaContinueStatement --|> tStatement.
×
916
        javaDoWhileStatement --|> tStatement.
×
917
        javaForStatement --|> tStatement.
×
918

×
919
        javaIdentifier --|> javaVariableExpression.
×
920
        javaIdentifier --|> tReceiver.
×
921

×
922
        javaIfStatement --|> tStatement.
×
923

×
924
        javaArrayAnnotationElement --|> tAnnotationElement.
×
925
        javaArrayAnnotationElement --|> tExpression. "because annotationElement=value are modeled as assignment expression"
×
926

×
927
        "javaLiteral  --|> tLiteral. // we use the specific tLiteral for each case"
×
928
        javaLiteral --|> tReceiver.
×
929
        javaLiteral --|> tAnnotationElement.
×
930

×
931
        javaNullLiteral --|> tNullPointerLiteral.
×
932
        javaNullLiteral --|> javaLiteral.
×
933
        javaCharacterLiteral --|> tCharacterLiteral.
×
934
        javaCharacterLiteral --|> javaLiteral.
×
935
        javaStringLiteral --|> tStringLiteral.
×
936
        javaStringLiteral --|> javaLiteral.
×
937
        javaIntegerLiteral --|> tLiteral.
×
938
        javaIntegerLiteral --|> javaLiteral.
×
939
        javaFloatLiteral --|> tLiteral.
×
940
        javaFloatLiteral --|> javaLiteral.
×
941
        javaBooleanLiteral --|> tBooleanLiteral.
×
942
        javaBooleanLiteral --|> javaLiteral.
×
943
        javaLongLiteral --|> tLiteral.
×
944
        javaLongLiteral --|> javaLiteral.
×
945
        javaDoubleLiteral --|> tLiteral.
×
946
        javaDoubleLiteral --|> javaLiteral.
×
947

×
948
        javaMethodEntity --|> tNamedBehaviouralEntity.
×
949
        javaMethodEntity --|> #THasImmediateSource.
×
950
        javaMethodEntity --|> tDeclaration.
×
951
        javaMethodEntity --|> tWithModifiers.
×
952

×
953
        javaClassDeclaration --|> tStatement.
×
954
        javaClassDeclaration --|> tDeclaration.
×
955
        javaClassDeclaration --|> tWithDeclarations.
×
956
        javaClassDeclaration --|> tWithModifiers.
×
957
        javaClassDeclaration --|> tNamedEntity.
×
958
        javaClassDeclaration --|> #THasImmediateSource.
×
959
        javaClassDeclaration withPrecedenceOf: #THasImmediateSource.
×
960

×
961
        javaEnumDeclaration --|> tStatement.
×
962
        javaEnumDeclaration --|> tDeclaration.
×
963
        javaEnumDeclaration --|> tWithDeclarations.
×
964
        javaEnumDeclaration --|> tWithModifiers.
×
965
        javaEnumDeclaration --|> tNamedEntity.
×
966
        javaEnumDeclaration --|> #THasImmediateSource.
×
967
        javaEnumDeclaration withPrecedenceOf: #THasImmediateSource.
×
968

×
969
        javaEnumConstant --|> javaVariableExpression.
×
970

×
971
        javaInterfaceDeclaration --|> tStatement.
×
972
        javaInterfaceDeclaration --|> tDeclaration.
×
973
        javaInterfaceDeclaration --|> tWithDeclarations.
×
974
        javaInterfaceDeclaration --|> tWithModifiers.
×
975
        javaInterfaceDeclaration --|> tNamedEntity.
×
976
        javaInterfaceDeclaration --|> #THasImmediateSource.
×
977
        javaInterfaceDeclaration withPrecedenceOf: #THasImmediateSource.
×
978

×
979
        javaMethodInvocation --|> tInvocation.
×
980
        javaMethodInvocation --|> tWithReceiver.
×
981
        javaMethodInvocation --|> tReceiver.
×
982

×
983
        javaSwitchStatement --|> tStatement.
×
984
        javaThis --|> javaVariableExpression.
×
985

×
986
        javaVarDeclStatement --|> tStatement.
×
987
        javaVarDeclStatement --|> tDeclaration.
×
988
        javaVarDeclStatement --|> tScopableEntity.
×
989
        javaVarDeclStatement --|> tWithModifiers.
×
990

×
991
        javaVariableDeclarator --|> tEntity.
×
992
        javaWhileStatement --|> tStatement.
×
993
        javaMethodInvocation --|> tNamedEntity.
×
994
        javaCastExpression --|> tExpression.
×
995
        javaCastExpression --|> tReceiver.
×
996

×
997
        javaClassProperty --|> javaVariableExpression.
×
998
        javaClassProperty --|> tReceiver.
×
999
        javaClassProperty --|> tAnnotationElement.
×
1000

×
1001
        javaTryCatchStatement --|> tStatement.
×
1002
        javaForEachStatement --|> tStatement.
×
1003
        javaUnaryExpression --|> tExpression.
×
1004

×
1005
        javaNewExpression --|> tExpression.
×
1006
        javaNewExpression --|> #TWithArguments.
×
1007
        javaNewExpression --|> tReceiver.
×
1008
        javaNewExpression --|> tWithReceiver.
×
1009

×
1010
        javaNewClassExpression --|> javaNewExpression.
×
1011
        javaNewClassExpression --|> tWithDeclarations.
×
1012
        javaNewClassExpression --|> #TWithArguments.
×
1013

×
1014
        javaNewArray --|> javaNewExpression.
×
1015
        javaEmptyDimExpression --|> tExpression.
×
1016
        javaConditionalExpression --|> tExpression.
×
1017

×
1018
        javaArrayAccess --|> tExpression.
×
1019
        javaArrayAccess --|> tAssignable.
×
1020
        javaArrayAccess --|> tReceiver.
×
1021

×
1022
        javaVariableExpression --|> tVariableExpression.
×
1023
        javaVariableExpression --|> tAssignable.
×
1024
        javaVariableExpression --|> tReceiver.
×
1025

×
1026
        javaThrowStatement --|> tStatement.
×
1027
        javaLabeledCaseStatement --|> javaCaseStatement.
×
1028
        javaDefaultCaseStatement --|> javaCaseStatement.
×
1029
        javaEmptyMethodDeclaration --|> javaMethodEntity.
×
1030

×
1031
        javaArrayInitializer --|> tExpression.
×
1032
        javaArrayInitializer --|> tAnnotationElement.
×
1033

×
1034
        javaInitializer --|> tScopableEntity.
×
1035
        javaInitializer --|> #THasImmediateSource.
×
1036
        javaInitializer --|> tDeclaration.
×
1037

×
1038
        javaOuterThis --|> tExpression.
×
1039
        javaOuterThis --|> tReceiver.
×
1040

×
1041
        javaCatchPartStatement --|> tStatement.
×
1042

×
1043
        javaLambdaExpression --|> tExpression.
×
1044
        javaLambdaExpression --|> tWithParameters.
×
1045

×
1046
        javaMethodReference --|> tExpression.
×
1047
        javaMethodReference --|> tNamedEntity.
×
1048

×
1049
        javaSynchronizedStatement --|> tStatement.
×
1050

×
1051
        "types name"
×
1052
        javaTypeName --|> tNamedEntity.
×
1053
        javaTypeName --|> tExpression.
×
1054
        javaTypeName --|> tAnnotationElement.
×
1055
        javaQualifiedTypeName --|> javaTypeName.
×
1056

×
1057
        "types"
×
1058
        javaTypeExpression --|> javaVariableExpression.
×
1059
        javaArrayTypeExpression --|> javaTypeExpression.
×
1060
        javaPrimitiveTypeExpression --|> javaTypeExpression.
×
1061
        javaBooleanTypeExpression --|> javaPrimitiveTypeExpression.
×
1062
        javaByteTypeExpression --|> javaPrimitiveTypeExpression.
×
1063
        javaCharTypeExpression --|> javaPrimitiveTypeExpression.
×
1064
        javaDoubleTypeExpression --|> javaPrimitiveTypeExpression.
×
1065
        javaFloatTypeExpression --|> javaPrimitiveTypeExpression.
×
1066
        javaIntTypeExpression --|> javaPrimitiveTypeExpression.
×
1067
        javaLongTypeExpression --|> javaPrimitiveTypeExpression.
×
1068
        javaShortTypeExpression --|> javaPrimitiveTypeExpression.
×
1069
        javaVoidTypeExpression --|> javaPrimitiveTypeExpression.
×
1070

×
1071
        javaClassTypeExpression --|> javaTypeExpression.
×
1072
        javaClassTypeExpression --|> #TWithArguments.
×
1073

×
1074
        javaTypeParameter --|> tExpression.
×
1075
        javaTypeParameter --|> tNamedEntity.
×
1076

×
1077
        javaModifier --|> tModifier.
×
1078
        javaModifier --|> tExpression.
×
1079

×
1080
        javaAnnotationExpression --|> tNamedEntity.
×
1081
        javaAnnotationExpression --|> tModifier.
×
1082
        javaAnnotationExpression --|> tAnnotationElement.
×
1083

×
1084
        javaParameterExpression --|> tExpression.
×
1085
        javaParameterExpression --|> tVariableEntity.
×
1086
        javaConditionalExpression --|> tReceiver.
×
1087

×
1088
        javaStatement --|> tStatement.
×
1089
        javaStatementBlock --|> tStatementBlock.
×
1090
        javaReturnStatement --|> tReturnStatement.
×
1091
        javaAssertStatement --|> tStatement.
×
1092
        javaExpressionStatement --|> tExpressionStatement.
×
1093
        javaLabeledStatement --|> tStatement.
×
1094

×
1095
        qualifiedName --|> tNamedEntity.
×
1096
        qualifiedName --|> tEntity.
×
1097
        qualifiedName --|> tAssignable.
×
1098

×
1099
        javaTypePattern --|> tExpression.
×
1100

×
1101
        compilationUnit --|> tEntity.
×
1102

×
1103
        "package and import do not use TDeclaration on purpose: they are only contained in a compilation unit"
×
1104
        packageDeclaration --|> tEntity.
×
1105
        packageDeclaration --|> tWithQualifiedName.
×
1106

×
1107
        importDeclaration --|> tEntity.
×
1108
        importDeclaration --|> tWithQualifiedName
×
1109
]
×
1110

1111
{ #category : 'definition' }
1112
FASTJavaMetamodelGenerator >> defineProperties [
×
1113

×
1114
        super defineProperties.
×
1115

×
1116
        (javaAssignmentExpression property: #operator type: #String)
×
1117
                comment: 'The assignment operator: =, +=, /=, ...'.
×
1118

×
1119
        (javaFieldAccess property: #fieldName type: #String) comment:
×
1120
                'Name of accessed field'.
×
1121
        (javaInfixOperation property: #operator type: #String) comment:
×
1122
                'operator s symbol'.
×
1123
        (javaClassProperty property: #fieldName type: #String) comment:
×
1124
                'Name of accessed field'.
×
1125

×
1126
        (javaUnaryExpression property: #operator type: #String) comment:
×
1127
                'The operator string to apply to the expression'.
×
1128
        (javaUnaryExpression
×
1129
                 property: #isPrefixedUnaryExpression
×
1130
                 type: #Boolean) comment:
×
1131
                'True if the expression is prefixed (ex. ++i) else false'.
×
1132

×
1133
        (javaModifier property: #token type: #String) comment:
×
1134
                'The modifier value'.
×
1135

×
1136
        (javaLabeledStatement property: #label type: #String) comment:
×
1137
                'The label of the labeled statement'.
×
1138

×
1139
        (importDeclaration
×
1140
                 property: #isStatic
×
1141
                 type: #Boolean
×
1142
                 defaultValue: false) comment: 'True if importing static members'.
×
1143
        (importDeclaration
×
1144
                 property: #isOnDemand
×
1145
                 type: #Boolean
×
1146
                 defaultValue: false) comment:
×
1147
                'Whether this import is on-demand (wildcard) or single-type'.
×
1148

×
1149
        (javaInitializer
×
1150
                 property: #isStatic
×
1151
                 type: #Boolean
×
1152
                 defaultValue: false) comment: 'Whether this initializer is static'.
×
1153

×
1154
        (javaParameterExpression
×
1155
                 property: #hasVariableArguments
×
1156
                 type: #Boolean
×
1157
                 defaultValue: false) comment:
×
1158
                'Whether this parameter accepts a variable number of arguments (varargs), e.g. asList(T... a)'
×
1159
]
×
1160

1161
{ #category : 'definition' }
1162
FASTJavaMetamodelGenerator >> defineRelations [
×
1163

×
1164
        super defineRelations.
×
1165

×
1166
        ((javaArrayInitializer property: #initializers) comment:
×
1167
                 'My initializers')
×
1168
        <>-* ((tExpression property: #javaArrayInitializers) comment:
×
1169
                         'The owner of the expression').
×
1170

×
1171
        ((javaAnnotationExpression property: #elements) comment:
×
1172
                 '"Arguments" of the annotation, eg. this @Author annotation has two annotation elements:
×
1173
        @Author(name="Benjamin Franklin", date="3/27/2003")')
×
1174
        <>-* ((tAnnotationElement property: #parentAnnotation) comment:
×
1175
                         'An "argument" of an annotation, eg. "unchecked" in the following annotation:
×
1176
        @SuppressWarnings(value="unchecked")').
×
1177

×
1178
        ((javaArrayAnnotationElement property: #values) comment:
×
1179
                 'Annotation elements in the Array')
×
1180
        <>-* ((tAnnotationElement property: #arrayOwner) comment:
×
1181
                         'The ArrayAnnotationElement I am an element of').
×
1182

×
1183
        ((javaVarDeclStatement property: #declarators) comment:
×
1184
                 'The declarators for the type')
×
1185
        <>-* ((javaVariableDeclarator property: #varDeclOwner) comment:
×
1186
                         'The owner of the declarator').
×
1187

×
1188
        ((javaSwitchStatement property: #cases) comment:
×
1189
                 'The cases of the switch statement')
×
1190
        <>-*
×
1191
                ((javaCaseStatement property: #javaCaseStatementSwitchOwner)
×
1192
                         comment: 'The switch owner').
×
1193

×
1194
        ((javaVariableDeclarator property: #expression) comment:
×
1195
                 'Expression to be assigned to the var during declaration')
×
1196
        <>- ((tExpression property: #javaVariableDeclaratorExpressionOwner)
×
1197
                         comment: 'The javaVariableDeclarator owner (if possible)').
×
1198
        ((javaVariableDeclarator property: #variable) comment:
×
1199
                 'The variable that is being declared')
×
1200
        <>- ((javaVariableExpression property: #javaVariableDeclaratorOwner)
×
1201
                         comment: 'The javaVariableDeclarator owner (if possible)').
×
1202

×
1203
        ((javaAssignmentExpression property: #expression) comment:
×
1204
                 'Expression to be assigned to the var during declaration')
×
1205
        <>- ((tExpression property: #javaAssignmentExpressionOwner) comment:
×
1206
                         'The javaAssignmentExpression owner (if possible)').
×
1207

×
1208
        ((javaCastExpression property: #expression) comment:
×
1209
                 'The expression to cast')
×
1210
        <>- ((tExpression property: #javaCastExpressionOwner) comment:
×
1211
                         'The javaCastExpression owner (if possible)').
×
1212
        ((javaCastExpression property: #type) comment:
×
1213
                 'The type into which the expression will be cast')
×
1214
        <>- ((javaVariableExpression property: #javaCastExpressionTypeOwner)
×
1215
                         comment: 'The javaCastExpression owner (if possible)').
×
1216

×
1217
        ((javaClassProperty property: #type) comment:
×
1218
                 'The type of the property')
×
1219
        <>-
×
1220
                ((javaVariableExpression property: #javaClassPropertyOwner)
×
1221
                         comment: 'The javaClassProperty owner (if possible)').
×
1222

×
1223
        ((javaUnaryExpression property: #expression) comment:
×
1224
                 'The affected expression')
×
1225
        <>- ((tExpression property: #javaUnaryExpressionOwner) comment:
×
1226
                         'The javaUnaryExpression owner (if possible)').
×
1227

×
1228
        ((javaNewExpression property: #type) comment: 'The type of the array')
×
1229
        <>-
×
1230
                ((javaVariableExpression property: #javaNewExpressionOwner)
×
1231
                         comment: 'The javaNewExpression owner (if possible)').
×
1232

×
1233
        ((javaArrayAccess property: #expression) comment:
×
1234
                 'The accessed index')
×
1235
        <>- ((tExpression property: #javaArrayAccessOwner) comment:
×
1236
                         'The javaArrayAccess owner (if possible)').
×
1237
        ((javaArrayAccess property: #array) comment: 'Name of accessed field')
×
1238
        <>- ((tExpression property: #javaArrayArrayAccessOwner) comment:
×
1239
                         'The javaArrayArrayAccess owner (if possible)').
×
1240

×
1241
        ((javaOuterThis property: #type) comment: 'The accessed type')
×
1242
        <>- ((javaVariableExpression property: #javaOuterThisOwner) comment:
×
1243
                         'The javaOuterThis owner (if possible)').
×
1244

×
1245
        ((javaThrowStatement property: #expression) comment:
×
1246
                 'The thrown element')
×
1247
        <>- ((tExpression property: #javaThrowStatementOwner) comment:
×
1248
                         'The javaThrowStatement owner (if possible)').
×
1249

×
1250
        ((javaLabeledCaseStatement property: #label) comment:
×
1251
                 'The label of the case statement')
×
1252
        <>- ((tExpression property: #javaLabeledCaseStatementOwner) comment:
×
1253
                         'The javaLabeledCaseStatement owner (if possible)').
×
1254

×
1255
        ((javaForEachStatement property: #body) comment:
×
1256
                 'The body of the for-each statement')
×
1257
        <>- ((tStatement property: #javaForEachStatementOwner) comment:
×
1258
                         'The javaForEachStatement owner (if possible)').
×
1259
        ((javaForEachStatement property: #list) comment:
×
1260
                 'The list that the for-each statement iterates over')
×
1261
        <>- ((tExpression property: #javaForEachStatementOwner) comment:
×
1262
                         'The javaForEachStatement owner (if possible)').
×
1263
        ((javaForEachStatement property: #fieldname) comment:
×
1264
                 'The identifier of the created local variable')
×
1265
        <>- ((javaIdentifier property: #javaForEachStatementFieldNameOwner)
×
1266
                         comment: 'The javaForEachStatement owner (if possible)').
×
1267
        ((javaForEachStatement property: #type) comment:
×
1268
                 'The type of the created local variable')
×
1269
        <>- ((javaTypeExpression property: #javaForEachStatementTypeOwner)
×
1270
                         comment: 'The javaForEachStatement owner (if possible)').
×
1271

×
1272
        ((javaTryCatchStatement property: #try) comment:
×
1273
                 'I represent the ''try'' part of the TryCatch Statement')
×
1274
        <>- ((javaStatementBlock property: #javaTryCatchOwner) comment:
×
1275
                         'The javaTryCatch owner (if possible)').
×
1276
        ((javaTryCatchStatement property: #catches) comment:
×
1277
                 'I contain all the catch statements')
×
1278
        <>-* ((javaCatchPartStatement property: #tryOwner) comment:
×
1279
                         'The try part that owns me').
×
1280
        ((javaTryCatchStatement property: #finally) comment:
×
1281
                 'I contain the ''finally'' part of the try/catch/finally')
×
1282
        <>- ((javaStatementBlock property: #javaTryFinallyOwner) comment:
×
1283
                         'The try/finally part that owns me').
×
1284

×
1285
        ((javaCatchPartStatement property: #body) comment:
×
1286
                 'The body of the catch part')
×
1287
        <>-
×
1288
                ((javaStatementBlock property: #javaCatchPartStatementOwner)
×
1289
                         comment: 'The javaCatchPartStatementOwner owner (if possible)').
×
1290
        ((javaTryCatchStatement property: #resources) comment:
×
1291
                 'I contain the resources in a try-with-resource statement')
×
1292
        <>-*
×
1293
                ((javaVarDeclStatement property: #javaTryResourceOwner) comment:
×
1294
                         'The try-with-resource that owns me').
×
1295

×
1296
        ((javaCatchPartStatement property: #catchedTypes) comment:
×
1297
                 'The types (exception) that are catched')
×
1298
        <>-* ((javaTypeExpression property: #catchOwner) comment:
×
1299
                         'The catch part that owns me (ie. where I am catched)').
×
1300
        ((javaCatchPartStatement property: #parameter) comment:
×
1301
                 'The parameter of the catch part')
×
1302
        <>- ((javaVariableExpression property: #javaCatchParameterOwnler)
×
1303
                         comment: 'The javaCatchPartParameterOwner owner (if possible)').
×
1304

×
1305
        ((javaIfStatement property: #condition) comment:
×
1306
                 'The condition of the statement')
×
1307
        <>- ((tExpression property: #ifConditionOwner) comment:
×
1308
                         'I represent a condition for my owner').
×
1309
        ((javaIfStatement property: #elsePart) comment: 'else part')
×
1310
        <>- ((tStatement property: #ifElsePartOwner) comment:
×
1311
                         'The if owner (if possible)').
×
1312
        ((javaIfStatement property: #thenPart) comment: 'then part')
×
1313
        <>- ((tStatement property: #ifThenPartOwner) comment:
×
1314
                         'The if owner (if possible)').
×
1315

×
1316
        ((javaConditionalExpression property: #condition) comment:
×
1317
                 'The condition of the statement')
×
1318
        <>- ((tExpression property: #conditionalConditionOwner) comment:
×
1319
                         'I represent a condition for my owner').
×
1320
        ((javaConditionalExpression property: #elsePart) comment: 'else part')
×
1321
        <>- ((tExpression property: #conditionalElsePartOwner) comment:
×
1322
                         'The if owner (if possible)').
×
1323
        ((javaConditionalExpression property: #thenPart) comment: 'then part')
×
1324
        <>- ((tExpression property: #conditionalThenPartOwner) comment:
×
1325
                         'The if owner (if possible)').
×
1326

×
1327
        ((javaInfixOperation property: #leftOperand) comment: 'leftOperand')
×
1328
        <>-
×
1329
                ((tExpression property: #infixOperationLeftOperandOwner) comment:
×
1330
                         'The left operand (if possible)').
×
1331
        ((javaInfixOperation property: #rightOperand) comment: 'rightOperand')
×
1332
        <>-
×
1333
                ((tExpression property: #infixOperationRightOperandOwner) comment:
×
1334
                         'The right operand (if possible)').
×
1335

×
1336
        ((javaForStatement property: #condition) comment:
×
1337
                 'The condition of the statement')
×
1338
        <>- ((tExpression property: #forConditionOwner) comment:
×
1339
                         'I represent a condition for my owner').
×
1340
        ((javaForStatement property: #incrementor) comment:
×
1341
                 'Expression evaluated at the end of each loop')
×
1342
        <>- ((tStatement property: #forIncrementorOwner) comment:
×
1343
                         'I am the incrementor of the for').
×
1344
        ((javaForStatement property: #initializer) comment:
×
1345
                 'Expression used at initialization phase of a for loop')
×
1346
        <>- ((tStatement property: #forIninitializerOwner) comment:
×
1347
                         'I am the initializer of the for').
×
1348
        ((javaForStatement property: #body) comment:
×
1349
                 'A statement to be evaluated in the loop')
×
1350
        <>- ((tStatement property: #forBodyOwner) comment:
×
1351
                         'I am the body of the for').
×
1352

×
1353
        ((javaSwitchStatement property: #condition) comment:
×
1354
                 'The condition of the statement')
×
1355
        <>- ((tExpression property: #switchConditionOwner) comment:
×
1356
                         'I represent a condition for my owner').
×
1357

×
1358
        ((javaDoWhileStatement property: #condition) comment:
×
1359
                 'The condition of the statement')
×
1360
        <>- ((tExpression property: #doConditionOwner) comment:
×
1361
                         'I represent a condition for my owner').
×
1362
        ((javaDoWhileStatement property: #body) comment:
×
1363
                 'A statement to be evaluated in the loop')
×
1364
        <>- ((tStatement property: #doBodyOwner) comment:
×
1365
                         'I am the body of the do').
×
1366

×
1367
        ((javaWhileStatement property: #condition) comment:
×
1368
                 'The condition of the statement')
×
1369
        <>- ((tExpression property: #whileConditionOwner) comment:
×
1370
                         'I represent a condition for my owner').
×
1371
        ((javaWhileStatement property: #body) comment:
×
1372
                 'A statement to be evaluated in the loop')
×
1373
        <>- ((tStatement property: #whileBodyOwner) comment:
×
1374
                         'I am the body of the do').
×
1375

×
1376
        ((javaInitializer property: #statementBlock) comment:
×
1377
                 'Statements block of the behavioural entity')
×
1378
        <>- ((tStatementBlock property: #javaInitializerOwner) comment:
×
1379
                         'Behavioural entity containing the statement block').
×
1380

×
1381
        ((javaLabeledStatement property: #labeledStatement) comment:
×
1382
                 'Inner statement that is labeled')
×
1383
        <>- ((tStatement property: #labelStatementOwner) comment:
×
1384
                         'Label Statement entity containing this statement').
×
1385

×
1386
        ((javaNewArray property: #initializer) comment:
×
1387
                 'The initializer of the array')
×
1388
        <>- ((tExpression property: #javaNewArrayInitialOwner) comment:
×
1389
                         'I belong to a new array initialization').
×
1390

×
1391
        ((javaLambdaExpression property: #expression) comment:
×
1392
                 'Expression to be executed as part of the lambda.')
×
1393
        <>- ((tEntity property: #javaLambdaExpressionOwner) comment:
×
1394
                         'The expression owner (if possible)').
×
1395

×
1396
        ((javaMethodReference property: #receiver) comment:
×
1397
                 'The method of the reference')
×
1398
        <>- ((javaVariableExpression property: #javaMethodReferenceOwner)
×
1399
                         comment: 'The owner of the method reference (if possible)').
×
1400

×
1401
        ((javaSynchronizedStatement property: #expression) comment:
×
1402
                 'The instance on which the statement block is synchronized')
×
1403
        <>-
×
1404
                ((tExpression property: #javaSynchronizedStatementOwner) comment:
×
1405
                         'The owner of the synchronized block (if possible)').
×
1406
        ((javaSynchronizedStatement property: #block) comment:
×
1407
                 'The block that is synchronized')
×
1408
        <>-
×
1409
                ((tStatementBlock property: #javaSynchronizedStatementOwner)
×
1410
                         comment: 'The owner of the synchronized block (if possible)').
×
1411

×
1412
        ((javaMethodEntity property: #type) comment: 'The type of the method')
×
1413
        <>-
×
1414
                ((javaVariableExpression property: #javaMethodTypeOwner) comment:
×
1415
                         'The variable expression owner (if possible)').
×
1416
        ((javaMethodEntity property: #throws) comment:
×
1417
                 'The list of throws exception')
×
1418
        <>-*
×
1419
                ((javaClassTypeExpression property: #javaMethodThrowsOwner)
×
1420
                         comment: 'The method that throws me').
×
1421
        ((javaMethodEntity property: #typeParameters) comment:
×
1422
                 'The list of type parameter')
×
1423
        <>-*
×
1424
                ((javaTypeParameter property: #javaMethodTypeParameterOwner)
×
1425
                         comment: 'The method that use me').
×
1426

×
1427
        ((javaTypeParameter property: #types) comment:
×
1428
                 'The list of types I extend or implements')
×
1429
        <>-*
×
1430
                ((javaClassTypeExpression property: #typeParameterOwner) comment:
×
1431
                         'The type parameter I specify').
×
1432

×
1433
        ((javaParameterExpression property: #type) comment:
×
1434
                 'The type of the parameter')
×
1435
        <>-
×
1436
                ((javaVariableExpression property: #javaParameterTypeOwner)
×
1437
                         comment: 'The variable expression owner (if possible)').
×
1438
        ((javaParameterExpression property: #variable) comment:
×
1439
                 'parameter variable')
×
1440
        <>- ((javaVariableExpression property: #javaParameterVariableOwner)
×
1441
                         comment: 'The variable expression owner (if possible)').
×
1442

×
1443
        ((javaVarDeclStatement property: #type) comment:
×
1444
                 'The type of the declared variables')
×
1445
        <>-
×
1446
                ((javaVariableExpression property: #javaVarDeclTypeOwner) comment:
×
1447
                         'The variable expression owner (if possible)').
×
1448

×
1449
        ((javaArrayTypeExpression property: #baseType) comment:
×
1450
                 'The type of the array')
×
1451
        <>- ((tExpression property: #javaArrayTypeNameOwner) comment:
×
1452
                         'The variable expression owner (if possible)').
×
1453

×
1454
        ((javaClassTypeExpression property: #typeName) comment:
×
1455
                 'The name of the type')
×
1456
        <>-
×
1457
                ((javaTypeName property: #javaTypeNameTypeExpressionOwner) comment:
×
1458
                         'The type expression that owns me').
×
1459

×
1460
        ((javaQualifiedTypeName property: #namespace) comment:
×
1461
                 'The namespace of the name')
×
1462
        <>- ((javaTypeName property: #javaTypeNameQualify) comment:
×
1463
                         'the name I qualify').
×
1464

×
1465
        ((javaAssertStatement property: #condition) comment:
×
1466
                 'The condition of the statement')
×
1467
        <>- ((tExpression property: #assertConditionOwner) comment:
×
1468
                         'I represent a condition for my owner').
×
1469
        ((javaAssertStatement property: #message) comment:
×
1470
                 'The error message that is raised if the condition is false')
×
1471
        <>-
×
1472
                ((tExpression property: #javaStringAssertStatementOwner) comment:
×
1473
                         'The assertion which I describe').
×
1474

×
1475
        ((javaClassDeclaration property: #superclass) comment:
×
1476
                 'My superclass')
×
1477
        <>-
×
1478
                ((javaTypeExpression property: #javaClassDeclarationSuperclassOwner)
×
1479
                         comment: 'The class that extends me').
×
1480
        ((javaClassDeclaration property: #interfaces) comment:
×
1481
                 'The interfaces I implement')
×
1482
        <>-*
×
1483
                ((javaTypeExpression property: #javaClassDeclarationInterfaceOwner)
×
1484
                         comment: 'The class that implements me').
×
1485

×
1486
        ((javaEnumDeclaration property: #interfaces) comment:
×
1487
                 'The interfaces I implement')
×
1488
        <>-*
×
1489
                ((javaTypeExpression property: #javaEnumDeclarationInterfaceOwner)
×
1490
                         comment: 'The enum that implements me').
×
1491

×
1492
        ((javaEnumDeclaration property: #constants) comment:
×
1493
                 'The constants I define')
×
1494
        <>-* ((javaEnumConstant property: #parentEnum) comment:
×
1495
                         'The enum type that contains me').
×
1496

×
1497
        ((javaInterfaceDeclaration property: #interfaces) comment:
×
1498
                 'My super interfaces')
×
1499
        <>-*
×
1500
                ((javaTypeExpression property:
×
1501
                          #javaInterfaceDeclarationInterfaceOwner) comment:
×
1502
                         'The interface that extends me').
×
1503

×
1504
        ((tWithDeclarations property: #declarations) comment:
×
1505
                 'The elements I declare')
×
1506
        <>-* ((tDeclaration property: #javaDeclarationOwner) comment:
×
1507
                         'The element that declares me').
×
1508

×
1509
        ((tWithModifiers property: #modifiers) comment: 'My modifiers')
×
1510
        <>-* ((tModifier property: #javaModifierOwner) comment:
×
1511
                         'The owner of the modifier').
×
1512

×
1513
        ((tWithAssignable property: #variable) comment: 'My variable')
×
1514
        <>- ((tAssignable property: #javaVariableAssignmentOwner) comment:
×
1515
                         'The owner of the assignment').
×
1516

×
1517
        ((tWithReceiver property: #receiver) comment: 'My receiver')
×
1518
        <>- ((tReceiver property: #receiverOwner) comment:
×
1519
                         'The owner of the receiver').
×
1520

×
1521
        ((qualifiedName property: #namespace) comment:
×
1522
                 'The namespace that qualifies me')
×
1523
        <>- ((qualifiedName property: #namespaceOwner) comment:
×
1524
                         'The namespace I qualify').
×
1525

×
1526
        ((tWithQualifiedName property: #qualifiedName) comment:
×
1527
                 'The name that qualifies me')
×
1528
        <>- ((qualifiedName property: #qualifiedNameOwner) comment:
×
1529
                         'The owner of the qualified name').
×
1530

×
1531
        "a type pattern declares a single variable"
×
1532
        ((javaTypePattern property: #variable) comment:
×
1533
                 'The local variable declared by this type pattern')
×
1534
        <>-
×
1535
                ((javaVariableExpression property: #javaTypePatternVariableOwner)
×
1536
                         comment: 'The javaTypePattern variable owner (if possible)').
×
1537
        ((javaTypePattern property: #type) comment:
×
1538
                 'The type of the declared variable')
×
1539
        <>-
×
1540
                ((javaTypeExpression property: #javaTypePatternTypeOwner) comment:
×
1541
                         'The javaTypePattern type owner (if possible)').
×
1542

×
1543
        "do not use TDeclaration and TWithDeclaration on purpose: what a compilation unit can contain is strict"
×
1544
        ((compilationUnit property: #packageDeclaration) comment:
×
1545
                 'My package declaration, or nil for the default package')
×
1546
        <>- ((packageDeclaration property: #compilationUnit) comment:
×
1547
                         'The compilation unit that owns me').
×
1548
        ((compilationUnit property: #importDeclarations) comment:
×
1549
                 'My import declarations')
×
1550
        <>-* ((importDeclaration property: #compilationUnit) comment:
×
1551
                         'The compilation unit that owns me').
×
1552
        ((compilationUnit property: #classDeclarations) comment:
×
1553
                 'My class declarations')
×
1554
        <>-* ((javaClassDeclaration property: #compilationUnit) comment:
×
1555
                         'The compilation unit that owns me').
×
1556
        ((compilationUnit property: #interfaceDeclarations) comment:
×
1557
                 'My interface declarations')
×
1558
        <>-* ((javaInterfaceDeclaration property: #compilationUnit) comment:
×
1559
                         'The compilation unit that owns me').
×
1560
        ((compilationUnit property: #enumDeclarations) comment:
×
1561
                 'My enum declaration')
×
1562
        <>-* ((javaEnumDeclaration property: #compilationUnit) comment:
×
1563
                         'The compilation unit that owns me')
×
1564
]
×
1565

1566
{ #category : 'definition' }
1567
FASTJavaMetamodelGenerator >> defineTraits [
×
1568
        super defineTraits. 
×
1569

×
1570
        tDeclaration := self newTraitNamed: #TDeclaration comment: 'I am a declaration in java'.
×
1571
        tWithDeclarations := self newTraitNamed: #TWithDeclarations comment: 'I have declarations'.
×
1572
        
×
1573
        tModifier := self newTraitNamed: #TModifier comment: self commentForJavaTModifier. 
×
1574
        tWithModifiers := self newTraitNamed: #TWithModifiers comment: 'I have modifiers'.
×
1575
        
×
1576
        tAssignable := self newTraitNamed: #TAssignable comment: self commentForJavaTAssignable. 
×
1577
        tWithAssignable := self newTraitNamed: #TWithAssignable comment: 'I have an assignable'.
×
1578
        
×
1579
        tReceiver := self newTraitNamed: #TReceiver comment: 'I receive a message from someone'.
×
1580
        tWithReceiver := self newTraitNamed: #TWithReceiver comment: 'I can send a message to someone'.
×
1581
        
×
1582
        tWithQualifiedName := self newTraitNamed: #TWithQualifiedName comment: 'I have a qualified name.'.
×
1583

×
1584
        tAnnotationElement := self newTraitNamed: #TAnnotationElement comment: 'I can be used as an annotation "argument" eg: @SuppressWarnings(value="unchecked")
×
1585
        Acceptable annotation elements are: literal, Enum constant, Annotation, Class, an array of the preceding (out of laziness we use ArrayInitializer which is too permissive)'.
×
1586
        
×
1587
        "From FAST"
×
1588
        tEntity := self remoteTrait: #TEntity withPrefix: #FAST.
×
1589
        tComment := self remoteTrait: #TComment withPrefix: #FAST.
×
1590
        tWithComments := self remoteTrait: #TWithComments withPrefix: #FAST.
×
1591
        tExpression := self remoteTrait: #TExpression withPrefix: #FAST. 
×
1592
        tStatement := self remoteTrait: #TStatement withPrefix: #FAST.
×
1593
        tCharacterLiteral := self remoteTrait: #TCharacterLiteral withPrefix: #FAST.
×
1594
        tLiteral := self remoteTrait: #TLiteral withPrefix: #FAST.
×
1595
        tVariableExpression := self remoteTrait: #TVariableExpression withPrefix: #FAST.
×
1596
        tNamedBehaviouralEntity := self remoteTrait: #TNamedBehaviouralEntity withPrefix: #FAST.
×
1597
        tNullPointerLiteral := self remoteTrait: #TNullPointerLiteral withPrefix: #FAST.
×
1598
        tStringLiteral := self remoteTrait: #TStringLiteral withPrefix: #FAST.
×
1599
        tScopableEntity := self remoteTrait: #TScopableEntity withPrefix: #FAST.
×
1600
        tVariableEntity := self remoteTrait: #TVariableEntity withPrefix: #FAST.
×
1601
        tStatementBlock := self remoteTrait: #TStatementBlock withPrefix: #FAST.
×
1602
        tExpressionStatement := self remoteTrait: #TExpressionStatement withPrefix: #FAST.
×
1603
        tWithParameters := self remoteTrait: #TWithParameters withPrefix: #FAST.
×
1604
        tNamedEntity := self remoteTrait: #TNamedEntity withPrefix: #FAST.
×
1605
        tReturnStatement := self remoteTrait: #TReturnStatement withPrefix: #FAST.
×
1606
        tBooleanLiteral := self remoteTrait: #TBooleanLiteral withPrefix: #FAST.
×
1607
        tInvocation := self remoteTrait: #TInvocation withPrefix: #FAST
×
1608
]
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc