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.THIS_EXPR;
    }
    usesInjectorGet = true;
    return injectFromViewParentInjector(this, diDep.token!, diDep.isOptional);
  }).toList();
  final pipeInstance = storage.allocate(
    name,
    outputType: o.importType(pipeMeta.type),
    modifiers: [
      o.StmtModifier.Private,
      o.StmtModifier.Late,
      o.StmtModifier.Final,
    ],
  );
  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));
  }
}