visitIdentifierExpr method

  1. @override
Uint8List visitIdentifierExpr(
  1. IdentifierExpr expr
)
override

Implementation

@override
Uint8List visitIdentifierExpr(IdentifierExpr expr) {
  final bytesBuilder = BytesBuilder();
  bytesBuilder.add(_lineInfo(expr.line, expr.column));
  var symbolId = expr.id;
  if (_markedSymbolsList.isNotEmpty) {
    final map = _markedSymbolsList.last;
    for (final symbol in map.keys) {
      if (symbolId == symbol) {
        symbolId = map[symbol]!;
        break;
      }
    }
  }
  bytesBuilder.addByte(HTOpCode.local);
  bytesBuilder.addByte(HTValueTypeCode.identifier);
  bytesBuilder.add(_parseIdentifier(symbolId));
  bytesBuilder.addByte(expr.isLocal ? 1 : 0);
  // if (expr.typeArgs.isNotEmpty) {
  //   bytesBuilder.addByte(1);
  //   bytesBuilder.addByte(expr.typeArgs.length); // bool: has type args
  //   for (final ast in expr.typeArgs) {
  //     final bytes = visitTypeExpr(ast);
  //     bytesBuilder.add(bytes);
  //   }
  // } else {
  //   bytesBuilder.addByte(0); // bool: has type args
  // }
  return bytesBuilder.toBytes();
}