1 | package uk.co.zonetora.fj.model; |
2 | |
3 | import java.util.HashSet; |
4 | import java.util.Set; |
5 | |
6 | import uk.co.zonetora.fj.typecheck.TypeCheck; |
7 | |
8 | public class Cast implements Term { |
9 | |
10 | private final ClassName className; |
11 | private final Term castedTerm; |
12 | |
13 | public Cast(ClassName className, Term castedTerm) { |
14 | this.className = className; |
15 | this.castedTerm = castedTerm; |
16 | } |
17 | |
18 | public Set<ClassName> getAllReferencedClassNames() { |
19 | Set<ClassName> allReferencedClassNames = new HashSet<ClassName>(); |
20 | allReferencedClassNames.add(className); |
21 | allReferencedClassNames.addAll(castedTerm.getAllReferencedClassNames()); |
22 | return allReferencedClassNames; |
23 | } |
24 | |
25 | public void visit(TypeCheck check) { |
26 | check.appyRule(this); |
27 | } |
28 | |
29 | public Term getCastedTerm() { |
30 | return this.castedTerm; |
31 | } |
32 | |
33 | public ClassName getTypeToCastTo() { |
34 | return this.className; |
35 | } |
36 | } |