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