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

Class VeSafeLhsInferenceBugDetector

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

Source from the content-addressed store, hash-verified

433}
434
435class VeSafeLhsInferenceBugDetector implements AstVisitor {
436 private static SINGLETON = new VeSafeLhsInferenceBugDetector();
437
438 static veWillInferAnyFor(ast: Call | SafeCall | SafePropertyRead | SafeKeyedRead) {
439 const visitor = VeSafeLhsInferenceBugDetector.SINGLETON;
440 return ast instanceof Call ? ast.visit(visitor) : ast.receiver.visit(visitor);
441 }
442
443 visitUnary(ast: Unary): boolean {
444 return ast.expr.visit(this);
445 }
446 visitBinary(ast: Binary): boolean {
447 return ast.left.visit(this) || ast.right.visit(this);
448 }
449 visitChain(): boolean {
450 return false;
451 }
452 visitConditional(ast: Conditional): boolean {
453 return ast.condition.visit(this) || ast.trueExp.visit(this) || ast.falseExp.visit(this);
454 }
455 visitCall(): boolean {
456 return true;
457 }
458 visitSafeCall(): boolean {
459 return false;
460 }
461 visitImplicitReceiver(): boolean {
462 return false;
463 }
464 visitThisReceiver(): boolean {
465 return false;
466 }
467 visitInterpolation(ast: Interpolation): boolean {
468 return ast.expressions.some((exp) => exp.visit(this));
469 }
470 visitKeyedRead(): boolean {
471 return false;
472 }
473 visitLiteralArray(): boolean {
474 return true;
475 }
476 visitLiteralMap(): boolean {
477 return true;
478 }
479 visitLiteralPrimitive(): boolean {
480 return false;
481 }
482 visitPipe(): boolean {
483 return true;
484 }
485 visitPrefixNot(ast: PrefixNot): boolean {
486 return ast.expression.visit(this);
487 }
488 visitTypeofExpression(ast: TypeofExpression): boolean {
489 return ast.expression.visit(this);
490 }
491 visitVoidExpression(ast: VoidExpression): boolean {
492 return ast.expression.visit(this);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected