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

Class VeSafeLhsInferenceBugDetector

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

Source from the content-addressed store, hash-verified

417}
418
419class VeSafeLhsInferenceBugDetector implements AstVisitor {
420 private static SINGLETON = new VeSafeLhsInferenceBugDetector();
421
422 static veWillInferAnyFor(ast: Call | SafeCall | SafePropertyRead | SafeKeyedRead) {
423 const visitor = VeSafeLhsInferenceBugDetector.SINGLETON;
424 return ast instanceof Call ? ast.visit(visitor) : ast.receiver.visit(visitor);
425 }
426
427 visitUnary(ast: Unary): boolean {
428 return ast.expr.visit(this);
429 }
430 visitBinary(ast: Binary): boolean {
431 return ast.left.visit(this) || ast.right.visit(this);
432 }
433 visitChain(): boolean {
434 return false;
435 }
436 visitConditional(ast: Conditional): boolean {
437 return ast.condition.visit(this) || ast.trueExp.visit(this) || ast.falseExp.visit(this);
438 }
439 visitCall(): boolean {
440 return true;
441 }
442 visitSafeCall(): boolean {
443 return false;
444 }
445 visitImplicitReceiver(): boolean {
446 return false;
447 }
448 visitThisReceiver(): boolean {
449 return false;
450 }
451 visitInterpolation(ast: Interpolation): boolean {
452 return ast.expressions.some((exp) => exp.visit(this));
453 }
454 visitKeyedRead(): boolean {
455 return false;
456 }
457 visitLiteralArray(): boolean {
458 return true;
459 }
460 visitLiteralMap(): boolean {
461 return true;
462 }
463 visitLiteralPrimitive(): boolean {
464 return false;
465 }
466 visitPipe(): boolean {
467 return true;
468 }
469 visitPrefixNot(ast: PrefixNot): boolean {
470 return ast.expression.visit(this);
471 }
472 visitTypeofExpression(ast: TypeofExpression): boolean {
473 return ast.expression.visit(this);
474 }
475 visitVoidExpression(ast: VoidExpression): boolean {
476 return ast.expression.visit(this);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected