define/match ignores function annotations
Open
Nobody has claimed this yet.
- Dominant language
- Racket
- Stars
- 575
- Forks
- 106
- Avg merge
- 2h 1m
- Merged PRs (30d)
- 2
Description
https://groups.google.com/d/msg/racket-users/vyXR5_aT2TY/rtrjUaX-CAAJ
What version of Racket are you using?
6.11.0.1
What program did you run?
#lang typed/racket
(define-type Reading (Vector Integer Integer))
(: close? (->* (Reading Reading) (Integer) Boolean))
(define/match (close? r1 r2 [err 1])
[((vector a b) (vector c d) e)
(and (= a (+ c e)) (= b (+ d e)))])
What should have happened?
The program should typecheck.
Seems like TR is trying to infer a type for close? instead of checking that it matches the type annotation.
If you got an error message, please include it here.
foo.rkt:10:17: Type Checker: type mismatch
expected: Number
given: Any
in: c
compilation context...:
/home/ben/foo.rkt
context...:
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/utils/tc-utils.rkt:133:21: for-loop
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/utils/tc-utils.rkt:123:0: report-all-errors
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/typecheck/tc-toplevel.rkt:348:0: type-check
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/typecheck/tc-toplevel.rkt:591:0: tc-module
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/tc-setup.rkt:94:0: tc-module/full
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/typed-racket.rkt:23:4
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:363:0: compile-zo*
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:572:26
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:564:42
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:635:0: compile-root
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:737:4
/home/ben/code/racket/fork/pkgs/compiler-lib/compiler/commands/make.rkt:81:8: for-loop
/home/ben/code/racket/fork/pkgs/compiler-lib/compiler/commands/make.rkt: [running body]
/home/ben/code/racket/fork/racket/collects/raco/raco.rkt: [running body]
/home/ben/code/racket/fork/racket/collects/raco/main.rkt: [running body]
foo.rkt:10:19: Type Checker: type mismatch
expected: Number
given: Any
in: e
compilation context...:
/home/ben/foo.rkt
context...:
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/utils/tc-utils.rkt:133:21: for-loop
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/utils/tc-utils.rkt:123:0: report-all-errors
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/typecheck/tc-toplevel.rkt:348:0: type-check
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/typecheck/tc-toplevel.rkt:591:0: tc-module
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/tc-setup.rkt:94:0: tc-module/full
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/typed-racket.rkt:23:4
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:363:0: compile-zo*
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:572:26
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:564:42
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:635:0: compile-root
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:737:4
/home/ben/code/racket/fork/pkgs/compiler-lib/compiler/commands/make.rkt:81:8: for-loop
/home/ben/code/racket/fork/pkgs/compiler-lib/compiler/commands/make.rkt: [running body]
/home/ben/code/racket/fork/racket/collects/raco/raco.rkt: [running body]
/home/ben/code/racket/fork/racket/collects/raco/main.rkt: [running body]
foo.rkt:10:12: Type Checker: type mismatch
expected: Number
given: Any
in: a
compilation context...:
/home/ben/foo.rkt
context...:
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/utils/tc-utils.rkt:133:21: for-loop
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/utils/tc-utils.rkt:123:0: report-all-errors
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/typecheck/tc-toplevel.rkt:348:0: type-check
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/typecheck/tc-toplevel.rkt:591:0: tc-module
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/tc-setup.rkt:94:0: tc-module/full
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/typed-racket.rkt:23:4
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:363:0: compile-zo*
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:572:26
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:564:42
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:635:0: compile-root
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:737:4
/home/ben/code/racket/fork/pkgs/compiler-lib/compiler/commands/make.rkt:81:8: for-loop
/home/ben/code/racket/fork/pkgs/compiler-lib/compiler/commands/make.rkt: [running body]
/home/ben/code/racket/fork/racket/collects/raco/raco.rkt: [running body]
/home/ben/code/racket/fork/racket/collects/raco/main.rkt: [running body]
Type Checker: Summary: 3 errors encountered
compilation context...:
/home/ben/foo.rkt
location...:
foo.rkt:10:19
foo.rkt:10:12
context...:
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/typecheck/tc-toplevel.rkt:348:0: type-check
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/typecheck/tc-toplevel.rkt:591:0: tc-module
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/tc-setup.rkt:94:0: tc-module/full
/home/ben/code/racket/fork/extra-pkgs/typed-racket/typed-racket-lib/typed-racket/typed-racket.rkt:23:4
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:363:0: compile-zo*
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:572:26
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:564:42
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:635:0: compile-root
/home/ben/code/racket/fork/racket/collects/compiler/cm.rkt:737:4
/home/ben/code/racket/fork/pkgs/compiler-lib/compiler/commands/make.rkt:81:8: for-loop
/home/ben/code/racket/fork/pkgs/compiler-lib/compiler/commands/make.rkt: [running body]
/home/ben/code/racket/fork/racket/collects/raco/raco.rkt: [running body]
/home/ben/code/racket/fork/racket/collects/raco/main.rkt: [running body]
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the supplied typed/racket program using define/match and the function annotation, then trace the type-checking path shown in the error context. Done means the example typechecks without the reported Any-versus-Number errors while preserving the annotated function signature.
Written by the indexing model from the issue text.
Assessment
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100