       return jsNoop()
 
     dataName = ctx.definitionName()
+    paramLabelsIn = (params = []) ->
+      map _labelName, (filter _is, (map _fst, _labeled _validTerms params))
 
     # Types, Arity
     {fieldTypes, dataType} = findDataType ctx, typeArgLists, typeParams, dataName

  typeVars = map ((name) -> new TypeVariable name, (lookupInMap kinds, name)), varNames
  dataType: (substitute freshingSub,
    (applyKindFn (new TypeConstr dataName, dataKind), typeVars...))
  fieldTypes: (map ((types) -> if types then substituteList freshingSub, types), fieldTypes)

ms.record = ms_record = (ctx, call) ->
    args = _validArguments call

    # Translate
    concat (for [constr, params] in defs
      identifier = validIdentifier constr.symbol
      paramLabels = paramLabelsIn params
      paramNames = paramLabels.map(validIdentifier)

      constrValue = (jsAssignStatement "#{identifier}._value",
