Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upSupport variadic interface arguments (fixes #8159) #8197
Conversation
highfive
commented
Oct 25, 2015
unsafe extern fn passVariadicInterface(cx: *mut JSContext, _obj: HandleObject, this: *const TestBinding, args: *const JSJitMethodCallArgs) -> bool {
let this = &*this;
let args = &*args;
let argc = args._base.argc_;
let mut arg0 = RootedVec::new();
*arg0 = Vec::with_capacity((argc - 0) as usize);
for variadicArg in 0..argc {
let slot: *const Blob = if args.get(variadicArg).get().is_object() {
match native_from_handlevalue(args.get(variadicArg)) {
Ok(val) => val,
Err(()) => {
throw_type_error(cx, "value does not implement interface Blob.");
return false;
}
}
} else {
throw_type_error(cx, "Value is not an object.");
return false;
};
arg0.push(JS::from_ref(&*slot));
}
let result: () = this.PassVariadicInterface(arg0.r());
(result).to_jsval(cx, args.rval());
return true;
} |
|
Not sure I'm a big fan of the branching |
|
I have no idea what your remark is about, @Ms2ger. |
|
@bors-servo: r+ |
|
|
|
@bors-servo: r- |
|
|
|
Generally looks good! I'd just like to make sure that we're thinking through the changes to the types carefully. Reviewed 10 of 10 files at r1, 1 of 1 files at r2, 1 of 1 files at r3, 1 of 1 files at r4, 7 of 7 files at r5. components/script/dom/bindings/codegen/CodegenRust.py, line 761 [r4] (raw file): components/script/dom/bindings/codegen/CodegenRust.py, line 1209 [r4] (raw file): components/script/dom/bindings/codegen/CodegenRust.py, line 108 [r5] (raw file): components/script/dom/bindings/codegen/CodegenRust.py, line 764 [r5] (raw file): components/script/dom/bindings/codegen/Configuration.py, line 166 [r5] (raw file): components/script/dom/bindings/conversions.rs, line 756 [r5] (raw file): Comments from the review on Reviewable.io |
|
-S-needs-rebase +S-awaiting-answer Review status: all files reviewed at latest revision, 6 unresolved discussions, some commit checks failed. components/script/dom/bindings/codegen/CodegenRust.py, line 761 [r4] (raw file): components/script/dom/bindings/codegen/CodegenRust.py, line 1209 [r4] (raw file): components/script/dom/bindings/codegen/CodegenRust.py, line 108 [r5] (raw file): components/script/dom/bindings/codegen/CodegenRust.py, line 764 [r5] (raw file): components/script/dom/bindings/codegen/Configuration.py, line 166 [r5] (raw file): components/script/dom/bindings/conversions.rs, line 756 [r5] (raw file): Comments from the review on Reviewable.io |
|
-S-awaiting-review -S-awaiting-answer +S-needs-code-changes Reviewed 14 of 14 files at r6. components/script/dom/bindings/codegen/CodegenRust.py, line 764 [r5] (raw file):
Comments from the review on Reviewable.io |
We use a RootedVec value in codegen, of which we use the `r()` method to pass `&[&T]` to the interface methods.
|
@bors-servo: r+ Reviewed 1 of 1 files at r7. Comments from the review on Reviewable.io |
|
|
Support variadic interface arguments (fixes #8159) <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8197) <!-- Reviewable:end -->
|
|
I broke that in servo#8197.
Properly handle variadic arguments preceded by default values I broke that in #8197. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8498) <!-- Reviewable:end -->
Properly handle variadic arguments preceded by default values I broke that in #8197. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8498) <!-- Reviewable:end -->
nox commentedOct 25, 2015