Context & versions:
Compiler 0.30.0
Steps to reproduce:
Compile this
import CompactStandardLibrary;
export ledger id_to_something: Map<Uint<64>, Uint<64>>;
export ledger id_to_set: Map<Uint<64>, Set<Uint<64>>>;
export circuit set_single(id: Uint<64>, s: Uint<64>): [] {
id_to_something.insert(disclose(id), disclose(s));
}
export circuit set_set(id: Uint<64>, s: Uint<64>): [] {
const d_id = disclose(id);
if (!id_to_set.member(d_id)) {
id_to_set.insert(d_id, default<Set<Uint<64>>>);
}
id_to_set.lookup(d_id).insert(disclose(s));
}
Actual behavior:
Ledger declaration is:
export type Ledger = {
id_to_something: {
isEmpty(): boolean;
size(): bigint;
member(key_0: bigint): boolean;
lookup(key_0: bigint): bigint;
[Symbol.iterator](): Iterator<[bigint, bigint]>
};
id_to_set: {
isEmpty(): boolean;
size(): bigint;
member(key_0: bigint): boolean;
lookup(key_0: bigint): {
isEmpty(): boolean;
size(): bigint;
member(elem_0: bigint): boolean;
[Symbol.iterator](): Iterator<bigint>
}
};
}
Expected behavior:
id_to_set should have an "outer" iterator:
export type Ledger = {
id_to_something: {
isEmpty(): boolean;
size(): bigint;
member(key_0: bigint): boolean;
lookup(key_0: bigint): bigint;
[Symbol.iterator](): Iterator<[bigint, bigint]>
};
id_to_set: {
isEmpty(): boolean;
size(): bigint;
member(key_0: bigint): boolean;
lookup(key_0: bigint): {
isEmpty(): boolean;
size(): bigint;
member(elem_0: bigint): boolean;
[Symbol.iterator](): Iterator<bigint>
};
// This is not being generated
[Symbol.iterator](): Iterator<[bigint, {
isEmpty(): boolean;
size(): bigint;
member(elem_0: bigint): boolean;
[Symbol.iterator](): Iterator<bigint>
}]>
};
}
Context & versions:
Compiler 0.30.0
Steps to reproduce:
Compile this
Actual behavior:
Ledger declaration is:
Expected behavior:
id_to_setshould have an "outer" iterator: