visitDestructuringDecl method
Implementation
@override
Uint8List visitDestructuringDecl(DestructuringDecl stmt) {
final bytesBuilder = BytesBuilder();
bytesBuilder.add(compileAST(stmt.initializer));
bytesBuilder.addByte(OpCode.destructuringDecl);
bytesBuilder.addByte(stmt.isTopLevel ? 1 : 0);
bytesBuilder.addByte(stmt.ids.length);
for (final id in stmt.ids.keys) {
bytesBuilder.add(_identifier(id.id));
final typeExpr = stmt.ids[id];
if (typeExpr != null) {
bytesBuilder.addByte(1); // bool: has type decl
final typeDecl = compileAST(typeExpr);
bytesBuilder.add(typeDecl);
} else {
bytesBuilder.addByte(0); // bool: has type decl
}
}
bytesBuilder.addByte(stmt.isVector ? 1 : 0);
bytesBuilder.addByte(stmt.isMutable ? 1 : 0);
bytesBuilder.addByte(OpCode.endOfStmt);
return bytesBuilder.toBytes();
}