]> git.wincent.com - docvim.git/commit
Try to trick linter about duplication
authorGreg Hurrell <greg@hurrell.net>
Tue, 7 Jun 2016 14:29:42 +0000 (07:29 -0700)
committerGreg Hurrell <greg@hurrell.net>
Tue, 7 Jun 2016 14:29:42 +0000 (07:29 -0700)
commit3ae57face7a13c8ceec60b4e64c48ee6b26520ea
tree787094ae2d903a9b7cd24ad514f6600a85f7f348
parent217b98c6d36e1a93f15e516ff45c4ac00a77feca
Try to trick linter about duplication

It's been warning about this since forever:

```
Found:
  first <- firstLine
  rest <- many otherLine
  let nodes = concatMap appendWhitespace (first : rest)
  let compressed = compress nodes
  return
    (if last compressed == Whitespace then init compressed else
       compressed)

Why not:
  Combine with lib/Docvim/Parse.hs:202:7

lib/Docvim/Parse.hs:164:7: Warning: Reduce duplication
Found:
  first <- firstLine
  rest <- many otherLine
  let nodes = concatMap appendWhitespace (first : rest)
  let compressed = compress nodes
  return
    (if last compressed == Whitespace then init compressed else
       compressed)

Why not:
  Combine with lib/Docvim/Parse.hs:285:7
```

However, it is too smart. Even with this change, it still complains:

```
Found:
  first <- firstLine
  rest <- many otherLine
  let nodes = concatMap appendWhitespace (first : rest)
  let compressed = compress nodes
  return
    (if last compressed == Whitespace then init compressed else
       compressed)

Why not:
  Combine with lib/Docvim/Parse.hs:282:7

lib/Docvim/Parse.hs:165:7: Suggestion: Reduce duplication
Found:
  rest <- many otherLine
  let nodes = concatMap appendWhitespace (first : rest)
  let compressed = compress nodes
  return
    (if last compressed == Whitespace then init compressed else
       compressed)

Why not:
  Combine with lib/Docvim/Parse.hs:203:7
```

This one is tricky to factor out because of the dependence on bindings visible
within the scope of the defined functions, and also the monadic execution
context. I think the linter *is* probably right that there is a code smell here,
though; I just have to figure out how to remove it.
lib/Docvim/Parse.hs