mpickering (Matthew Pickering)Administrator
User

Projects

Today

  • Clear sailing ahead.

Tomorrow

  • Clear sailing ahead.

Sunday

  • Clear sailing ahead.

User Details

User Since
Dec 18 2014, 1:25 PM (131 w, 1 d)
Roles
Administrator
Availability
Available

Recent Activity

Tue, Jun 20

mpickering requested review of D3649: Use actual universal tvs in check for naughty record selectors.
Tue, Jun 20, 1:51 PM
mpickering updated the summary of D3649: Use actual universal tvs in check for naughty record selectors.
Tue, Jun 20, 1:50 PM

Fri, Jun 16

mpickering added inline comments to D3649: Use actual universal tvs in check for naughty record selectors.
Fri, Jun 16, 9:52 PM
mpickering added inline comments to D3651: Show only the number of modules in ghci.
Fri, Jun 16, 11:10 AM

Thu, Jun 15

mpickering added a comment to D3650: [WIP] Integrating prettyprint into GHC..

What ticket is this related to? Adding text as a dependency seems like a big change.

Thu, Jun 15, 8:05 AM
mpickering abandoned D3644: Use actual universal tvs in check for naughty record selectors.

I accidentally made a new revision.

Thu, Jun 15, 6:48 AM
mpickering created D3649: Use actual universal tvs in check for naughty record selectors.
Thu, Jun 15, 6:41 AM
mpickering planned changes to D3644: Use actual universal tvs in check for naughty record selectors.

This causes some tests to fail which I need to investigate.

Thu, Jun 15, 4:17 AM

Wed, Jun 14

mpickering updated the diff for D3644: Use actual universal tvs in check for naughty record selectors.

Update

Wed, Jun 14, 5:35 AM
mpickering created D3644: Use actual universal tvs in check for naughty record selectors.
Wed, Jun 14, 5:12 AM

Sun, Jun 11

mpickering added inline comments to D3636: Improve getNameToInstancesIndex.
Sun, Jun 11, 12:02 PM

May 18 2017

mpickering awarded Commit Bits to recipient: angerman.
May 18 2017, 4:33 AM

May 16 2017

mpickering added a comment to D3566: WIP: Make SpecConstr work across modules.

Thanks for looking David but I'm not sure this patch works properly yet at all. Do you have an idea of a small test I could add?

May 16 2017, 3:18 PM

May 14 2017

