-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJavaDB.jrag
More file actions
57 lines (44 loc) · 1.84 KB
/
JavaDB.jrag
File metadata and controls
57 lines (44 loc) · 1.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
aspect L1 {
// syn boolean MemberVariable.isStatic() = false;
inh int MemberVariable.getPosition();
eq L2ClassDecl.getMemberParameter(int i).getPosition() = i;
eq L2GenericClassDecl.getMemberParameter(int i).getPosition() = i;
//////////////////////// localNum
//inh lazy int ClassInstanceExpr.localNum();
eq FieldDeclaration.getInit().localNum() {
int localNum = 1;
for (Iterator iter = hostType().constructors().iterator(); iter.hasNext(); ) {
ConstructorDecl c = (ConstructorDecl)iter.next();
int num = c.getNumParameter() == 0 ? c.localNumOfFirstParameter() :
c.getParameter(c.getNumParameter() - 1).localNum() + c.getParameter(c.getNumParameter() - 1).type().variableSize();
if (num > localNum)
localNum = num;
}
return localNum;
}
///////////////////////
eq OwnerOfExpr.type() = getOperand().type().getOwnerType();
refine TypeAnalysis eq VarAccess.type() {
if (isParField()) {
FieldVariable fieldVar = hostType().memberParFields(qualifier().type(), name());
return fieldVar.getTypeAccess().type();
} else
return refined();
}
syn TypeDecl TypeDecl.getOwnerType() = unknownType();
eq L1ClassDecl.getOwnerType() {
if (!hasOwnerClassAccess()) return unknownType();
return getOwnerClassAccess().type();
}
eq L1GenericClassDecl.getOwnerType() {
if (!hasOwnerClassAccess()) return unknownType();
return getOwnerClassAccess().type();
}
eq RawClassDecl.getOwnerType() = original().getOwnerType();
eq ParClassDecl.getOwnerType() = hasOwnerType() ? substitute((TypeVariable)original().getOwnerType()) : unknownType();
syn boolean TypeDecl.hasOwnerType() = false;
eq L1ClassDecl.hasOwnerType() = hasOwnerClassAccess();
eq L1GenericClassDecl.hasOwnerType() = hasOwnerClassAccess();
eq RawClassDecl.hasOwnerType() = original().hasOwnerType();
eq ParClassDecl.hasOwnerType() = original().hasOwnerType();
}