public class TranslateExprNodeVisitor extends AbstractReturningExprNodeVisitor<CodeChunk.WithValue>
ExprNode) into an equivalent
chunk of JavaScript code.
Important: Do not use outside of Soy code (treat as superpackage-private).
For example, one might normally access field foo on a protocol buffer by calling
my_pb.getFoo()A Soy author can access the same by writing
{$my_pb.foo}
But the relationship between "foo" and "getFoo" is not preserved by JSCompiler's renamer.
To avoid adding many spurious dependencies on all protocol buffers compiled with a Soy template, we make type-unsound (see CAVEAT below) assumptions:
my.Proto can be passed to the
param $my_pb, then $my_pb's static type is a super-type of my.Proto.
SoyTypeRegistries allow
recognizing input coercion, for example between goog.html.type.SafeHtml and Soy's
html string sub-type. CAVEAT: These assumptions are unsound, but necessary to be able to deploy JavaScript binaries of acceptable size.
Type-failures are correctness issues but do not lead to increased exposure to XSS or otherwise
compromise security or privacy since a failure to unpack a type leads to a value that coerces to
a trivial value like undefined or "[Object]".
| Constructor and Description |
|---|
TranslateExprNodeVisitor(SoyJsSrcOptions jsSrcOptions,
TranslationContext translationContext,
ErrorReporter errorReporter) |
visit, visitChildren, visitDivideByOpNode, visitEqualOpNode, visitExprNode, visitFieldAccessNode, visitGreaterThanOpNode, visitGreaterThanOrEqualOpNode, visitItemAccessNode, visitLessThanOpNode, visitLessThanOrEqualOpNode, visitMinusOpNode, visitModOpNode, visitNegativeOpNode, visitNotEqualOpNode, visitNotOpNode, visitPlusOpNode, visitPrimitiveNode, visitTimesOpNodeexec, visitChildren, visitChildrenAllowingConcurrentModificationpublic TranslateExprNodeVisitor(SoyJsSrcOptions jsSrcOptions, TranslationContext translationContext, ErrorReporter errorReporter)
protected CodeChunk.WithValue visitExprRootNode(ExprRootNode node)
visitExprRootNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitBooleanNode(BooleanNode node)
visitBooleanNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitFloatNode(FloatNode node)
visitFloatNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitIntegerNode(IntegerNode node)
visitIntegerNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitNullNode(NullNode node)
visitNullNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitStringNode(StringNode node)
visitStringNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitListLiteralNode(ListLiteralNode node)
visitListLiteralNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitLegacyObjectMapLiteralNode(LegacyObjectMapLiteralNode node)
visitLegacyObjectMapLiteralNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitMapLiteralNode(MapLiteralNode node)
visitMapLiteralNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitVarRefNode(VarRefNode node)
visitVarRefNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitDataAccessNode(DataAccessNode node)
visitDataAccessNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitGlobalNode(GlobalNode node)
visitGlobalNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitNullCoalescingOpNode(OperatorNodes.NullCoalescingOpNode node)
visitNullCoalescingOpNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitAndOpNode(OperatorNodes.AndOpNode node)
visitAndOpNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitOrOpNode(OperatorNodes.OrOpNode node)
visitOrOpNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitConditionalOpNode(OperatorNodes.ConditionalOpNode node)
visitConditionalOpNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitOperatorNode(ExprNode.OperatorNode node)
visitOperatorNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitProtoInitNode(ProtoInitNode node)
visitProtoInitNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>protected CodeChunk.WithValue visitFunctionNode(FunctionNode node)
visitFunctionNode in class AbstractReturningExprNodeVisitor<CodeChunk.WithValue>