typeToString<T> static method

String typeToString<T>(
  1. T? value
)

Implementation

static String typeToString<T>(T? value) {
  if (T == TokenType) {
    switch (value as TokenType) {
      case TokenType.unknown:
        return "Unknown(\$)";
      case TokenType.keyword:
        return "Keyword";
      case TokenType.number:
        return "Number";
      case TokenType.string:
        return "String";
      case TokenType.identifier:
        return "Identifier";
      case TokenType.opAssign:
        return "OpAssignment";
      case TokenType.opPlus:
        return "OpPlus";
      case TokenType.opMinus:
        return "OpMinus";
      case TokenType.opTimes:
        return "OpTimes";
      case TokenType.opDivide:
        return "OpDivide";
      case TokenType.opMod:
        return "OpMod";
      case TokenType.opPower:
        return "OpPower";
      case TokenType.opEqual:
        return "OpEqual";
      case TokenType.opNotEqual:
        return "OpNotEqual";
      case TokenType.opGreater:
        return "OpGreater";
      case TokenType.opGreatEqual:
        return "OpGreaterEqual";
      case TokenType.opLesser:
        return "OpLesser";
      case TokenType.opLessEqual:
        return "OpLessEqual";
      case TokenType.opAssignPlus:
        return "OpAssignPlus";
      case TokenType.opAssignMinus:
        return "OpAssignMinus";
      case TokenType.opAssignTimes:
        return "OpAssignTimes";
      case TokenType.opAssignDivide:
        return "OpAssignDivide";
      case TokenType.opAssignMod:
        return "OpAssignMod";
      case TokenType.opAssignPower:
        return "OpAssignPower";
      case TokenType.lParen:
        return "LParen";
      case TokenType.rParen:
        return "RParen";
      case TokenType.lSquare:
        return "LSquare";
      case TokenType.rSquare:
        return "RSquare";
      case TokenType.lCurly:
        return "LCurly";
      case TokenType.rCurly:
        return "RCurly";
      case TokenType.addressOf:
        return "AddressOf";
      case TokenType.comma:
        return "Comma";
      case TokenType.dot:
        return "Dot";
      case TokenType.colon:
        return "Colon";
      case TokenType.comment:
        return "Comment";
      case TokenType.eol:
        return "EOL";
    }
  }

  if (value == null) {
    return "null";
  }

  throw ArgumentError(
    "typeToString called with unsupported type ${T.toString()}",
  );
}