[GHC] #12609: unused-top-binds wrongly warns about underscore-prefixed field names when DuplicateRecordFields enabled
#12609: unused-top-binds wrongly warns about underscore-prefixed field names when DuplicateRecordFields enabled -------------------------------------+------------------------------------- Reporter: jml | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- Given this code: {{{#!hs module Main (main) where data Foo = Foo { _foo :: String , _bar :: String } deriving (Eq, Show) main :: IO () main = do let x = Foo "apple" "bear" putStrLn $ "x = " ++ show x }}} Saved as `unused-fields.hs` Then with ghc 8.0.1: {{{ $ ghc --version The Glorious Glasgow Haskell Compilation System, version 8.0.1 }}} The following command will compile without error or warning: {{{ $ ghc -Wall -Werror -o unused-fields ./unused-fields.hs }}} But if `DuplicateRecordFields` is enabled, then: {{{ $ ghc -Wall -Werror -o unused-fields ./unused-fields.hs -XDuplicateRecordFields [1 of 1] Compiling Main ( unused-fields.hs, unused-fields.o ) [flags changed] unused-fields.hs:21:11: warning: [-Wunused-top-binds] Defined but not used: ‘_foo’ unused-fields.hs:22:11: warning: [-Wunused-top-binds] Defined but not used: ‘_bar’ <no location info>: error: Failing due to -Werror. }}} I would have no warnings, since `_foo` and `_bar` have underscore prefixes, which is a documented way of selectively disabling this warning. (c.f. https://downloads.haskell.org/~ghc/latest/docs/html/users_guide /using-warnings.html#ghc-flag--Wunused-top-binds). Details requested by https://ghc.haskell.org/trac/ghc/wiki/ReportABug: {{{ $ gcc --version Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 8.0.0 (clang-800.0.38) Target: x86_64-apple-darwin15.6.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin }}} GOOD (without -XDuplicateRecordFields) {{{ $ ghc -dcore-lint -v -Wall -Werror -o unused-fields ./unused-fields.hs Glasgow Haskell Compiler, Version 8.0.1, stage 2 booted by GHC version 7.10.3 Using binary package database: /nix/store/vvn40k4257a2f6dlps52jnff6qa41ph3-ghc-8.0.1/lib/ghc-8.0.1/package.conf.d/package.cache loading package database /nix/store/vvn40k4257a2f6dlps52jnff6qa41ph3-ghc-8.0.1/lib/ghc-8.0.1/package.conf.d wired-in package ghc-prim mapped to ghc-prim-0.5.0.0 wired-in package integer-gmp mapped to integer-gmp-1.0.0.1 wired-in package base mapped to base-4.9.0.0 wired-in package rts mapped to rts wired-in package template-haskell mapped to template-haskell-2.11.0.0 wired-in package ghc mapped to ghc-8.0.1 wired-in package dph-seq not found. wired-in package dph-par not found. Hsc static flags: loading package database /nix/store/vvn40k4257a2f6dlps52jnff6qa41ph3-ghc-8.0.1/lib/ghc-8.0.1/package.conf.d wired-in package ghc-prim mapped to ghc-prim-0.5.0.0 wired-in package integer-gmp mapped to integer-gmp-1.0.0.1 wired-in package base mapped to base-4.9.0.0 wired-in package rts mapped to rts-1.0 wired-in package template-haskell mapped to template-haskell-2.11.0.0 wired-in package ghc mapped to ghc-8.0.1 wired-in package dph-seq not found. wired-in package dph-par not found. *** Chasing dependencies: Chasing modules from: *unused-fields.hs !!! Chasing dependencies: finished in 0.68 milliseconds, allocated 0.777 megabytes Stable obj: [Main] Stable BCO: [] Ready for upsweep [NONREC ModSummary { ms_hs_date = 2016-09-22 08:27:24 UTC ms_mod = Main, ms_textual_imps = [(Nothing, Prelude)] ms_srcimps = [] }] *** Deleting temp files: Deleting: compile: input file unused-fields.hs *** Checking old interface for Main: [1 of 1] Skipping Main ( unused-fields.hs, unused-fields.o ) Upsweep completely successful. *** Deleting temp files: Deleting: link: linkables are ... LinkableM (2016-09-22 08:45:48 UTC) Main [DotO unused-fields.o] Linking unused-fields ... Created temporary directory: /var/folders/6q/jpykk8bn6dq68ynzm6c1r7c40000gn/T/ghc62639_0 *** C Compiler: /nix/store/a5f6qqgzgmmvw0xkvlfdsjzaprmnlz2s-clang-wrapper-3.7.1/bin/cc -m64 -fno-stack-protector -DTABLES_NEXT_TO_CODE -c /var/folders/6q/jpykk8bn6dq68ynzm6c1r7c40000gn/T/ghc62639_0/ghc_1.c -o /var/folders/6q/jpykk8bn6dq68ynzm6c1r7c40000gn/T/ghc62639_0/ghc_2.o -fno- common -U__PIC__ -D__PIC__ -I/nix/store/vvn40k4257a2f6dlps52jnff6qa41ph3-ghc-8.0.1/lib/ghc-8.0.1/include *** Linker: /nix/store/a5f6qqgzgmmvw0xkvlfdsjzaprmnlz2s-clang-wrapper-3.7.1/bin/cc -m64 -fno-stack-protector -DTABLES_NEXT_TO_CODE -m64 -o unused-fields -Wl,-no_compact_unwind unused-fields.o -L/nix/store/vvn40k4257a2f6dlps52jnff6qa41ph3-ghc-8.0.1/lib/ghc-8.0.1/base-4.9.0.0 -L/nix/store/8dkzvp7d7vpprc8cblmjcyyyzyy9940i-libiconv-osx-10.9.5/lib -L/nix/store/vvn40k4257a2f6dlps52jnff6qa41ph3-ghc-8.0.1/lib/ghc-8.0.1 /integer-gmp-1.0.0.1 -L/nix/store/8b7big21k9ipi44mqlnp8njbkncwhh27-gmp-6.1.0/lib -L/nix/store/vvn40k4257a2f6dlps52jnff6qa41ph3-ghc-8.0.1/lib/ghc-8.0.1/ghc- prim-0.5.0.0 -L/nix/store/vvn40k4257a2f6dlps52jnff6qa41ph3-ghc-8.0.1/lib/ghc-8.0.1/rts /var/folders/6q/jpykk8bn6dq68ynzm6c1r7c40000gn/T/ghc62639_0/ghc_2.o -Wl,-u,_ghczmprim_GHCziTypes_Izh_static_info -Wl,-u,_ghczmprim_GHCziTypes_Czh_static_info -Wl,-u,_ghczmprim_GHCziTypes_Fzh_static_info -Wl,-u,_ghczmprim_GHCziTypes_Dzh_static_info -Wl,-u,_base_GHCziPtr_Ptr_static_info -Wl,-u,_ghczmprim_GHCziTypes_Wzh_static_info -Wl,-u,_base_GHCziInt_I8zh_static_info -Wl,-u,_base_GHCziInt_I16zh_static_info -Wl,-u,_base_GHCziInt_I32zh_static_info -Wl,-u,_base_GHCziInt_I64zh_static_info -Wl,-u,_base_GHCziWord_W8zh_static_info -Wl,-u,_base_GHCziWord_W16zh_static_info -Wl,-u,_base_GHCziWord_W32zh_static_info -Wl,-u,_base_GHCziWord_W64zh_static_info -Wl,-u,_base_GHCziStable_StablePtr_static_info -Wl,-u,_ghczmprim_GHCziTypes_Izh_con_info -Wl,-u,_ghczmprim_GHCziTypes_Czh_con_info -Wl,-u,_ghczmprim_GHCziTypes_Fzh_con_info -Wl,-u,_ghczmprim_GHCziTypes_Dzh_con_info -Wl,-u,_base_GHCziPtr_Ptr_con_info -Wl,-u,_base_GHCziPtr_FunPtr_con_info -Wl,-u,_base_GHCziStable_StablePtr_con_info -Wl,-u,_ghczmprim_GHCziTypes_False_closure -Wl,-u,_ghczmprim_GHCziTypes_True_closure -Wl,-u,_base_GHCziPack_unpackCString_closure -Wl,-u,_base_GHCziIOziException_stackOverflow_closure -Wl,-u,_base_GHCziIOziException_heapOverflow_closure -Wl,-u,_base_ControlziExceptionziBase_nonTermination_closure -Wl,-u,_base_GHCziIOziException_blockedIndefinitelyOnMVar_closure -Wl,-u,_base_GHCziIOziException_blockedIndefinitelyOnSTM_closure -Wl,-u,_base_GHCziIOziException_allocationLimitExceeded_closure -Wl,-u,_base_ControlziExceptionziBase_nestedAtomically_closure -Wl,-u,_base_GHCziEventziThread_blockedOnBadFD_closure -Wl,-u,_base_GHCziWeak_runFinalizzerBatch_closure -Wl,-u,_base_GHCziTopHandler_flushStdHandles_closure -Wl,-u,_base_GHCziTopHandler_runIO_closure -Wl,-u,_base_GHCziTopHandler_runNonIO_closure -Wl,-u,_base_GHCziConcziIO_ensureIOManagerIsRunning_closure -Wl,-u,_base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure -Wl,-u,_base_GHCziConcziSync_runSparks_closure -Wl,-u,_base_GHCziConcziSignal_runHandlersPtr_closure -Wl,-search_paths_first -lHSbase-4.9.0.0 -lHSinteger-gmp-1.0.0.1 -lHSghc- prim-0.5.0.0 -lHSrts -lCffi -liconv -lgmp -lm -ldl link: done *** Deleting temp files: Deleting: /var/folders/6q/jpykk8bn6dq68ynzm6c1r7c40000gn/T/ghc62639_0/ghc_2.o /var/folders/6q/jpykk8bn6dq68ynzm6c1r7c40000gn/T/ghc62639_0/ghc_1.c *** Deleting temp dirs: Deleting: /var/folders/6q/jpykk8bn6dq68ynzm6c1r7c40000gn/T/ghc62639_0 }}} BAD {{{ $ ghc -dcore-lint -v -Wall -Werror -o unused-fields ./unused-fields.hs -XDuplicateRecordFields Glasgow Haskell Compiler, Version 8.0.1, stage 2 booted by GHC version 7.10.3 Using binary package database: /nix/store/vvn40k4257a2f6dlps52jnff6qa41ph3-ghc-8.0.1/lib/ghc-8.0.1/package.conf.d/package.cache loading package database /nix/store/vvn40k4257a2f6dlps52jnff6qa41ph3-ghc-8.0.1/lib/ghc-8.0.1/package.conf.d wired-in package ghc-prim mapped to ghc-prim-0.5.0.0 wired-in package integer-gmp mapped to integer-gmp-1.0.0.1 wired-in package base mapped to base-4.9.0.0 wired-in package rts mapped to rts wired-in package template-haskell mapped to template-haskell-2.11.0.0 wired-in package ghc mapped to ghc-8.0.1 wired-in package dph-seq not found. wired-in package dph-par not found. Hsc static flags: loading package database /nix/store/vvn40k4257a2f6dlps52jnff6qa41ph3-ghc-8.0.1/lib/ghc-8.0.1/package.conf.d wired-in package ghc-prim mapped to ghc-prim-0.5.0.0 wired-in package integer-gmp mapped to integer-gmp-1.0.0.1 wired-in package base mapped to base-4.9.0.0 wired-in package rts mapped to rts-1.0 wired-in package template-haskell mapped to template-haskell-2.11.0.0 wired-in package ghc mapped to ghc-8.0.1 wired-in package dph-seq not found. wired-in package dph-par not found. *** Chasing dependencies: Chasing modules from: *unused-fields.hs !!! Chasing dependencies: finished in 1.05 milliseconds, allocated 0.777 megabytes Stable obj: [Main] Stable BCO: [] Ready for upsweep [NONREC ModSummary { ms_hs_date = 2016-09-22 08:27:24 UTC ms_mod = Main, ms_textual_imps = [(Nothing, Prelude)] ms_srcimps = [] }] *** Deleting temp files: Deleting: compile: input file unused-fields.hs *** Checking old interface for Main: [1 of 1] Compiling Main ( unused-fields.hs, unused-fields.o ) [flags changed] *** Parser [Main]: !!! Parser [Main]: finished in 1.27 milliseconds, allocated 0.517 megabytes *** Renamer/typechecker [Main]: !!! Renamer/typechecker [Main]: finished in 128.27 milliseconds, allocated 49.950 megabytes *** Desugar [Main]: Result size of Desugar (after optimization) = {terms: 141, types: 94, coercions: 0} *** Core Linted result of Desugar (after optimization): !!! Desugar [Main]: finished in 5.14 milliseconds, allocated 1.194 megabytes unused-fields.hs:22:11: warning: [-Wunused-top-binds] Defined but not used: ‘_foo’ unused-fields.hs:23:11: warning: [-Wunused-top-binds] Defined but not used: ‘_bar’ <no location info>: error: Failing due to -Werror. Upsweep partially successful. *** Deleting temp files: Deleting: link(batch): upsweep (partially) failed OR Main.main not exported; not linking. *** Deleting temp files: Deleting: *** Deleting temp dirs: Deleting: }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12609> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#12609: unused-top-binds wrongly warns about underscore-prefixed field names when DuplicateRecordFields enabled -------------------------------------+------------------------------------- Reporter: jml | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: newcomer Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by mpickering): * keywords: => newcomer -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12609#comment:1> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#12609: unused-top-binds wrongly warns about underscore-prefixed field names when DuplicateRecordFields enabled -------------------------------------+------------------------------------- Reporter: jml | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: newcomer, ORF Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by simonpj): * keywords: newcomer => newcomer, ORF * cc: adamgundry (added) Comment: Adam, might you look? -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12609#comment:2> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#12609: unused-top-binds wrongly warns about underscore-prefixed field names when DuplicateRecordFields enabled -------------------------------------+------------------------------------- Reporter: jml | Owner: adamgundry Type: bug | Status: new Priority: normal | Milestone: 8.2.1 Component: Compiler | Version: 8.0.1 Resolution: | Keywords: newcomer, ORF Operating System: Unknown/Multiple | Architecture: Type of failure: Incorrect | Unknown/Multiple warning at compile-time | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by adamgundry): * owner: => adamgundry * failure: None/Unknown => Incorrect warning at compile-time * milestone: => 8.2.1 Comment: @jml thanks for the report. I'll fix. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12609#comment:3> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#12609: unused-top-binds wrongly warns about underscore-prefixed field names when DuplicateRecordFields enabled -------------------------------------+------------------------------------- Reporter: jml | Owner: adamgundry Type: bug | Status: patch Priority: normal | Milestone: 8.2.1 Component: Compiler | Version: 8.0.1 Resolution: | Keywords: newcomer, ORF Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: Incorrect | Test Case: warning at compile-time | overloadedrecflds/should_compile/T12609 Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D2549 Wiki Page: | -------------------------------------+------------------------------------- Changes (by adamgundry): * testcase: => overloadedrecflds/should_compile/T12609 * status: new => patch * differential: => Phab:D2549 -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12609#comment:4> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#12609: unused-top-binds wrongly warns about underscore-prefixed field names when DuplicateRecordFields enabled -------------------------------------+------------------------------------- Reporter: jml | Owner: adamgundry Type: bug | Status: patch Priority: normal | Milestone: 8.2.1 Component: Compiler | Version: 8.0.1 Resolution: | Keywords: newcomer, ORF Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: Incorrect | Test Case: warning at compile-time | overloadedrecflds/should_compile/T12609 Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D2549 Wiki Page: | -------------------------------------+------------------------------------- Comment (by Ben Gamari <ben@…>): In [changeset:"48ff0843eee29313cc2da14c04dc57f6589ab040/ghc" 48ff0843/ghc]: {{{ #!CommitTicketReference repository="ghc" revision="48ff0843eee29313cc2da14c04dc57f6589ab040" Do not warn about unused underscore-prefixed fields (fixes Trac #12609) When DuplicateRecordFields is enabled, the mangling of selector names was causing them to be reported as unused even if prefixed by an underscore. This corrects the OccName used by the check. Test Plan: New test overloadedrecflds/should_compile/T12609 Reviewers: austin, bgamari Reviewed By: bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2549 GHC Trac Issues: #12609 }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12609#comment:5> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#12609: unused-top-binds wrongly warns about underscore-prefixed field names when DuplicateRecordFields enabled -------------------------------------+------------------------------------- Reporter: jml | Owner: adamgundry Type: bug | Status: closed Priority: normal | Milestone: 8.2.1 Component: Compiler | Version: 8.0.1 Resolution: fixed | Keywords: newcomer, ORF Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: Incorrect | Test Case: warning at compile-time | overloadedrecflds/should_compile/T12609 Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D2549 Wiki Page: | -------------------------------------+------------------------------------- Changes (by bgamari): * status: patch => closed * resolution: => fixed -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12609#comment:6> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#12609: unused-top-binds wrongly warns about underscore-prefixed field names when DuplicateRecordFields enabled -------------------------------------+------------------------------------- Reporter: jml | Owner: adamgundry Type: bug | Status: merge Priority: normal | Milestone: 8.0.2 Component: Compiler | Version: 8.0.1 Resolution: fixed | Keywords: newcomer, ORF Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: Incorrect | Test Case: warning at compile-time | overloadedrecflds/should_compile/T12609 Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D2549 Wiki Page: | -------------------------------------+------------------------------------- Changes (by bgamari): * status: closed => merge * milestone: 8.2.1 => 8.0.2 Comment: Second thoughts, perhaps we should try merging this. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12609#comment:7> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
#12609: unused-top-binds wrongly warns about underscore-prefixed field names when DuplicateRecordFields enabled -------------------------------------+------------------------------------- Reporter: jml | Owner: adamgundry Type: bug | Status: closed Priority: normal | Milestone: 8.0.2 Component: Compiler | Version: 8.0.1 Resolution: fixed | Keywords: newcomer, ORF Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: Incorrect | Test Case: warning at compile-time | overloadedrecflds/should_compile/T12609 Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D2549 Wiki Page: | -------------------------------------+------------------------------------- Changes (by bgamari): * status: merge => closed Comment: comment:5 merged to `ghc-8.0` as 63ce9ba2f439f4e295ff0791d783eb2103d89843. -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12609#comment:8> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler
participants (1)
-
GHC