(** A program source file, read by the reader its extension names: [.fln] is the indented syntax ([Indent_reader]), anything else the paren syntax ([Reader]). Both give the same [Form.t], so nothing past this point knows which one a file was written in, and a program may mix them freely. Only program sources come through here. The prelude, the wire protocol and the registry's spellings are paren text the compiler writes itself, and read it with [Reader] directly. *) let indented_ext = ".fln" let paren_ext = ".flan" let is_indented path = Filename.check_suffix path indented_ext (** A file a package directory contributes, in either syntax. *) let is_source path = Filename.check_suffix path paren_ext || is_indented path let read_file path = if is_indented path then Indent_reader.read_file path else Reader.read_file path