<NME> LetIn.txt
<BEF> Elm File
  ElmValueDeclaration(VALUE_DECLARATION)
    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
      PsiElement(LOWER_CASE_IDENTIFIER)('f1')
    PsiWhiteSpace(' ')
    PsiElement(EQ)('=')
    PsiWhiteSpace(' ')
    ElmLetInExpr(LET_IN_EXPR)
      PsiElement(LET)('let')
      PsiErrorElement:VIRTUAL_OPEN_SECTION expected
        <empty list>
  PsiElement(VIRTUAL_END_DECL)('\n')
  PsiWhiteSpace('\n')
  ElmValueDeclaration(VALUE_DECLARATION)
    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
      PsiElement(LOWER_CASE_IDENTIFIER)('f2')
    PsiWhiteSpace(' ')
    PsiElement(EQ)('=')
    PsiWhiteSpace(' ')
    ElmLetInExpr(LET_IN_EXPR)
      PsiElement(LET)('let')
      PsiWhiteSpace('\n')
      PsiElement(VIRTUAL_OPEN_SECTION)('        ')
      PsiElement(LOWER_CASE_IDENTIFIER)('x')
      PsiErrorElement:COLON, EQ, LEFT_BRACE, LEFT_PARENTHESIS, LEFT_SQUARE_BRACKET, LOWER_CASE_IDENTIFIER, NUMBER_LITERAL, OPEN_CHAR, OPEN_QUOTE or UNDERSCORE expected
        <empty list>
      PsiErrorElement:IN expected
        <empty list>
  PsiElement(VIRTUAL_END_DECL)('\n')
  PsiWhiteSpace('\n')
  ElmValueDeclaration(VALUE_DECLARATION)
    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
      PsiElement(LOWER_CASE_IDENTIFIER)('f3')
    PsiWhiteSpace(' ')
    PsiElement(EQ)('=')
    PsiWhiteSpace(' ')
    ElmLetInExpr(LET_IN_EXPR)
      PsiElement(LET)('let')
      PsiWhiteSpace('\n')
      PsiElement(VIRTUAL_OPEN_SECTION)('        ')
      ElmValueDeclaration(VALUE_DECLARATION)
        ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
          PsiElement(LOWER_CASE_IDENTIFIER)('x')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiErrorElement:<expr> expected
          <empty list>
      PsiErrorElement:IN expected
        <empty list>
  PsiElement(VIRTUAL_END_DECL)('\n')
  PsiWhiteSpace('\n')
  ElmValueDeclaration(VALUE_DECLARATION)
    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
      PsiElement(LOWER_CASE_IDENTIFIER)('f4')
    PsiWhiteSpace(' ')
    PsiElement(EQ)('=')
    PsiWhiteSpace(' ')
    ElmLetInExpr(LET_IN_EXPR)
      PsiElement(LET)('let')
      PsiWhiteSpace('\n')
      PsiElement(VIRTUAL_OPEN_SECTION)('        ')
      ElmValueDeclaration(VALUE_DECLARATION)
        ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
          PsiElement(LOWER_CASE_IDENTIFIER)('x')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        ElmNumberConstantExpr(NUMBER_CONSTANT_EXPR)
          PsiElement(NUMBER_LITERAL)('0')
      PsiErrorElement:IN expected
        <empty list>
  PsiElement(VIRTUAL_END_DECL)('\n')
  PsiWhiteSpace('\n')
  PsiWhiteSpace('\n')
  ElmValueDeclaration(VALUE_DECLARATION)
    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
      PsiElement(LOWER_CASE_IDENTIFIER)('f5')
    PsiWhiteSpace(' ')
    PsiElement(EQ)('=')
    PsiWhiteSpace(' ')
    ElmLetInExpr(LET_IN_EXPR)
      PsiElement(LET)('let')
      PsiWhiteSpace('\n')
      PsiElement(VIRTUAL_OPEN_SECTION)('        ')
      ElmValueDeclaration(VALUE_DECLARATION)
        ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
          PsiElement(LOWER_CASE_IDENTIFIER)('x')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        ElmNumberConstantExpr(NUMBER_CONSTANT_EXPR)
          PsiElement(NUMBER_LITERAL)('0')
      PsiElement(VIRTUAL_END_DECL)('\n')
      PsiWhiteSpace('        ')
      PsiErrorElement:<type annotation> or <value declaration> expected, got 'in'
        PsiElement(IN)('in')
      PsiErrorElement:IN expected
        <empty list>
  PsiElement(VIRTUAL_END_DECL)('\n')
  PsiWhiteSpace('\n')
  ElmValueDeclaration(VALUE_DECLARATION)
    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
      PsiElement(LOWER_CASE_IDENTIFIER)('f6')
    PsiWhiteSpace(' ')
    PsiElement(EQ)('=')
    PsiWhiteSpace(' ')
    ElmLetInExpr(LET_IN_EXPR)
      PsiElement(LET)('let')
      PsiWhiteSpace('\n')
      PsiElement(VIRTUAL_OPEN_SECTION)('        ')
      ElmValueDeclaration(VALUE_DECLARATION)
        ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
          PsiElement(LOWER_CASE_IDENTIFIER)('x')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        ElmNumberConstantExpr(NUMBER_CONSTANT_EXPR)
          PsiElement(NUMBER_LITERAL)('0')
      PsiElement(VIRTUAL_END_SECTION)('\n')
      PsiWhiteSpace('     ')
      PsiElement(IN)('in')
      PsiErrorElement:<expr> expected
        <empty list>
  PsiElement(VIRTUAL_END_DECL)('\n')
  PsiWhiteSpace('\n')
  ElmValueDeclaration(VALUE_DECLARATION)
    ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
      PsiElement(LOWER_CASE_IDENTIFIER)('f7')
    PsiWhiteSpace(' ')
    PsiElement(EQ)('=')
    PsiWhiteSpace(' ')
    ElmLetInExpr(LET_IN_EXPR)
      PsiElement(LET)('let')
      PsiWhiteSpace('\n')
      PsiElement(VIRTUAL_OPEN_SECTION)('        ')
      ElmValueDeclaration(VALUE_DECLARATION)
        ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
          PsiElement(LOWER_CASE_IDENTIFIER)('x')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiErrorElement:<expr> expected, got 'import'
          <empty list>
      PsiWhiteSpace(' ')
      PsiElement(IMPORT)('import')
      PsiWhiteSpace(' ')
      PsiElement(UPPER_CASE_IDENTIFIER)('Garbage')
      PsiElement(VIRTUAL_END_DECL)('\n')
      PsiWhiteSpace('        ')
      ElmValueDeclaration(VALUE_DECLARATION)
        ElmFunctionDeclarationLeft(FUNCTION_DECLARATION_LEFT)
          PsiElement(LOWER_CASE_IDENTIFIER)('y')
        PsiWhiteSpace(' ')
        PsiElement(EQ)('=')
        PsiWhiteSpace(' ')
        ElmNumberConstantExpr(NUMBER_CONSTANT_EXPR)
          PsiElement(NUMBER_LITERAL)('1')
      PsiElement(VIRTUAL_END_SECTION)('\n')
      PsiWhiteSpace('     ')
      PsiElement(IN)('in')
      PsiWhiteSpace('\n')
      PsiWhiteSpace('        ')
      ElmValueExpr(VALUE_EXPR)
        ElmValueQID(VALUE_QID)
          PsiElement(LOWER_CASE_IDENTIFIER)('y')
<MSG> Remove support for Elm 0.18 (#673)

* Removed nearly all code related to Elm 0.18
* Remove top-level destructuring edge case from type inference
* Remove support for partially exposing union constructors
* Remove dead tests
* Add an error inspection for top-level destructuring
<DFF> @@ -92,7 +92,7 @@ Elm File
           PsiElement(NUMBER_LITERAL)('0')
       PsiElement(VIRTUAL_END_DECL)('\n')
       PsiWhiteSpace('        ')
-      PsiErrorElement:<type annotation> or <value declaration> expected, got 'in'
+      PsiErrorElement:<value declaration> or LOWER_CASE_IDENTIFIER expected, got 'in'
         PsiElement(IN)('in')
       PsiErrorElement:IN expected
         <empty list>

Remove support for Elm 0.18 (#673)