Skip to content

detect wrong number of args when type-checking a closure #48123

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 2 commits into from
Feb 24, 2018

Conversation

nikomatsakis
Copy link
Contributor

Instead of creating inference variables for those argument types, use
the trait error-reporting code to give a nicer error. This also
improves some other spans for existing tests.

Fixes #47244

r? @estebank

@nikomatsakis
Copy link
Contributor Author

I should add: I'm not terribly happy with how the error reporting code is organized. It feels rather haphazard. I think we should think about exacting the code in traits/error_reporting and infer/error_reporting to a common error_reporting module, since it often happens that we detect the same conceptual error in different ways and we need to invoke methods in common.

@bors
Copy link
Collaborator

bors commented Feb 10, 2018

☔ The latest upstream changes (presumably #48113) made this pull request unmergeable. Please resolve the merge conflicts.

@bors bors added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Feb 10, 2018
@estebank
Copy link
Contributor

r=me after fixing rebasing and making travis happy. Don't think that having no output for issue-47706-trait is valid.

[01:00:25] failures:
[01:00:25] 
[01:00:25] ---- [ui] ui/issue-47706-trait.rs stdout ----
[01:00:25] 	diff of stderr:
[01:00:25] 
[01:00:25] 1	error[E0601]: main function not found
[01:00:25] 2	
[01:00:25] -	error[E0593]: function is expected to take a single 0-tuple as argument, but it takes 2 distinct arguments
[01:00:25] -	  --> $DIR/issue-47706-trait.rs:13:20
[01:00:25] -	   |
[01:00:25] -	12 |     fn f(&self, _: ()) {
[01:00:25] -	   |     ------------------ takes 2 distinct arguments
[01:00:25] -	13 |         None::<()>.map(Self::f);
[01:00:25] -	   |                    ^^^ expected function that takes a single 0-tuple as argument
[01:00:25] -	
[01:00:25] -	error: aborting due to 2 previous errors
[01:00:25] -	
[01:00:25] 13	
[01:00:25] 
[01:00:25] 
[01:00:25] The actual stderr differed from the expected stderr.
[01:00:25] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issue-47706-trait.stderr
[01:00:25] To update references, run this command from build directory:
[01:00:25] /checkout/src/test/ui/update-references.sh '/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui' 'issue-47706-trait.rs'
[01:00:25] 
[01:00:25] error: 1 errors occurred comparing output.
[01:00:25] status: exit code: 101
[01:00:25] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/issue-47706-trait.rs" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issue-47706-trait.stage2-x86_64-unknown-linux-gnu" "-Crpath" "-O" "-Zmiri" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/issue-47706-trait.stage2-x86_64-unknown-linux-gnu.aux" "-A" "unused"
[01:00:25] stdout:
[01:00:25] ------------------------------------------
[01:00:25] 
[01:00:25] ------------------------------------------
[01:00:25] stderr:
[01:00:25] ------------------------------------------
[01:00:25] {"message":"main function not found","code":{"code":"E0601","explanation":"\nNo `main` function was found in a binary crate. To fix this error, add a\n`main` function. For example:\n\n```\nfn main() {\n    // Your program will start here.\n    println!(\"Hello world!\");\n}\n```\n\nIf you don't know the basics of Rust, you can go look to the Rust Book to get\nstarted: https://doc.rust-lang.org/book/\n"},"level":"error","spans":[],"children":[],"rendered":"error[E0601]: main function not found\n\n"}
[01:00:25] thread 'rustc' panicked at 'non-FnLike node found: NodeTraitItem(TraitItem { id: NodeId(6), name: f, hir_id: HirId { owner: DefIndex(0:4), local_id: ItemLocalId(0) }, attrs: [], generics: Generics { params: [], where_clause: WhereClause { id: NodeId(7), predicates: [] }, span: /checkout/src/test/ui/issue-47706-trait.rs:1:1: 1:1 }, node: Method(MethodSig { unsafety: Normal, constness: NotConst, abi: Rust, decl: FnDecl { inputs: [type(&Self), type(())], output: DefaultReturn(/checkout/src/test/ui/issue-47706-trait.rs:12:24: 12:24), variadic: false, has_implicit_self: true } }, Provided(BodyId { node_id: NodeId(22) })), span: /checkout/src/test/ui/issue-47706-trait.rs:12:5: 14:6 })', librustc/traits/error_reporting.rs:870:18
[01:00:25] note: Run with `RUST_BACKTRACE=1` for a backtrace.
[01:00:25] 
[01:00:25] error: internal compiler error: unexpected panic
[01:00:25] 
[01:00:25] note: the compiler unexpectedly panicked. this is a bug.
[01:00:25] 
[01:00:25] note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
[01:00:25] 
[01:00:25] note: rustc 1.25.0-dev running on x86_64-unknown-linux-gnu
[01:00:25] 
[01:00:25] 
[01:00:25] ------------------------------------------
[01:00:25] 
[01:00:25] thread '[ui] ui/issue-47706-trait.rs' panicked at 'explicit panic', tools/compiletest/src/runtest.rs:2883:9
[01:00:25] note: Run with `RUST_BACKTRACE=1` for a backtrace.
[01:00:25] 
[01:00:25] 
[01:00:25] failures:
[01:00:25]     [ui] ui/issue-47706-trait.rs
[01:00:25] 
[01:00:25] test result: FAILED. 985 passed; 1 failed; 4 ignored; 0 measured; 0 filtered out

@nikomatsakis nikomatsakis force-pushed the issue-47244-expected-num-args branch from 1306c37 to 00ce422 Compare February 12, 2018 21:00
Instead of creating inference variables for those argument types, use
the trait error-reporting code to give a nicer error.
@nikomatsakis nikomatsakis force-pushed the issue-47244-expected-num-args branch from 00ce422 to cc05561 Compare February 12, 2018 21:49
@nikomatsakis
Copy link
Contributor Author

@bors r=estebank

@bors
Copy link
Collaborator

bors commented Feb 13, 2018

📌 Commit cc05561 has been approved by estebank

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Feb 13, 2018
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Feb 16, 2018
…um-args, r=estebank

detect wrong number of args when type-checking a closure

Instead of creating inference variables for those argument types, use
the trait error-reporting code to give a nicer error. This also
improves some other spans for existing tests.

Fixes rust-lang#47244

r? @estebank
Manishearth added a commit to Manishearth/rust that referenced this pull request Feb 19, 2018
…um-args, r=estebank

detect wrong number of args when type-checking a closure

Instead of creating inference variables for those argument types, use
the trait error-reporting code to give a nicer error. This also
improves some other spans for existing tests.

Fixes rust-lang#47244

r? @estebank
Manishearth added a commit to Manishearth/rust that referenced this pull request Feb 20, 2018
bors added a commit that referenced this pull request Feb 20, 2018
Manishearth added a commit to Manishearth/rust that referenced this pull request Feb 23, 2018
…um-args, r=estebank

detect wrong number of args when type-checking a closure

Instead of creating inference variables for those argument types, use
the trait error-reporting code to give a nicer error. This also
improves some other spans for existing tests.

Fixes rust-lang#47244

r? @estebank
bors added a commit that referenced this pull request Feb 23, 2018
Rollup of 12 pull requests

- Successful merges: #47933, #48072, #48083, #48123, #48157, #48219, #48221, #48245, #48429, #48436, #48438, #48472
- Failed merges:
bors added a commit that referenced this pull request Feb 24, 2018
Rollup of 12 pull requests

- Successful merges: #47933, #48072, #48083, #48123, #48157, #48219, #48221, #48245, #48429, #48436, #48438, #48472
- Failed merges:
@bors bors merged commit cc05561 into rust-lang:master Feb 24, 2018
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants