|
| 1 | +package com.semmle.ts.ast; |
| 2 | + |
| 3 | +import java.util.ArrayList; |
| 4 | +import java.util.List; |
| 5 | + |
| 6 | +import com.semmle.js.ast.Expression; |
| 7 | +import com.semmle.js.ast.INode; |
| 8 | +import com.semmle.js.ast.Node; |
| 9 | +import com.semmle.js.ast.SourceLocation; |
| 10 | +import com.semmle.js.ast.TemplateElement; |
| 11 | +import com.semmle.js.ast.TemplateLiteral; |
| 12 | +import com.semmle.js.ast.Visitor; |
| 13 | + |
| 14 | +/** |
| 15 | + * A template literal used in a type, such as in <code>type T = `Hello, ${name}!`</code>. |
| 16 | + */ |
| 17 | +public class TemplateLiteralTypeExpr extends TypeExpression { |
| 18 | + private final List<ITypeExpression> expressions; |
| 19 | + private final List<TemplateElement> quasis; |
| 20 | + private final List<Node> children; |
| 21 | + |
| 22 | + public TemplateLiteralTypeExpr( |
| 23 | + SourceLocation loc, List<ITypeExpression> expressions, List<TemplateElement> quasis) { |
| 24 | + super("TemplateLiteralTypeExpr", loc); |
| 25 | + this.expressions = expressions; |
| 26 | + this.quasis = quasis; |
| 27 | + this.children = TemplateLiteral.<Node>mergeChildren(expressions, quasis); |
| 28 | + } |
| 29 | + |
| 30 | + @Override |
| 31 | + public <Q, A> A accept(Visitor<Q, A> v, Q q) { |
| 32 | + return v.visit(this, q); |
| 33 | + } |
| 34 | + |
| 35 | + /** The type expressions in this template. */ |
| 36 | + public List<ITypeExpression> getExpressions() { |
| 37 | + return expressions; |
| 38 | + } |
| 39 | + |
| 40 | + /** The template elements in this template. */ |
| 41 | + public List<TemplateElement> getQuasis() { |
| 42 | + return quasis; |
| 43 | + } |
| 44 | + |
| 45 | + /** All type expressions and template elements in this template, in lexical order. */ |
| 46 | + public List<Node> getChildren() { |
| 47 | + return children; |
| 48 | + } |
| 49 | +} |
0 commit comments