Skip to content

Warn when [] is used with NonEmpty and OverloadedLists

Motivation

Consider this code:

{-# LANGUAGE OverloadedLists #-}

import Data.List.NonEmpty

badNE :: NonEmpty a
badNE = []

badNE will be bottom at runtime, despite a lack of warnings at compile time.

Proposal

When the OverloadedLists extension is enabled, and [] is used in the code somewhere that a NonEmpty is expected, a warning should be generated. This is similar to how we currently generate a -Woverflowed-literals warning when a negative numeric literal is used somewhere that a Natural is expected.

Edited by Joseph C. Sible
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information