-extern void format_string PROTO((FILE *, unsigned char *, int));
-extern tree mkbinop PROTO((char *, tree, tree));
-extern tree mkinfixop PROTO((char *, tree, tree));
-extern list type2context PROTO((ttype));
-extern pbinding createpat PROTO((list, binding));
-extern void process_args PROTO((int, char **));
-extern void hash_init PROTO((void));
-extern void print_hash_table PROTO((void));
-extern long int hash_index PROTO((id));
-extern void yyinit PROTO((void));
-extern int yyparse PROTO((void));
-extern int yylex PROTO((void));
-extern void setyyin PROTO((char *));
-extern void yyerror PROTO((char *));
-extern void error PROTO((char *));
-extern void hsperror PROTO((char *));
-extern void enteriscope PROTO((void));
-extern void exposeis PROTO((void));
-extern void makeinfix PROTO((id, int, int));
-extern int nfixes PROTO((void));
-extern long int precedence PROTO((int));
-extern int pprecedence PROTO((struct infix *));
-extern void rearrangeprec PROTO((tree, tree));
-extern int pfixity PROTO((struct infix *));
-extern void hsincindent PROTO((void));
-extern void hssetindent PROTO((void));
-extern void hsentercontext PROTO((int));
-extern void hsendindent PROTO((void));
-extern void hsindentoff PROTO((void));
-
-extern int checkfixity PROTO((char *));
-extern void checksamefn PROTO((char *));
-extern void checkcontext PROTO((list));
-extern void checkinpat PROTO((void));
-extern void checkpatt PROTO((tree));
-extern BOOLEAN lhs_is_patt PROTO((tree));
-extern tree function PROTO((tree));
-extern void checkconap PROTO((tree, tree));
-extern void extendfn PROTO((binding, binding));
-extern void precparse PROTO((tree));
-extern void checkorder PROTO((binding));
-extern BOOLEAN checkorder2 PROTO((binding, BOOLEAN));
-extern BOOLEAN checksig PROTO((BOOLEAN, binding));
-extern void checkprec PROTO((tree, id, BOOLEAN));
-extern BOOLEAN isconstr PROTO((char *));
-extern void setstartlineno PROTO((void));
-extern void pprogram PROTO((tree));
-extern void who_am_i PROTO((void));
-extern void new_filename PROTO((char *));
-extern int Return PROTO((int));
+void format_string PROTO((FILE *, unsigned char *, int));
+tree mkbinop PROTO((char *, tree, tree));
+tree mkinfixop PROTO((char *, tree, tree));
+list type2context PROTO((ttype));
+pbinding createpat PROTO((list, binding));
+void process_args PROTO((int, char **));
+void hash_init PROTO((void));
+void print_hash_table PROTO((void));
+long int hash_index PROTO((id));
+void yyinit PROTO((void));
+int yyparse PROTO((void));
+int yylex PROTO((void));
+void setyyin PROTO((char *));
+void yyerror PROTO((char *));
+void error PROTO((char *));
+void hsperror PROTO((char *));
+void enteriscope PROTO((void));
+void exposeis PROTO((void));
+void makeinfix PROTO((id, int, int));
+int nfixes PROTO((void));
+long int precedence PROTO((int));
+int pprecedence PROTO((struct infix *));
+int pfixity PROTO((struct infix *));
+void pprogram PROTO((tree));
+void hsincindent PROTO((void));
+void hssetindent PROTO((void));
+void hsendindent PROTO((void));
+void hsindentoff PROTO((void));
+
+int checkfixity PROTO((char *));
+void checksamefn PROTO((char *));
+void checkinpat PROTO((void));
+
+void patternOrExpr PROTO((int,tree));
+/* the "int" arg says what we want; it is one of: */
+#define LEGIT_PATT 1
+#define LEGIT_EXPR 2
+
+BOOLEAN lhs_is_patt PROTO((tree));
+tree function PROTO((tree));
+void extendfn PROTO((binding, binding));
+void precparse PROTO((tree));
+void checkorder PROTO((binding));
+void checkprec PROTO((tree, id, BOOLEAN));
+BOOLEAN isconstr PROTO((char *));
+void setstartlineno PROTO((void));
+void find_module_on_imports_dirlist PROTO((char *, BOOLEAN, char *));
+char *fixop PROTO((int));
+char *fixtype PROTO((int));