     }
 
     guard !pieces.isEmpty else {
-      throw engine.diagnose(.expected(diagType), node: currentToken)
+      throw expected(diagType)
     }
     return pieces
   }

    case .identifier(_):
      return try self.parseFunctionDecl()
    default:
      throw engine.diagnose(.expected("declaration"), node: currentToken)
    }
  }


    guard let token = currentToken else {
      return engine.diagnose(.unexpectedEOF, node: highlightedToken)
    }
    let msg = Diagnostic.Message.unexpectedToken(token, expected: expected)
    return engine.diagnose(msg, node: highlightedToken) {
      if let tok = highlightedToken {
        $0.highlight(tok)
      }
    }
  }

