Raise TypeError for duplicate keyword arguments

This commit is contained in:
Seo Sanghyeon 2019-10-04 19:29:57 +09:00
parent 6c88f6af3d
commit fe4f8237ad

View file

@ -658,6 +658,7 @@ impl<O: OutputStream> Compiler<O> {
self.emit(Instruction::BuildMap { self.emit(Instruction::BuildMap {
size: num_kw_only_defaults, size: num_kw_only_defaults,
unpack: false, unpack: false,
for_call: false,
}); });
} }
@ -896,6 +897,7 @@ impl<O: OutputStream> Compiler<O> {
self.emit(Instruction::BuildMap { self.emit(Instruction::BuildMap {
size: num_annotations, size: num_annotations,
unpack: false, unpack: false,
for_call: false,
}); });
} }
@ -1464,6 +1466,7 @@ impl<O: OutputStream> Compiler<O> {
self.emit(Instruction::BuildMap { self.emit(Instruction::BuildMap {
size: subsize, size: subsize,
unpack: false, unpack: false,
for_call: false,
}); });
size += 1; size += 1;
} }
@ -1472,10 +1475,15 @@ impl<O: OutputStream> Compiler<O> {
self.emit(Instruction::BuildMap { self.emit(Instruction::BuildMap {
size, size,
unpack: false, unpack: false,
for_call: false,
}); });
} }
if size > 1 || has_unpacking { if size > 1 || has_unpacking {
self.emit(Instruction::BuildMap { size, unpack: true }); self.emit(Instruction::BuildMap {
size,
unpack: true,
for_call: false,
});
} }
Ok(()) Ok(())
} }
@ -1704,12 +1712,17 @@ impl<O: OutputStream> Compiler<O> {
self.emit(Instruction::BuildMap { self.emit(Instruction::BuildMap {
size: subsize, size: subsize,
unpack: false, unpack: false,
for_call: false,
}); });
size += 1; size += 1;
} }
} }
if size > 1 { if size > 1 {
self.emit(Instruction::BuildMap { size, unpack: true }); self.emit(Instruction::BuildMap {
size,
unpack: true,
for_call: true,
});
} }
Ok(()) Ok(())
} }
@ -1855,6 +1868,7 @@ impl<O: OutputStream> Compiler<O> {
self.emit(Instruction::BuildMap { self.emit(Instruction::BuildMap {
size: 0, size: 0,
unpack: false, unpack: false,
for_call: false,
}); });
} }
} }