visitImportExportDecl method

  1. @override
Uint8List visitImportExportDecl(
  1. ImportExportDecl stmt
)
override

Implementation

@override
Uint8List visitImportExportDecl(ImportExportDecl stmt) {
  final bytesBuilder = BytesBuilder();
  bytesBuilder.add(_lineInfo(stmt.line, stmt.column));
  bytesBuilder.addByte(HTOpCode.importExportDecl);
  bytesBuilder.addByte(stmt.isExport ? 1 : 0); // bool: isExport
  bytesBuilder
      .addByte(stmt.isPreloadedModule ? 1 : 0); // bool: isPreloadedModule
  bytesBuilder.addByte(stmt.showList.length);
  for (final id in stmt.showList) {
    bytesBuilder.add(_parseIdentifier(id.id));
  }
  if (stmt.fromPath != null) {
    bytesBuilder.addByte(1); // bool: hasFromPath
    // use the normalized absolute name here instead of relative path
    bytesBuilder.add(_parseIdentifier(stmt.fullFromPath!));
  } else {
    bytesBuilder.addByte(0); // bool: hasFromPath
  }
  if (stmt.alias != null) {
    bytesBuilder.addByte(1); // bool: has alias id
    bytesBuilder.add(_parseIdentifier(stmt.alias!.id));
  } else {
    bytesBuilder.addByte(0); // bool: has alias id
  }
  bytesBuilder.addByte(HTOpCode.endOfStmt);
  return bytesBuilder.toBytes();
}