createPipeInstance method

void createPipeInstance(
  1. String name,
  2. CompilePipeMetadata pipeMeta
)

Implementation

void createPipeInstance(String name, CompilePipeMetadata pipeMeta) {
  var usesInjectorGet = false;
  final deps = pipeMeta.type.diDeps.map((diDep) {
    if (diDep.token!.equalsTo(
      identifierToken(Identifiers.changeDetectorRef),
    )) {
      return o.thisExpr;
    }
    usesInjectorGet = true;
    return injectFromViewParentInjector(this, diDep.token!, diDep.isOptional);
  }).toList();
  final pipeInstance = storage.allocate(
    name,
    outputType: o.importType(pipeMeta.type),
    modifiers: [
      o.StmtModifier.privateStmt,
      o.StmtModifier.lateStmt,
      o.StmtModifier.finalStmt,
    ],
  );
  final typeExpression = o.importExpr(pipeMeta.type);
  if (usesInjectorGet) {
    _createMethod.addStmt(debugInjectorEnter(typeExpression));
  }
  _createMethod.addStmt(
    storage
        .buildWriteExpr(pipeInstance, typeExpression.instantiate(deps))
        .toStmt(),
  );
  if (usesInjectorGet) {
    _createMethod.addStmt(debugInjectorLeave(typeExpression));
  }
}