createSwitchPattern function

Expression createSwitchPattern(
  1. Expression variable,
  2. Map<Spec, Expression> cases
)

Implementation

Expression createSwitchPattern(
  Expression variable,
  Map<Spec, Expression> cases,
) {
  return CodeExpression(
    Block.of([
      const Code('switch ('),
      variable.code,
      const Code(') {'),
      ...cases.entries.expand(
        (e) => [
          switch (e.key) {
            final Code code => code,
            final Expression exp => exp.code,
            final key => throw ArgumentError.value(key),
          },
          const Code(' => '),
          e.value.code,
          const Code(','),
        ],
      ),
      const Code('}'),
    ]),
  );
}