MCPcopy Create free account
hub / github.com/angular/angular / VeSafeLhsInferenceBugDetector

Class VeSafeLhsInferenceBugDetector

packages/compiler/src/typecheck/expression.ts:463–555  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

461}
462
463class VeSafeLhsInferenceBugDetector implements AstVisitor {
464 private static SINGLETON = new VeSafeLhsInferenceBugDetector();
465
466 static veWillInferAnyFor(ast: Call | SafeCall | SafePropertyRead | SafeKeyedRead) {
467 const visitor = VeSafeLhsInferenceBugDetector.SINGLETON;
468 return ast instanceof Call ? ast.visit(visitor) : ast.receiver.visit(visitor);
469 }
470
471 visitUnary(ast: Unary): boolean {
472 return ast.expr.visit(this);
473 }
474 visitBinary(ast: Binary): boolean {
475 return ast.left.visit(this) || ast.right.visit(this);
476 }
477 visitChain(): boolean {
478 return false;
479 }
480 visitConditional(ast: Conditional): boolean {
481 return ast.condition.visit(this) || ast.trueExp.visit(this) || ast.falseExp.visit(this);
482 }
483 visitCall(): boolean {
484 return true;
485 }
486 visitSafeCall(): boolean {
487 return false;
488 }
489 visitImplicitReceiver(): boolean {
490 return false;
491 }
492 visitThisReceiver(): boolean {
493 return false;
494 }
495 visitInterpolation(ast: Interpolation): boolean {
496 return ast.expressions.some((exp) => exp.visit(this));
497 }
498 visitKeyedRead(): boolean {
499 return false;
500 }
501 visitLiteralArray(): boolean {
502 return true;
503 }
504 visitLiteralMap(): boolean {
505 return true;
506 }
507 visitLiteralPrimitive(): boolean {
508 return false;
509 }
510 visitPipe(): boolean {
511 return true;
512 }
513 visitPrefixNot(ast: PrefixNot): boolean {
514 return ast.expression.visit(this);
515 }
516 visitTypeofExpression(ast: TypeofExpression): boolean {
517 return ast.expression.visit(this);
518 }
519 visitVoidExpression(ast: VoidExpression): boolean {
520 return ast.expression.visit(this);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected