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

moosetechnology / FAST-JAVA / 14759544315

30 Apr 2025 04:31PM UTC coverage: 65.738%. First build
14759544315

push

github

anquetil
Creating new VarTypeExpression ('var' type inference)

0 of 2 new or added lines in 1 file covered. (0.0%)

8141 of 12384 relevant lines covered (65.74%)

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
                'tConditionalStatement',
133
                'tLoopStatement',
134
                'javaVarTypeExpression'
135
        ],
136
        #category : 'FAST-Java-Model-Generator',
137
        #package : 'FAST-Java-Model-Generator'
138
}
139

140
{ #category : 'accessing' }
141
FASTJavaMetamodelGenerator class >> packageName [
×
142

×
143
        ^ #'FAST-Java-Model'
×
144
]
×
145

146
{ #category : 'accessing' }
147
FASTJavaMetamodelGenerator class >> prefix [
×
148
        ^ #FASTJava
×
149
]
×
150

151
{ #category : 'accessing' }
152
FASTJavaMetamodelGenerator class >> submetamodels [
×
153
        ^ { FASTMetamodelGenerator }
×
154
]
×
155

156
{ #category : 'comments' }
157
FASTJavaMetamodelGenerator >> commentForAssertStatement [
×
158
        ^ 'I represent an assert statement
×
159

×
160
example:
×
161

×
162
void method (){
×
163
        assert condition1 || condition2 : "error message"
×
164
}
×
165
'
×
166
]
×
167

168
{ #category : 'comments' }
169
FASTJavaMetamodelGenerator >> commentForJavaAnnotation [
×
170
        ^ 'I reprensent a Java Annotation
×
171

×
172
example:
×
173

×
174
@Override'
×
175
]
×
176

177
{ #category : 'comments' }
178
FASTJavaMetamodelGenerator >> commentForJavaArrayAccess [
×
179
        ^ 'I represent a java array access
×
180
        
×
181
ex:
×
182

×
183
liste[i]'
×
184
]
×
185

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

×
193

×
194
I am : {"hello", "world"} 
×
195
My initializers are 
×
196
"hello" and "world"
×
197
 '
×
198
]
×
199

×
200
{ #category : 'comments' }
×
201
FASTJavaMetamodelGenerator >> commentForJavaAssignmentExpression [
×
202
        ^ 'An assignment expression mode.
×
203

×
204
Contains a referances to an assignee assignee and the expression that''s being assigned.'
×
205
]
×
206

×
207
{ #category : 'comments' }
×
208
FASTJavaMetamodelGenerator >> commentForJavaBooleanLiteral [
×
209
        ^ 'I represent a boolean literal node.'
×
210
]
×
211

×
212
{ #category : 'comments' }
×
213
FASTJavaMetamodelGenerator >> commentForJavaBreakStatement [
×
214
        ^ 'A node representing break statement in java'
×
215
]
×
216

×
217
{ #category : 'comments' }
×
218
FASTJavaMetamodelGenerator >> commentForJavaCaseStatement [
×
219
        ^ 'case part of switch statement'
×
220
]
×
221

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

×
232
{ #category : 'comments' }
×
233
FASTJavaMetamodelGenerator >> commentForJavaClassDeclaration [
×
234
        ^ 'I represent a class declaration
×
235
example
×
236

×
237
public class ClassName extends SomeClass implements OneClass, TwoClass {
×
238

×
239
        int oneDeclaration;
×
240
        
×
241
        void methodDeclaration(){
×
242
        }
×
243
}'
×
244
]
×
245

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

×
254
class Enclosing {
×
255
    void method(Enclosing other) {
×
256
        // ...
×
257
    }
×
258

×
259
    void otherMethod() {
×
260
        new Runnable() {
×
261
            public void run() {
×
262
                method(this);
×
263

×
264

×
265
                                                                --> Does not compile. ''this'' is a Runnable!
×
266

×
267

×
268

×
269
                method(Enclosing.this);
×
270

×
271
                                                                --> Compiles fine.
×
272

×
273

×
274
            }
×
275
        }.run();
×
276
    }
×
277
}
×
278
'
×
279
]
×
280

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

×
286
{ #category : 'comments' }
×
287
FASTJavaMetamodelGenerator >> commentForJavaConditionalStatement [
×
288
        ^ 'I represent a Java conditionnal Statement
×
289

×
290
ex:
×
291

×
292
(h.get() == 2) ? thenPart : elsePart'
×
293
]
×
294

×
295
{ #category : 'comments' }
×
296
FASTJavaMetamodelGenerator >> commentForJavaContinueStatement [
×
297
        ^ 'A node representing continue statement in java'
×
298
]
×
299

×
300
{ #category : 'comments' }
×
301
FASTJavaMetamodelGenerator >> commentForJavaDefaultCaseStatement [
×
302
        ^ 'I represent a default case
×
303
        
×
304
ex.:
×
305

×
306
default:'
×
307
]
×
308

×
309
{ #category : 'comments' }
×
310
FASTJavaMetamodelGenerator >> commentForJavaDoWhileStatement [
×
311
        ^ 'A node of a do-while statement.
×
312

×
313
eg.
×
314
do {
×
315
...
×
316
} while(...);'
×
317
]
×
318

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

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

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

×
351
{ #category : 'comments' }
×
352
FASTJavaMetamodelGenerator >> commentForJavaEnumDeclaration [
×
353
        ^ 'I represent an enum declaration
×
354
example
×
355

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

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

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

×
382
{ #category : 'comments' }
×
383
FASTJavaMetamodelGenerator >> commentForJavaForEachStatement [
×
384
        ^ 'A node of a for loop statement.
×
385

×
386
eg.
×
387
for(Patate p : list) {
×
388
...
×
389
}'
×
390
]
×
391

×
392
{ #category : 'comments' }
×
393
FASTJavaMetamodelGenerator >> commentForJavaForStatement [
×
394
        ^ 'A node of a for loop statement.
×
395

×
396
eg.
×
397
for(_;_;_) {
×
398
...
×
399
}'
×
400
]
×
401

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

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

×
411
eg.
×
412
if(...) {
×
413
...
×
414
} else {
×
415
...
×
416
}'
×
417
]
×
418

×
419
{ #category : 'comments' }
×
420
FASTJavaMetamodelGenerator >> commentForJavaInfixOperation [
×
421
        ^ 'Binary java operations in  format: <expr> <operator> <expr>
×
422

×
423
ex:
×
424
        a + b
×
425
        3 == 6
×
426
        a = 6'
×
427
]
×
428

×
429
{ #category : 'comments' }
×
430
FASTJavaMetamodelGenerator >> commentForJavaInitializer [
×
431
        ^ 'I represent a Java initializer
×
432
        
×
433
ex.:
×
434

×
435
new Button(){
×
436

×
437
{ something }
×
438

×
439
}
×
440
'
×
441
]
×
442

×
443
{ #category : 'comments' }
×
444
FASTJavaMetamodelGenerator >> commentForJavaIntegerLiteral [
×
445
        ^ 'I represent an integer literal node.'
×
446
]
×
447

×
448
{ #category : 'comments' }
×
449
FASTJavaMetamodelGenerator >> commentForJavaInterfaceDeclaration [
×
450
        ^ 'I represent an interface declaration
×
451
example
×
452

×
453
```java
×
454
public interface MyInterface {
×
455

×
456
    public static final String CODE = "SEME";
×
457

×
458
}
×
459
```
×
460
'
×
461
]
×
462

×
463
{ #category : 'comments' }
×
464
FASTJavaMetamodelGenerator >> commentForJavaLabeledCaseStatement [
×
465
        ^ 'I represent a Labeled case
×
466
        
×
467
ex.:
×
468

×
469
case LABEL:'
×
470
]
×
471

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

×
482
{ #category : 'comments' }
×
483
FASTJavaMetamodelGenerator >> commentForJavaMethodEntity [
×
484
        ^ 'Represents a Java method'
×
485
]
×
486

×
487
{ #category : 'comments' }
×
488
FASTJavaMetamodelGenerator >> commentForJavaMethodInvocation [
×
489
        ^ 'A node representing method invocation'
×
490
]
×
491

×
492
{ #category : 'comments' }
×
493
FASTJavaMetamodelGenerator >> commentForJavaModifier [
×
494
        ^ 'I am a Java modifier
×
495

×
496
example: 
×
497
for classes: 
×
498

×
499
- public
×
500
- default
×
501
- final
×
502
- abstract
×
503

×
504
for methods:
×
505

×
506
- public
×
507
- private
×
508
- default
×
509
- protected
×
510
- final
×
511
- static
×
512
- abstract
×
513
- transient
×
514
- synchronized
×
515
- volatile
×
516

×
517

×
518
'
×
519
]
×
520

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

×
526
new String()["10px", "Hello world"]'
×
527
]
×
528

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

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

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

×
551
ex.
×
552

×
553
new Patate()'
×
554
]
×
555

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

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

×
567
hello(MyClass.this)'
×
568
]
×
569

×
570
{ #category : 'comments' }
×
571
FASTJavaMetamodelGenerator >> commentForJavaQualifiedTypeName [
×
572
        ^ 'I represent a qualified name for a type
×
573

×
574
example:
×
575

×
576
new Canard.Poulet(){
×
577

×
578
}
×
579

×
580
"Canard.Poulet" is the qualified name
×
581

×
582
"Poulet" is the main name
×
583

×
584
"Canard" is the namespace of the main name 
×
585
'
×
586
]
×
587

588
{ #category : 'comments' }
589
FASTJavaMetamodelGenerator >> commentForJavaStringLiteral [
×
590
        ^ 'I represent a string literal node.'
×
591
]
×
592

593
{ #category : 'comments' }
594
FASTJavaMetamodelGenerator >> commentForJavaSwitchStatement [
×
595
        ^ 'A node representing switch statement
×
596

×
597
eg.
×
598
switch (_) {
×
599
...
×
600
}'
×
601
]
×
602

603
{ #category : 'comments' }
604
FASTJavaMetamodelGenerator >> commentForJavaTAssignable [
×
605
        ^ 'You can assign something to me
×
606
example:
×
607

×
608
this.hello = "hello"'
×
609
]
×
610

611
{ #category : 'comments' }
612
FASTJavaMetamodelGenerator >> commentForJavaTModifier [
×
613
        ^ 'I am a modifier in java
×
614
example:
×
615

×
616
public, proctected, private'
×
617
]
×
618

619
{ #category : 'comments' }
620
FASTJavaMetamodelGenerator >> commentForJavaThis [
×
621
        ^ 'A FASTJavaThis corresponds to ''this'' in Java'
×
622
]
×
623

624
{ #category : 'comments' }
625
FASTJavaMetamodelGenerator >> commentForJavaThrowStatement [
×
626
        ^ 'I represent a java throw statement
×
627
        
×
628
ex:
×
629

×
630
throw new Hello();'
×
631
]
×
632

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

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

×
648
'
×
649
]
×
650

651
{ #category : 'comments' }
652
FASTJavaMetamodelGenerator >> commentForJavaTypePattern [
×
653

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

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

×
672
++i
×
673
i++
×
674
--i
×
675
i--
×
676
!b
×
677
+i
×
678
-i
×
679

×
680
see: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html'
×
681
]
×
682

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

×
688
eg.
×
689

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

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

×
699
eg.
×
700

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

705
{ #category : 'comments' }
706
FASTJavaMetamodelGenerator >> commentForJavaWhileStatement [
×
707
        ^ 'A node of a while statement.
×
708

×
709
eg.
×
710
while(...) {
×
711
...
×
712
}'
×
713
]
×
714

715
{ #category : 'definition' }
716
FASTJavaMetamodelGenerator >> defineClasses [
×
717
        super defineClasses.
×
718

×
719
        javaEntity  := self newClassNamed: #Entity.
×
720

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

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

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

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

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

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

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

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

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

893
{ #category : 'definition' }
894
FASTJavaMetamodelGenerator >> defineHierarchy [
×
895
        "define class hierarchy"
×
896

×
897
        super defineHierarchy.
×
898

×
899
        javaEntity --|> tEntity.
×
900
        javaEntity --|> tWithComments.
×
901

×
902
        javaComment --|> tComment.
×
903

×
904
        javaAssignmentExpression --|> tExpression.
×
905
        javaAssignmentExpression --|> tAnnotationElement.
×
906
        javaAssignmentExpression --|> tReceiver.
×
907
        javaAssignmentExpression --|> tWithAssignable.
×
908

×
909
        javaFieldAccess --|> tExpression.
×
910
        javaFieldAccess --|> tAssignable.
×
911
        javaFieldAccess --|> tWithReceiver.
×
912
        javaFieldAccess --|> tReceiver.
×
913

×
914
        javaInfixOperation --|> tExpression.
×
915
        javaInfixOperation --|> tReceiver.
×
916
        javaInfixOperation --|> tAnnotationElement.
×
917

×
918
        javaBreakStatement --|> tStatement.
×
919
        javaCaseStatement --|> tStatementBlock.
×
920
        javaContinueStatement --|> tStatement.
×
921
        javaDoWhileStatement --|> tStatement.
×
922
        javaDoWhileStatement --|> tConditionalStatement.
×
923
        javaDoWhileStatement --|> tLoopStatement.
×
924
        javaForStatement --|> tStatement.
×
925
        javaForStatement --|> tConditionalStatement.
×
926
        javaForStatement --|> tLoopStatement.
×
927

×
928
        javaIdentifier --|> javaVariableExpression.
×
929
        javaIdentifier --|> tReceiver.
×
930

×
931
        javaIfStatement --|> tStatement.
×
932
        javaIfStatement --|> tConditionalStatement.
×
933

×
934
        javaArrayAnnotationElement --|> tAnnotationElement.
×
935
        javaArrayAnnotationElement --|> tExpression. "because annotationElement=value are modeled as assignment expression"
×
936

×
937
        "javaLiteral  --|> tLiteral. // we use the specific tLiteral for each case"
×
938
        javaLiteral --|> tReceiver.
×
939
        javaLiteral --|> tAnnotationElement.
×
940

×
941
        javaNullLiteral --|> tNullPointerLiteral.
×
942
        javaNullLiteral --|> javaLiteral.
×
943
        javaCharacterLiteral --|> tCharacterLiteral.
×
944
        javaCharacterLiteral --|> javaLiteral.
×
945
        javaStringLiteral --|> tStringLiteral.
×
946
        javaStringLiteral --|> javaLiteral.
×
947
        javaIntegerLiteral --|> tLiteral.
×
948
        javaIntegerLiteral --|> javaLiteral.
×
949
        javaFloatLiteral --|> tLiteral.
×
950
        javaFloatLiteral --|> javaLiteral.
×
951
        javaBooleanLiteral --|> tBooleanLiteral.
×
952
        javaBooleanLiteral --|> javaLiteral.
×
953
        javaLongLiteral --|> tLiteral.
×
954
        javaLongLiteral --|> javaLiteral.
×
955
        javaDoubleLiteral --|> tLiteral.
×
956
        javaDoubleLiteral --|> javaLiteral.
×
957

×
958
        javaMethodEntity --|> tNamedBehaviouralEntity.
×
959
        javaMethodEntity --|> #THasImmediateSource.
×
960
        javaMethodEntity --|> tDeclaration.
×
961
        javaMethodEntity --|> tWithModifiers.
×
962

×
963
        javaClassDeclaration --|> tStatement.
×
964
        javaClassDeclaration --|> tDeclaration.
×
965
        javaClassDeclaration --|> tWithDeclarations.
×
966
        javaClassDeclaration --|> tWithModifiers.
×
967
        javaClassDeclaration --|> tNamedEntity.
×
968
        javaClassDeclaration --|> #THasImmediateSource.
×
969
        javaClassDeclaration withPrecedenceOf: #THasImmediateSource.
×
970

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

×
979
        javaEnumConstant --|> javaVariableExpression.
×
980

×
981
        javaInterfaceDeclaration --|> tStatement.
×
982
        javaInterfaceDeclaration --|> tDeclaration.
×
983
        javaInterfaceDeclaration --|> tWithDeclarations.
×
984
        javaInterfaceDeclaration --|> tWithModifiers.
×
985
        javaInterfaceDeclaration --|> tNamedEntity.
×
986
        javaInterfaceDeclaration --|> #THasImmediateSource.
×
987
        javaInterfaceDeclaration withPrecedenceOf: #THasImmediateSource.
×
988

×
989
        javaMethodInvocation --|> tInvocation.
×
990
        javaMethodInvocation --|> tWithReceiver.
×
991
        javaMethodInvocation --|> tReceiver.
×
992

×
993
        javaSwitchStatement --|> tStatement.
×
994
        javaThis --|> javaVariableExpression.
×
995

×
996
        javaVarDeclStatement --|> tStatement.
×
997
        javaVarDeclStatement --|> tDeclaration.
×
998
        javaVarDeclStatement --|> tScopableEntity.
×
999
        javaVarDeclStatement --|> tWithModifiers.
×
1000

×
1001
        javaVariableDeclarator --|> tEntity.
×
1002
        javaWhileStatement --|> tStatement.
×
1003
        javaWhileStatement --|> tConditionalStatement.
×
1004
        javaWhileStatement --|> tLoopStatement.
×
1005
        javaMethodInvocation --|> tNamedEntity.
×
1006
        javaCastExpression --|> tExpression.
×
1007
        javaCastExpression --|> tReceiver.
×
1008

×
1009
        javaClassProperty --|> javaVariableExpression.
×
1010
        javaClassProperty --|> tReceiver.
×
1011
        javaClassProperty --|> tAnnotationElement.
×
1012

×
1013
        javaTryCatchStatement --|> tStatement.
×
1014
        javaForEachStatement --|> tStatement.
×
1015
        javaForEachStatement --|> tLoopStatement.
×
1016
        javaUnaryExpression --|> tExpression.
×
1017

×
1018
        javaNewExpression --|> tExpression.
×
1019
        javaNewExpression --|> #TWithArguments.
×
1020
        javaNewExpression --|> tReceiver.
×
1021
        javaNewExpression --|> tWithReceiver.
×
1022

×
1023
        javaNewClassExpression --|> javaNewExpression.
×
1024
        javaNewClassExpression --|> tWithDeclarations.
×
1025
        javaNewClassExpression --|> #TWithArguments.
×
1026

×
1027
        javaNewArray --|> javaNewExpression.
×
1028
        javaEmptyDimExpression --|> tExpression.
×
1029
        javaConditionalExpression --|> tExpression.
×
1030

×
1031
        javaArrayAccess --|> tExpression.
×
1032
        javaArrayAccess --|> tAssignable.
×
1033
        javaArrayAccess --|> tReceiver.
×
1034

×
1035
        javaVariableExpression --|> tVariableExpression.
×
1036
        javaVariableExpression --|> tAssignable.
×
1037
        javaVariableExpression --|> tReceiver.
×
1038

×
1039
        javaThrowStatement --|> tStatement.
×
1040
        javaLabeledCaseStatement --|> javaCaseStatement.
×
1041
        javaDefaultCaseStatement --|> javaCaseStatement.
×
1042
        javaEmptyMethodDeclaration --|> javaMethodEntity.
×
1043

×
1044
        javaArrayInitializer --|> tExpression.
×
1045
        javaArrayInitializer --|> tAnnotationElement.
×
1046

×
1047
        javaInitializer --|> tScopableEntity.
×
1048
        javaInitializer --|> #THasImmediateSource.
×
1049
        javaInitializer --|> tDeclaration.
×
1050

×
1051
        javaOuterThis --|> tExpression.
×
1052
        javaOuterThis --|> tReceiver.
×
1053

×
1054
        javaCatchPartStatement --|> tStatement.
×
1055

×
1056
        javaLambdaExpression --|> tExpression.
×
1057
        javaLambdaExpression --|> tWithParameters.
×
1058

×
1059
        javaMethodReference --|> tExpression.
×
1060
        javaMethodReference --|> tNamedEntity.
×
1061

×
1062
        javaSynchronizedStatement --|> tStatement.
×
1063

×
1064
        "types name"
×
1065
        javaTypeName --|> tNamedEntity.
×
1066
        javaTypeName --|> tExpression.
×
1067
        javaTypeName --|> tAnnotationElement.
×
1068
        javaQualifiedTypeName --|> javaTypeName.
×
1069

×
1070
        "types"
×
1071
        javaTypeExpression --|> javaVariableExpression.
×
1072
        javaArrayTypeExpression --|> javaTypeExpression.
×
1073
        javaPrimitiveTypeExpression --|> javaTypeExpression.
×
1074
        javaBooleanTypeExpression --|> javaPrimitiveTypeExpression.
×
1075
        javaByteTypeExpression --|> javaPrimitiveTypeExpression.
×
1076
        javaCharTypeExpression --|> javaPrimitiveTypeExpression.
×
1077
        javaDoubleTypeExpression --|> javaPrimitiveTypeExpression.
×
1078
        javaFloatTypeExpression --|> javaPrimitiveTypeExpression.
×
1079
        javaIntTypeExpression --|> javaPrimitiveTypeExpression.
×
1080
        javaLongTypeExpression --|> javaPrimitiveTypeExpression.
×
1081
        javaShortTypeExpression --|> javaPrimitiveTypeExpression.
×
1082
        javaVoidTypeExpression --|> javaPrimitiveTypeExpression.
×
1083

×
1084
        javaClassTypeExpression --|> javaTypeExpression.
×
1085
        javaClassTypeExpression --|> #TWithArguments.
×
1086

×
1087
        javaTypeParameter --|> tExpression.
×
1088
        javaTypeParameter --|> tNamedEntity.
×
1089

×
1090
        javaModifier --|> tModifier.
×
1091
        javaModifier --|> tExpression.
×
1092

×
1093
        javaAnnotationExpression --|> tNamedEntity.
×
1094
        javaAnnotationExpression --|> tModifier.
×
1095
        javaAnnotationExpression --|> tAnnotationElement.
×
1096

×
1097
        javaParameterExpression --|> tExpression.
×
1098
        javaParameterExpression --|> tVariableEntity.
×
1099
        javaConditionalExpression --|> tReceiver.
×
1100

×
1101
        javaStatement --|> tStatement.
×
1102
        javaStatementBlock --|> tStatementBlock.
×
1103
        javaReturnStatement --|> tReturnStatement.
×
1104
        javaAssertStatement --|> tStatement.
×
1105
        javaExpressionStatement --|> tExpressionStatement.
×
1106
        javaLabeledStatement --|> tStatement.
×
1107

×
1108
        qualifiedName --|> tNamedEntity.
×
1109
        qualifiedName --|> tEntity.
×
1110
        qualifiedName --|> tAssignable.
×
1111

×
1112
        javaTypePattern --|> tExpression.
×
1113

×
1114
        compilationUnit --|> tEntity.
×
1115

×
1116
        "package and import do not use TDeclaration on purpose: they are only contained in a compilation unit"
×
1117
        packageDeclaration --|> tEntity.
×
1118
        packageDeclaration --|> tWithQualifiedName.
×
1119

×
1120
        importDeclaration --|> tEntity.
×
1121
        importDeclaration --|> tWithQualifiedName
×
1122
]
×
1123

1124
{ #category : 'definition' }
1125
FASTJavaMetamodelGenerator >> defineProperties [
×
1126

×
1127
        super defineProperties.
×
1128

×
1129
        (javaAssignmentExpression property: #operator type: #String)
×
1130
                comment: 'The assignment operator: =, +=, /=, ...'.
×
1131

×
1132
        (javaFieldAccess property: #fieldName type: #String) comment:
×
1133
                'Name of accessed field'.
×
1134
        (javaInfixOperation property: #operator type: #String) comment:
×
1135
                'operator s symbol'.
×
1136
        (javaClassProperty property: #fieldName type: #String) comment:
×
1137
                'Name of accessed field'.
×
1138

×
1139
        (javaUnaryExpression property: #operator type: #String) comment:
×
1140
                'The operator string to apply to the expression'.
×
1141
        (javaUnaryExpression
×
1142
                 property: #isPrefixedUnaryExpression
×
1143
                 type: #Boolean) comment:
×
1144
                'True if the expression is prefixed (ex. ++i) else false'.
×
1145

×
1146
        (javaModifier property: #token type: #String) comment:
×
1147
                'The modifier value'.
×
1148

×
1149
        (javaLabeledStatement property: #label type: #String) comment:
×
1150
                'The label of the labeled statement'.
×
1151

×
1152
        (importDeclaration
×
1153
                 property: #isStatic
×
1154
                 type: #Boolean
×
1155
                 defaultValue: false) comment: 'True if importing static members'.
×
1156
        (importDeclaration
×
1157
                 property: #isOnDemand
×
1158
                 type: #Boolean
×
1159
                 defaultValue: false) comment:
×
1160
                'Whether this import is on-demand (wildcard) or single-type'.
×
1161

×
1162
        (javaInitializer
×
1163
                 property: #isStatic
×
1164
                 type: #Boolean
×
1165
                 defaultValue: false) comment: 'Whether this initializer is static'.
×
1166

×
1167
        (javaParameterExpression
×
1168
                 property: #hasVariableArguments
×
1169
                 type: #Boolean
×
1170
                 defaultValue: false) comment:
×
1171
                'Whether this parameter accepts a variable number of arguments (varargs), e.g. asList(T... a)'
×
1172
]
×
1173

1174
{ #category : 'definition' }
1175
FASTJavaMetamodelGenerator >> defineRelations [
×
1176

×
1177
        super defineRelations.
×
1178

×
1179
        ((javaArrayInitializer property: #initializers) comment:
×
1180
                 'My initializers')
×
1181
        <>-* ((tExpression property: #javaArrayInitializers) comment:
×
1182
                         'The owner of the expression').
×
1183

×
1184
        ((javaAnnotationExpression property: #elements) comment:
×
1185
                 '"Arguments" of the annotation, eg. this @Author annotation has two annotation elements:
×
1186
        @Author(name="Benjamin Franklin", date="3/27/2003")')
×
1187
        <>-* ((tAnnotationElement property: #parentAnnotation) comment:
×
1188
                         'An "argument" of an annotation, eg. "unchecked" in the following annotation:
×
1189
        @SuppressWarnings(value="unchecked")').
×
1190

×
1191
        ((javaArrayAnnotationElement property: #values) comment:
×
1192
                 'Annotation elements in the Array')
×
1193
        <>-* ((tAnnotationElement property: #arrayOwner) comment:
×
1194
                         'The ArrayAnnotationElement I am an element of').
×
1195

×
1196
        ((javaVarDeclStatement property: #declarators) comment:
×
1197
                 'The declarators for the type')
×
1198
        <>-* ((javaVariableDeclarator property: #varDeclOwner) comment:
×
1199
                         'The owner of the declarator').
×
1200

×
1201
        ((javaSwitchStatement property: #cases) comment:
×
1202
                 'The cases of the switch statement')
×
1203
        <>-*
×
1204
                ((javaCaseStatement property: #javaCaseStatementSwitchOwner)
×
1205
                         comment: 'The switch owner').
×
1206

×
1207
        ((javaVariableDeclarator property: #expression) comment:
×
1208
                 'Expression to be assigned to the var during declaration')
×
1209
        <>- ((tExpression property: #javaVariableDeclaratorExpressionOwner)
×
1210
                         comment: 'The javaVariableDeclarator owner (if possible)').
×
1211
        ((javaVariableDeclarator property: #variable) comment:
×
1212
                 'The variable that is being declared')
×
1213
        <>- ((javaVariableExpression property: #javaVariableDeclaratorOwner)
×
1214
                         comment: 'The javaVariableDeclarator owner (if possible)').
×
1215

×
1216
        ((javaAssignmentExpression property: #expression) comment:
×
1217
                 'Expression to be assigned to the var during declaration')
×
1218
        <>- ((tExpression property: #javaAssignmentExpressionOwner) comment:
×
1219
                         'The javaAssignmentExpression owner (if possible)').
×
1220

×
1221
        ((javaCastExpression property: #expression) comment:
×
1222
                 'The expression to cast')
×
1223
        <>- ((tExpression property: #javaCastExpressionOwner) comment:
×
1224
                         'The javaCastExpression owner (if possible)').
×
1225
        ((javaCastExpression property: #type) comment:
×
1226
                 'The type into which the expression will be cast')
×
1227
        <>- ((javaVariableExpression property: #javaCastExpressionTypeOwner)
×
1228
                         comment: 'The javaCastExpression owner (if possible)').
×
1229

×
1230
        ((javaClassProperty property: #type) comment:
×
1231
                 'The type of the property')
×
1232
        <>-
×
1233
                ((javaVariableExpression property: #javaClassPropertyOwner)
×
1234
                         comment: 'The javaClassProperty owner (if possible)').
×
1235

×
1236
        ((javaUnaryExpression property: #expression) comment:
×
1237
                 'The affected expression')
×
1238
        <>- ((tExpression property: #javaUnaryExpressionOwner) comment:
×
1239
                         'The javaUnaryExpression owner (if possible)').
×
1240

×
1241
        ((javaNewExpression property: #type) comment: 'The type of the array')
×
1242
        <>-
×
1243
                ((javaVariableExpression property: #javaNewExpressionOwner)
×
1244
                         comment: 'The javaNewExpression owner (if possible)').
×
1245

×
1246
        ((javaArrayAccess property: #expression) comment:
×
1247
                 'The accessed index')
×
1248
        <>- ((tExpression property: #javaArrayAccessOwner) comment:
×
1249
                         'The javaArrayAccess owner (if possible)').
×
1250
        ((javaArrayAccess property: #array) comment: 'Name of accessed field')
×
1251
        <>- ((tExpression property: #javaArrayArrayAccessOwner) comment:
×
1252
                         'The javaArrayArrayAccess owner (if possible)').
×
1253

×
1254
        ((javaOuterThis property: #type) comment: 'The accessed type')
×
1255
        <>- ((javaVariableExpression property: #javaOuterThisOwner) comment:
×
1256
                         'The javaOuterThis owner (if possible)').
×
1257

×
1258
        ((javaThrowStatement property: #expression) comment:
×
1259
                 'The thrown element')
×
1260
        <>- ((tExpression property: #javaThrowStatementOwner) comment:
×
1261
                         'The javaThrowStatement owner (if possible)').
×
1262

×
1263
        ((javaLabeledCaseStatement property: #label) comment:
×
1264
                 'The label of the case statement')
×
1265
        <>- ((tExpression property: #javaLabeledCaseStatementOwner) comment:
×
1266
                         'The javaLabeledCaseStatement owner (if possible)').
×
1267

×
1268
        ((javaForEachStatement property: #list) comment:
×
1269
                 'The list that the for-each statement iterates over')
×
1270
        <>- ((tExpression property: #javaForEachStatementOwner) comment:
×
1271
                         'The javaForEachStatement owner (if possible)').
×
1272
        ((javaForEachStatement property: #fieldname) comment:
×
1273
                 'The identifier of the created local variable')
×
1274
        <>- ((javaIdentifier property: #javaForEachStatementFieldNameOwner)
×
1275
                         comment: 'The javaForEachStatement owner (if possible)').
×
1276
        ((javaForEachStatement property: #type) comment:
×
1277
                 'The type of the created local variable')
×
1278
        <>- ((javaTypeExpression property: #javaForEachStatementTypeOwner)
×
1279
                         comment: 'The javaForEachStatement owner (if possible)').
×
1280

×
1281
        ((javaTryCatchStatement property: #try) comment:
×
1282
                 'I represent the ''try'' part of the TryCatch Statement')
×
1283
        <>- ((javaStatementBlock property: #javaTryCatchOwner) comment:
×
1284
                         'The javaTryCatch owner (if possible)').
×
1285
        ((javaTryCatchStatement property: #catches) comment:
×
1286
                 'I contain all the catch statements')
×
1287
        <>-* ((javaCatchPartStatement property: #tryOwner) comment:
×
1288
                         'The try part that owns me').
×
1289
        ((javaTryCatchStatement property: #finally) comment:
×
1290
                 'I contain the ''finally'' part of the try/catch/finally')
×
1291
        <>- ((javaStatementBlock property: #javaTryFinallyOwner) comment:
×
1292
                         'The try/finally part that owns me').
×
1293

×
1294
        ((javaCatchPartStatement property: #body) comment:
×
1295
                 'The body of the catch part')
×
1296
        <>-
×
1297
                ((javaStatementBlock property: #javaCatchPartStatementOwner)
×
1298
                         comment: 'The javaCatchPartStatementOwner owner (if possible)').
×
1299
        ((javaTryCatchStatement property: #resources) comment:
×
1300
                 'I contain the resources in a try-with-resource statement')
×
1301
        <>-*
×
1302
                ((javaVarDeclStatement property: #javaTryResourceOwner) comment:
×
1303
                         'The try-with-resource that owns me').
×
1304

×
1305
        ((javaCatchPartStatement property: #catchedTypes) comment:
×
1306
                 'The types (exception) that are catched')
×
1307
        <>-* ((javaTypeExpression property: #catchOwner) comment:
×
1308
                         'The catch part that owns me (ie. where I am catched)').
×
1309
        ((javaCatchPartStatement property: #parameter) comment:
×
1310
                 'The parameter of the catch part')
×
1311
        <>- ((javaVariableExpression property: #javaCatchParameterOwnler)
×
1312
                         comment: 'The javaCatchPartParameterOwner owner (if possible)').
×
1313

×
1314
        ((javaIfStatement property: #elsePart) comment: 'else part')
×
1315
        <>- ((tStatement property: #ifElsePartOwner) comment:
×
1316
                         'The if owner (if possible)').
×
1317
        ((javaIfStatement property: #thenPart) comment: 'then part')
×
1318
        <>- ((tStatement property: #ifThenPartOwner) comment:
×
1319
                         'The if owner (if possible)').
×
1320

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

×
1332
        ((javaInfixOperation property: #leftOperand) comment: 'leftOperand')
×
1333
        <>-
×
1334
                ((tExpression property: #infixOperationLeftOperandOwner) comment:
×
1335
                         'The left operand (if possible)').
×
1336
        ((javaInfixOperation property: #rightOperand) comment: 'rightOperand')
×
1337
        <>-
×
1338
                ((tExpression property: #infixOperationRightOperandOwner) comment:
×
1339
                         'The right operand (if possible)').
×
1340

×
1341
        ((javaForStatement property: #incrementor) comment:
×
1342
                 'Expression evaluated at the end of each loop')
×
1343
        <>- ((tStatement property: #forIncrementorOwner) comment:
×
1344
                         'I am the incrementor of the for').
×
1345
        ((javaForStatement property: #initializer) comment:
×
1346
                 'Expression used at initialization phase of a for loop')
×
1347
        <>- ((tStatement property: #forIninitializerOwner) comment:
×
1348
                         'I am the initializer of the for').
×
1349

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

×
1355
        ((javaInitializer property: #statementBlock) comment:
×
1356
                 'Statements block of the behavioural entity')
×
1357
        <>- ((tStatementBlock property: #javaInitializerOwner) comment:
×
1358
                         'Behavioural entity containing the statement block').
×
1359

×
1360
        ((javaLabeledStatement property: #labeledStatement) comment:
×
1361
                 'Inner statement that is labeled')
×
1362
        <>- ((tStatement property: #labelStatementOwner) comment:
×
1363
                         'Label Statement entity containing this statement').
×
1364

×
1365
        ((javaNewArray property: #initializer) comment:
×
1366
                 'The initializer of the array')
×
1367
        <>- ((tExpression property: #javaNewArrayInitialOwner) comment:
×
1368
                         'I belong to a new array initialization').
×
1369

×
1370
        ((javaLambdaExpression property: #expression) comment:
×
1371
                 'Expression to be executed as part of the lambda.')
×
1372
        <>- ((tEntity property: #javaLambdaExpressionOwner) comment:
×
1373
                         'The expression owner (if possible)').
×
1374

×
1375
        ((javaMethodReference property: #receiver) comment:
×
1376
                 'The method of the reference')
×
1377
        <>- ((javaVariableExpression property: #javaMethodReferenceOwner)
×
1378
                         comment: 'The owner of the method reference (if possible)').
×
1379

×
1380
        ((javaSynchronizedStatement property: #expression) comment:
×
1381
                 'The instance on which the statement block is synchronized')
×
1382
        <>-
×
1383
                ((tExpression property: #javaSynchronizedStatementOwner) comment:
×
1384
                         'The owner of the synchronized block (if possible)').
×
1385
        ((javaSynchronizedStatement property: #block) comment:
×
1386
                 'The block that is synchronized')
×
1387
        <>-
×
1388
                ((tStatementBlock property: #javaSynchronizedStatementOwner)
×
1389
                         comment: 'The owner of the synchronized block (if possible)').
×
1390

×
1391
        ((javaMethodEntity property: #type) comment: 'The type of the method')
×
1392
        <>-
×
1393
                ((javaVariableExpression property: #javaMethodTypeOwner) comment:
×
1394
                         'The variable expression owner (if possible)').
×
1395
        ((javaMethodEntity property: #throws) comment:
×
1396
                 'The list of throws exception')
×
1397
        <>-*
×
1398
                ((javaClassTypeExpression property: #javaMethodThrowsOwner)
×
1399
                         comment: 'The method that throws me').
×
1400
        ((javaMethodEntity property: #typeParameters) comment:
×
1401
                 'The list of type parameter')
×
1402
        <>-*
×
1403
                ((javaTypeParameter property: #javaMethodTypeParameterOwner)
×
1404
                         comment: 'The method that use me').
×
1405

×
1406
        ((javaTypeParameter property: #types) comment:
×
1407
                 'The list of types I extend or implements')
×
1408
        <>-*
×
1409
                ((javaClassTypeExpression property: #typeParameterOwner) comment:
×
1410
                         'The type parameter I specify').
×
1411

×
1412
        ((javaParameterExpression property: #type) comment:
×
1413
                 'The type of the parameter')
×
1414
        <>-
×
1415
                ((javaVariableExpression property: #javaParameterTypeOwner)
×
1416
                         comment: 'The variable expression owner (if possible)').
×
1417
        ((javaParameterExpression property: #variable) comment:
×
1418
                 'parameter variable')
×
1419
        <>- ((javaVariableExpression property: #javaParameterVariableOwner)
×
1420
                         comment: 'The variable expression owner (if possible)').
×
1421

×
1422
        ((javaVarDeclStatement property: #type) comment:
×
1423
                 'The type of the declared variables')
×
1424
        <>-
×
1425
                ((javaVariableExpression property: #javaVarDeclTypeOwner) comment:
×
1426
                         'The variable expression owner (if possible)').
×
1427

×
1428
        ((javaArrayTypeExpression property: #baseType) comment:
×
1429
                 'The type of the array')
×
1430
        <>- ((tExpression property: #javaArrayTypeNameOwner) comment:
×
1431
                         'The variable expression owner (if possible)').
×
1432

×
1433
        ((javaClassTypeExpression property: #typeName) comment:
×
1434
                 'The name of the type')
×
1435
        <>-
×
1436
                ((javaTypeName property: #javaTypeNameTypeExpressionOwner) comment:
×
1437
                         'The type expression that owns me').
×
1438

×
1439
        ((javaQualifiedTypeName property: #namespace) comment:
×
1440
                 'The namespace of the name')
×
1441
        <>- ((javaTypeName property: #javaTypeNameQualify) comment:
×
1442
                         'the name I qualify').
×
1443

×
1444
        ((javaAssertStatement property: #condition) comment:
×
1445
                 'The condition of the statement')
×
1446
        <>- ((tExpression property: #assertConditionOwner) comment:
×
1447
                         'I represent a condition for my owner').
×
1448
        ((javaAssertStatement property: #message) comment:
×
1449
                 'The error message that is raised if the condition is false')
×
1450
        <>-
×
1451
                ((tExpression property: #javaStringAssertStatementOwner) comment:
×
1452
                         'The assertion which I describe').
×
1453

×
1454
        ((javaClassDeclaration property: #superclass) comment:
×
1455
                 'My superclass')
×
1456
        <>-
×
1457
                ((javaTypeExpression property: #javaClassDeclarationSuperclassOwner)
×
1458
                         comment: 'The class that extends me').
×
1459
        ((javaClassDeclaration property: #interfaces) comment:
×
1460
                 'The interfaces I implement')
×
1461
        <>-*
×
1462
                ((javaTypeExpression property: #javaClassDeclarationInterfaceOwner)
×
1463
                         comment: 'The class that implements me').
×
1464

×
1465
        ((javaEnumDeclaration property: #interfaces) comment:
×
1466
                 'The interfaces I implement')
×
1467
        <>-*
×
1468
                ((javaTypeExpression property: #javaEnumDeclarationInterfaceOwner)
×
1469
                         comment: 'The enum that implements me').
×
1470

×
1471
        ((javaEnumDeclaration property: #constants) comment:
×
1472
                 'The constants I define')
×
1473
        <>-* ((javaEnumConstant property: #parentEnum) comment:
×
1474
                         'The enum type that contains me').
×
1475

×
1476
        ((javaInterfaceDeclaration property: #interfaces) comment:
×
1477
                 'My super interfaces')
×
1478
        <>-*
×
1479
                ((javaTypeExpression property:
×
1480
                          #javaInterfaceDeclarationInterfaceOwner) comment:
×
1481
                         'The interface that extends me').
×
1482

×
1483
        ((tWithDeclarations property: #declarations) comment:
×
1484
                 'The elements I declare')
×
1485
        <>-* ((tDeclaration property: #javaDeclarationOwner) comment:
×
1486
                         'The element that declares me').
×
1487

×
1488
        ((tWithModifiers property: #modifiers) comment: 'My modifiers')
×
1489
        <>-* ((tModifier property: #javaModifierOwner) comment:
×
1490
                         'The owner of the modifier').
×
1491

×
1492
        ((tWithAssignable property: #variable) comment: 'My variable')
×
1493
        <>- ((tAssignable property: #javaVariableAssignmentOwner) comment:
×
1494
                         'The owner of the assignment').
×
1495

×
1496
        ((tWithReceiver property: #receiver) comment: 'My receiver')
×
1497
        <>- ((tReceiver property: #receiverOwner) comment:
×
1498
                         'The owner of the receiver').
×
1499

×
1500
        ((qualifiedName property: #namespace) comment:
×
1501
                 'The namespace that qualifies me')
×
1502
        <>- ((qualifiedName property: #namespaceOwner) comment:
×
1503
                         'The namespace I qualify').
×
1504

×
1505
        ((tWithQualifiedName property: #qualifiedName) comment:
×
1506
                 'The name that qualifies me')
×
1507
        <>- ((qualifiedName property: #qualifiedNameOwner) comment:
×
1508
                         'The owner of the qualified name').
×
1509

×
1510
        "a type pattern declares a single variable"
×
1511
        ((javaTypePattern property: #variable) comment:
×
1512
                 'The local variable declared by this type pattern')
×
1513
        <>-
×
1514
                ((javaVariableExpression property: #javaTypePatternVariableOwner)
×
1515
                         comment: 'The javaTypePattern variable owner (if possible)').
×
1516
        ((javaTypePattern property: #type) comment:
×
1517
                 'The type of the declared variable')
×
1518
        <>-
×
1519
                ((javaTypeExpression property: #javaTypePatternTypeOwner) comment:
×
1520
                         'The javaTypePattern type owner (if possible)').
×
1521

×
1522
        "do not use TDeclaration and TWithDeclaration on purpose: what a compilation unit can contain is strict"
×
1523
        ((compilationUnit property: #packageDeclaration) comment:
×
1524
                 'My package declaration, or nil for the default package')
×
1525
        <>- ((packageDeclaration property: #compilationUnit) comment:
×
1526
                         'The compilation unit that owns me').
×
1527
        ((compilationUnit property: #importDeclarations) comment:
×
1528
                 'My import declarations')
×
1529
        <>-* ((importDeclaration property: #compilationUnit) comment:
×
1530
                         'The compilation unit that owns me').
×
1531
        ((compilationUnit property: #classDeclarations) comment:
×
1532
                 'My class declarations')
×
1533
        <>-* ((javaClassDeclaration property: #compilationUnit) comment:
×
1534
                         'The compilation unit that owns me').
×
1535
        ((compilationUnit property: #interfaceDeclarations) comment:
×
1536
                 'My interface declarations')
×
1537
        <>-* ((javaInterfaceDeclaration property: #compilationUnit) comment:
×
1538
                         'The compilation unit that owns me').
×
1539
        ((compilationUnit property: #enumDeclarations) comment:
×
1540
                 'My enum declaration')
×
1541
        <>-* ((javaEnumDeclaration property: #compilationUnit) comment:
×
1542
                         'The compilation unit that owns me')
×
1543
]
×
1544

1545
{ #category : 'definition' }
1546
FASTJavaMetamodelGenerator >> defineTraits [
×
1547
        super defineTraits. 
×
1548

×
1549
        tDeclaration := self newTraitNamed: #TDeclaration comment: 'I am a declaration in java'.
×
1550
        tWithDeclarations := self newTraitNamed: #TWithDeclarations comment: 'I have declarations'.
×
1551
        
×
1552
        tModifier := self newTraitNamed: #TModifier comment: self commentForJavaTModifier. 
×
1553
        tWithModifiers := self newTraitNamed: #TWithModifiers comment: 'I have modifiers'.
×
1554
        
×
1555
        tAssignable := self newTraitNamed: #TAssignable comment: self commentForJavaTAssignable. 
×
1556
        tWithAssignable := self newTraitNamed: #TWithAssignable comment: 'I have an assignable'.
×
1557
        
×
1558
        tReceiver := self newTraitNamed: #TReceiver comment: 'I receive a message from someone'.
×
1559
        tWithReceiver := self newTraitNamed: #TWithReceiver comment: 'I can send a message to someone'.
×
1560
        
×
1561
        tWithQualifiedName := self newTraitNamed: #TWithQualifiedName comment: 'I have a qualified name.'.
×
1562

×
1563
        tAnnotationElement := self newTraitNamed: #TAnnotationElement comment: 'I can be used as an annotation "argument" eg: @SuppressWarnings(value="unchecked")
×
1564
        Acceptable annotation elements are: literal, Enum constant, Annotation, Class, an array of the preceding (out of laziness we use ArrayInitializer which is too permissive)'.
×
1565
        
×
1566
        "From FAST"
×
1567
        tEntity := self remoteTrait: #TEntity withPrefix: #FAST.
×
1568

×
1569
        tBooleanLiteral := self remoteTrait: #TBooleanLiteral withPrefix: #FAST.
×
1570
        tCharacterLiteral := self remoteTrait: #TCharacterLiteral withPrefix: #FAST.
×
1571
        tLiteral := self remoteTrait: #TLiteral withPrefix: #FAST.
×
1572
        tNullPointerLiteral := self remoteTrait: #TNullPointerLiteral withPrefix: #FAST.
×
1573
        tStringLiteral := self remoteTrait: #TStringLiteral withPrefix: #FAST.
×
1574

×
1575
        tExpression := self remoteTrait: #TExpression withPrefix: #FAST. 
×
1576
        tVariableExpression := self remoteTrait: #TVariableExpression withPrefix: #FAST.
×
1577

×
1578
        tStatement := self remoteTrait: #TStatement withPrefix: #FAST.
×
1579
        tConditionalStatement := self remoteTrait: #TConditinalStatement withPrefix: #FAST.
×
1580
        tExpressionStatement := self remoteTrait: #TExpressionStatement withPrefix: #FAST.
×
1581
        tLoopStatement := self remoteTrait: #TLoopStatement withPrefix: #FAST.
×
1582
        tReturnStatement := self remoteTrait: #TReturnStatement withPrefix: #FAST.
×
1583
        tStatementBlock := self remoteTrait: #TStatementBlock withPrefix: #FAST.
×
1584

×
1585
        tComment := self remoteTrait: #TComment withPrefix: #FAST.
×
1586
        tInvocation := self remoteTrait: #TInvocation withPrefix: #FAST.
×
1587
        tNamedBehaviouralEntity := self remoteTrait: #TNamedBehaviouralEntity withPrefix: #FAST.
×
1588
        tNamedEntity := self remoteTrait: #TNamedEntity withPrefix: #FAST.
×
1589
        tScopableEntity := self remoteTrait: #TScopableEntity withPrefix: #FAST.
×
1590
        tVariableEntity := self remoteTrait: #TVariableEntity withPrefix: #FAST.
×
1591
        tWithComments := self remoteTrait: #TWithComments withPrefix: #FAST.
×
1592
        tWithParameters := self remoteTrait: #TWithParameters withPrefix: #FAST.
×
1593
]
×
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

© 2025 Coveralls, Inc