mpickering accepted D3584: Print warnings on parser failures (#12610)..

This looks like a sensible approach to me.

May 14 2017, 6:19 AM
mpickering added inline comments to D3584: Print warnings on parser failures (#12610)..
May 14 2017, 5:37 AM

May 11 2017

mpickering committed rGHCa3873e8cdec8: RnEnv refactoring (authored by mpickering).
RnEnv refactoring
May 11 2017, 5:57 PM
mpickering closed D3507: RnEnv refactoring by committing rGHCa3873e8cdec8: RnEnv refactoring.
May 11 2017, 5:57 PM
mpickering requested changes to D3571: Allow spliced patterns in pattern synonyms.

Could you possible add a test which tries using these pattern synonyms rather than just compiling the file?

May 11 2017, 11:33 AM
mpickering updated the diff for D3566: WIP: Make SpecConstr work across modules.
  • Remove traces
May 11 2017, 5:43 AM

May 10 2017

mpickering accepted D3547: Fix #13568, incorrect ambiguity error on identically-named data constructors with DataKinds disabled.
May 10 2017, 10:07 AM
mpickering updated the summary of D3566: WIP: Make SpecConstr work across modules.
May 10 2017, 9:55 AM
mpickering created D3566: WIP: Make SpecConstr work across modules.
May 10 2017, 9:53 AM
mpickering created D3565: Use Proxy rather than undefined in MatchLit.
May 10 2017, 9:48 AM
mpickering created D3564: Add Outputable instance for Node.
May 10 2017, 9:48 AM

May 9 2017

mpickering added inline comments to D3507: RnEnv refactoring.
May 9 2017, 5:11 PM

May 8 2017

mpickering requested changes to D3547: Fix #13568, incorrect ambiguity error on identically-named data constructors with DataKinds disabled.

Some test output needs updating.

May 8 2017, 12:39 PM
mpickering accepted D3547: Fix #13568, incorrect ambiguity error on identically-named data constructors with DataKinds disabled.
May 8 2017, 4:48 AM
mpickering added a comment to D3547: Fix #13568, incorrect ambiguity error on identically-named data constructors with DataKinds disabled.

This looks right. You just need to add the test which is already in the ticket as a failing test case. testsuite/tests/rename/should_fail would be a suitable place.

May 8 2017, 3:46 AM

May 5 2017

mpickering abandoned D3453: WIP: Remove new name logic from renamer.

Subsumed by D3507

May 5 2017, 5:11 AM

May 4 2017

mpickering created D3535: Add a failing test for T13644.
May 4 2017, 8:46 AM
mpickering added a comment to D3515: Implement sequential name lookup properly.

I got stuck adding the ASSERT as it was causing inscrutable parse errors.

May 4 2017, 8:46 AM

May 2 2017

mpickering updated the diff for D3507: RnEnv refactoring.
  • Comments
  • Small refactorings
May 2 2017, 5:59 AM
mpickering added a comment to D3515: Implement sequential name lookup properly.

I added a comment about DisambiguatedOccurrence but it seems quite straightforward to me and the one intended use-site immediately precedes it in the code. Is there anything else you would like changing in this patch?

May 2 2017, 5:19 AM
mpickering updated the diff for D3515: Implement sequential name lookup properly.
  • Add comment
May 2 2017, 5:19 AM
mpickering added a comment to D3515: Implement sequential name lookup properly.

This looks like a good example of when not to use Monoid, but at least some description of what the meaning of the monoid operation is would be a good thing.

May 2 2017, 5:19 AM

May 1 2017

mpickering added inline comments to D3515: Implement sequential name lookup properly.
May 1 2017, 12:15 PM
mpickering added inline comments to D3515: Implement sequential name lookup properly.
May 1 2017, 12:15 PM

Apr 30 2017

mpickering updated the Trac tickets for D3507: RnEnv refactoring.
Apr 30 2017, 5:56 PM
mpickering updated the summary of D3507: RnEnv refactoring.
Apr 30 2017, 5:52 PM
mpickering retitled D3507: RnEnv refactoring from WIP: RnEnv refactoring to RnEnv refactoring.
Apr 30 2017, 5:52 PM
mpickering updated the diff for D3507: RnEnv refactoring.
  • Remove dead code
  • Simplify and backwards compatify implementation of MaybeT msum
  • Remove commented out code
  • Move is_star and is_uni_star to RdrName
  • Cleanup
  • remove comment
Apr 30 2017, 5:50 PM
mpickering planned changes to D3507: RnEnv refactoring.

This now validates on 8.0. https://phabricator.haskell.org/B15572

Apr 30 2017, 3:42 PM
mpickering created D3515: Implement sequential name lookup properly.
Apr 30 2017, 3:34 PM
mpickering updated the diff for D3507: RnEnv refactoring.
  • Use a flag instead of checking for NoParent
Apr 30 2017, 2:16 PM
mpickering added a comment to D3514: Revert "Fix #10923 by fingerprinting optimization level.".

Why do you want to revert this? I think this is useful to have.

Apr 30 2017, 1:57 PM

Apr 29 2017

mpickering added a comment to D3507: RnEnv refactoring.

I think this will validate now but is it better than before? Maybe. It seemed that to fix the tests I had to progressively make things more ugly.

Apr 29 2017, 5:27 PM
mpickering updated the diff for D3507: RnEnv refactoring.
  • Fail if there is no parent on lookup
  • Pass the right thing to be printed into IncorrectParent
Apr 29 2017, 5:25 PM
mpickering updated the diff for D3507: RnEnv refactoring.
  • Remove tracing functions + comment
Apr 29 2017, 2:39 PM
mpickering updated the diff for D3507: RnEnv refactoring.
  • Lookup using GHCi lookup function for overloaded case as well
Apr 29 2017, 1:07 PM
mpickering updated the diff for D3507: RnEnv refactoring.
  • T13622 fix
  • Add LookupSub test
  • Prefer disambiguated occurences to ambiguous occurences
Apr 29 2017, 9:38 AM
mpickering updated the diff for D3507: RnEnv refactoring.
  • Fix test failures
Apr 29 2017, 7:29 AM

Apr 28 2017

mpickering planned changes to D3507: RnEnv refactoring.
Apr 28 2017, 5:01 AM
mpickering updated the diff for D3507: RnEnv refactoring.
  • Fix inverted logic in overloaded renamer
Apr 28 2017, 5:00 AM
mpickering retitled D3507: RnEnv refactoring from WIP: RnEnv refactoring Replace explicit call to `newGlobalBndr` with `lookupOrig` to WIP: RnEnv refactoring.
Apr 28 2017, 3:20 AM
mpickering created D3507: RnEnv refactoring.
Apr 28 2017, 3:19 AM

Apr 13 2017

mpickering requested changes to D3457: Introduce -dcore2core-summary flag.

Docs?

Apr 13 2017, 2:28 PM
mpickering added inline comments to D3454: Fix space leak in sortBy.
Apr 13 2017, 8:10 AM
mpickering updated the summary of D3454: Fix space leak in sortBy.
Apr 13 2017, 8:05 AM
Herald added a reviewer for D3454: Fix space leak in sortBy: austin.
Apr 13 2017, 8:03 AM
mpickering created D3453: WIP: Remove new name logic from renamer.
Apr 13 2017, 6:31 AM

Apr 12 2017

mpickering committed rGHCe07cd507ff87: Split up RnEnv into 4 modules, RnUnbound, RnUtils and RnFixity (authored by mpickering).
Split up RnEnv into 4 modules, RnUnbound, RnUtils and RnFixity
Apr 12 2017, 2:05 PM
mpickering closed D3436: Split up RnEnv into 4 modules, RnUnbound, RnUtils and RnFixity by committing rGHCe07cd507ff87: Split up RnEnv into 4 modules, RnUnbound, RnUtils and RnFixity.
Apr 12 2017, 2:05 PM
mpickering updated the diff for D3436: Split up RnEnv into 4 modules, RnUnbound, RnUtils and RnFixity.
  • New base commit
Apr 12 2017, 4:06 AM
mpickering added a comment to D3435: RnEnv cleanup.

This is the first step in a larger refactoring I plan in this module.

Apr 12 2017, 4:05 AM
mpickering updated the diff for D3435: RnEnv cleanup.
  • Fixup the broken tests, I think it will be better to fix this wrinkle about returning Just an arbritrary identifier
Apr 12 2017, 4:03 AM

Apr 10 2017

mpickering added reviewers for D3440: Caret diagnostics: Avoid decoding whole module if only specific line is needed: Rufflewind, trofi.
Apr 10 2017, 3:45 PM
mpickering added a dependency for D3436: Split up RnEnv into 4 modules, RnUnbound, RnUtils and RnFixity: D3435: RnEnv cleanup.
Apr 10 2017, 12:24 PM
mpickering added a dependent revision for D3435: RnEnv cleanup: D3436: Split up RnEnv into 4 modules, RnUnbound, RnUtils and RnFixity.
Apr 10 2017, 12:24 PM
mpickering planned changes to D3436: Split up RnEnv into 4 modules, RnUnbound, RnUtils and RnFixity.

It is failing because the base commit is D3435 which I still need to sort out.

Apr 10 2017, 12:24 PM

Apr 8 2017

mpickering planned changes to D3435: RnEnv cleanup.

This is quite subtle.

Apr 8 2017, 4:51 PM
Herald added a reviewer for D3436: Split up RnEnv into 4 modules, RnUnbound, RnUtils and RnFixity: austin.
Apr 8 2017, 2:39 PM
mpickering created D3435: RnEnv cleanup.
Apr 8 2017, 2:34 PM

Apr 7 2017

mpickering updated the summary of D3434: Allow qualified names to be children in export lists.
Apr 7 2017, 1:49 PM
mpickering created D3434: Allow qualified names to be children in export lists.
Apr 7 2017, 1:45 PM

Apr 4 2017

mpickering edited this Badge.
Apr 4 2017, 12:10 PM

Apr 3 2017

mpickering added a comment to D2424: UNPACK support for sums.

Is this patch still waiting to be reviewed @osa1 ?

Apr 3 2017, 4:59 PM
mpickering updated the diff for D3414: Replace Digraph's Node type synonym with a data type.
  • Update determinism001
Apr 3 2017, 4:35 PM
mpickering created D3414: Replace Digraph's Node type synonym with a data type.
Apr 3 2017, 4:29 AM

Mar 29 2017

mpickering added inline comments to D3392: Optimise common cases of GHC.setProgramDynFlags.
Mar 29 2017, 3:07 PM

Mar 27 2017

mpickering committed rGHC5025fe2435d0: -fspec-constr-keen docs typos [skip ci] (authored by mpickering).
-fspec-constr-keen docs typos [skip ci]
Mar 27 2017, 11:44 AM
mpickering committed rGHCd819e416a2a5: Only use locally bound variables in pattern synonym declarations (authored by mpickering).
Only use locally bound variables in pattern synonym declarations
Mar 27 2017, 5:28 AM
mpickering closed D3377: Only use locally bound variables in pattern synonym declarations by committing rGHCd819e416a2a5: Only use locally bound variables in pattern synonym declarations.
Mar 27 2017, 5:28 AM
mpickering committed rGHCa6ce7f338c88: Remove unused argument from importSuggestions (authored by mpickering).
Remove unused argument from importSuggestions
Mar 27 2017, 5:28 AM
mpickering closed D3376: Remove unused argument from importSuggestions by committing rGHCa6ce7f338c88: Remove unused argument from importSuggestions.
Mar 27 2017, 5:28 AM
mpickering updated the diff for D3377: Only use locally bound variables in pattern synonym declarations.

Rebase

Mar 27 2017, 5:25 AM

Mar 25 2017

mpickering added a comment to D3379: Allow operators as record pattern synonym fields.

It is the same as any other infix operator. You can set it with infix declarations.

Really? I can't seem to make it work with this patch. For instance, if you try to set (·) as infixr:

{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
module T13454 where

pattern MkOp :: Op -> Exp -> Exp -> Exp
pattern MkOp {(·), a, b} <- (splitOp -> Just ((·), a, b))
  where MkOp (·) a b      = a · b · b

infixr 5 ·

data Exp = Val Int | Add Exp Exp | Mul Exp Exp deriving Show

type Op = Exp -> Exp -> Exp

splitOp :: Exp -> Maybe (Op, Exp, Exp)
splitOp (Add a b) = Just (Add, a, b)
splitOp (Mul a b) = Just (Mul, a, b)
splitOp _         = Nothing

main :: IO ()
main = do
  print $ MkOp Add (Val 1) (Val 2)
  print $ Val 1 `Add` (Val 2 `Add` Val 2)

I would expect those two lines in main to print the same thing, but it doesn't:

Add (Add (Val 1) (Val 2)) (Val 2)
Add (Val 1) (Add (Val 2) (Val 2))

Also, this doesn't result in an error:

{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
module T13454 where

pattern MkOp :: Op -> Exp -> Exp -> Exp
pattern MkOp {(·), a, b} <- (splitOp -> Just ((·), a, b))
  where MkOp (·) a b      = a · b · b

infix 5 ·

data Exp = Val Int | Add Exp Exp | Mul Exp Exp deriving Show

type Op = Exp -> Exp -> Exp

splitOp :: Exp -> Maybe (Op, Exp, Exp)
splitOp (Add a b) = Just (Add, a, b)
splitOp (Mul a b) = Just (Mul, a, b)
splitOp _         = Nothing
Mar 25 2017, 5:53 PM
mpickering added a comment to D3379: Allow operators as record pattern synonym fields.

One thing I'm not clear on is how the fixity of record pattern synonym field operators work. Is there a default fixity? Can it be configured? Is whatever the current behavior is documented in the users' guide?

Mar 25 2017, 3:52 AM

Mar 24 2017

mpickering retitled D3378: Print module when dumping rules from Print module when dumping rule to Print module when dumping rules.
Mar 24 2017, 5:50 PM
mpickering created D3379: Allow operators as record pattern synonym fields.
Mar 24 2017, 5:47 PM
mpickering created D3378: Print module when dumping rules.
Mar 24 2017, 5:25 PM
mpickering added a comment to D3361: Show valid substitutions for typed holes.

Yes, this is a good idea but the implementation of the function could be improved.

Mar 24 2017, 9:58 AM

Mar 23 2017

mpickering added inline comments to D3377: Only use locally bound variables in pattern synonym declarations.
Mar 23 2017, 10:06 AM
mpickering updated the diff for D3377: Only use locally bound variables in pattern synonym declarations.
  • updated comments
Mar 23 2017, 10:05 AM
mpickering created D3377: Only use locally bound variables in pattern synonym declarations.
Mar 23 2017, 9:20 AM
mpickering created D3376: Remove unused argument from importSuggestions.
Mar 23 2017, 9:16 AM

Mar 21 2017

mpickering accepted D3361: Show valid substitutions for typed holes.

Good job!

Mar 21 2017, 3:51 PM
mpickering added inline comments to D3361: Show valid substitutions for typed holes.
Mar 21 2017, 6:25 AM
mpickering requested changes to D3361: Show valid substitutions for typed holes.

Ok the code looks good now but still some error message wibbles I think.

Mar 21 2017, 5:06 AM
mpickering created D3371: Improve tracing in OccurAnal.
Mar 21 2017, 4:49 AM

Mar 20 2017

mpickering added a comment to D3361: Show valid substitutions for typed holes.
In D3361#96734, @Tritlo wrote:

So I've tested the performance a bit, and it does not seem to slow it down appreciably. I generated a file with a lot of Ids, with the following

main :: IO ()
main = writeFile f $ unlines $ "module ManyIds where":(map out [0..10000])
 where f = "ManyIds.hs"
       out i = "a" ++ show i ++ " :: Int -> Int\n"
            ++ "a" ++ show i ++ " _ = " ++ show i

in another file, manyIdsTest.hs, was the following:

import ManyIds

test :: Int -> Int
test = _

main :: IO ()
main = return ()

Compiling ManyIds took some time with both my HEAD and GHC 8.0.2, which is why I reduced the number of identifiers down to 10_000 from 100_000.

Timing it with unix time, I got the following:
ghc -o test manyIdsTest.hs 20,28s user 0,83s system 91% cpu 23,041 total
./inplace/bin/ghc-stage2 -o test manyIdsTest.hs -fno-max-valid-substitutions 21,59s user 1,38s system 88% cpu 25,874 total
So even with -fno-max-valid-substitutions, it's not appreciably slower (I suspect the extra second is mostly from writing stdout to a file)

Mar 20 2017, 12:52 PM