From 1ede8529a089d60c4cf012b0c475490c1fe73b40 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Thu, 15 Oct 2009 02:56:51 +0000 Subject: Added warning about specifying list arguments before type (suggested by Joerg Sonnenberg). --- libmdoc.h | 3 ++- mdoc.c | 3 ++- mdoc_validate.c | 22 +++++++++++++++------- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/libmdoc.h b/libmdoc.h index 60340dbc..80ab5275 100644 --- a/libmdoc.h +++ b/libmdoc.h @@ -1,4 +1,4 @@ -/* $Id: libmdoc.h,v 1.28 2009/09/24 15:01:06 kristaps Exp $ */ +/* $Id: libmdoc.h,v 1.29 2009/10/15 02:56:51 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -93,6 +93,7 @@ enum merr { ENOCTX, ELIB, EBADCHILD, + ENOTYPE, MERRMAX }; diff --git a/mdoc.c b/mdoc.c index 9cf50bc5..9db754ee 100644 --- a/mdoc.c +++ b/mdoc.c @@ -1,4 +1,4 @@ -/* $Id: mdoc.c,v 1.108 2009/10/15 01:33:12 kristaps Exp $ */ +/* $Id: mdoc.c,v 1.109 2009/10/15 02:56:51 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -78,6 +78,7 @@ const char *const __mdoc_merrnames[MERRMAX] = { "closure macro without prior context", /* ENOCTX */ "no description found for library", /* ELIB */ "bad child for parent context", /* EBADCHILD */ + "list arguments preceding type", /* ENOTYPE */ }; const char *const __mdoc_macronames[MDOC_MAX] = { diff --git a/mdoc_validate.c b/mdoc_validate.c index 974d6448..e555c2f9 100644 --- a/mdoc_validate.c +++ b/mdoc_validate.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_validate.c,v 1.44 2009/09/24 15:08:41 kristaps Exp $ */ +/* $Id: mdoc_validate.c,v 1.45 2009/10/15 02:56:51 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -621,25 +621,33 @@ pre_bl(PRE_ARGS) case (MDOC_Inset): /* FALLTHROUGH */ case (MDOC_Column): - if (-1 != type) + if (type >= 0) return(mdoc_nerr(mdoc, n, EMULTILIST)); type = n->args->argv[pos].arg; break; + case (MDOC_Compact): + if (type < 0 && ! mdoc_nwarn(mdoc, n, ENOTYPE)) + return(0); + break; case (MDOC_Width): - if (-1 != width) + if (width >= 0) return(mdoc_nerr(mdoc, n, EARGREP)); + if (type < 0 && ! mdoc_nwarn(mdoc, n, ENOTYPE)) + return(0); width = n->args->argv[pos].arg; break; case (MDOC_Offset): - if (-1 != offset) + if (offset >= 0) return(mdoc_nerr(mdoc, n, EARGREP)); + if (type < 0 && ! mdoc_nwarn(mdoc, n, ENOTYPE)) + return(0); offset = n->args->argv[pos].arg; break; default: break; } - if (-1 == type) + if (type < 0) return(mdoc_nerr(mdoc, n, ELISTTYPE)); /* @@ -650,7 +658,7 @@ pre_bl(PRE_ARGS) switch (type) { case (MDOC_Tag): - if (-1 == width && ! mdoc_nwarn(mdoc, n, EMISSWIDTH)) + if (width < 0 && ! mdoc_nwarn(mdoc, n, EMISSWIDTH)) return(0); break; case (MDOC_Column): @@ -660,7 +668,7 @@ pre_bl(PRE_ARGS) case (MDOC_Inset): /* FALLTHROUGH */ case (MDOC_Item): - if (-1 != width && ! mdoc_nwarn(mdoc, n, ENOWIDTH)) + if (width >= 0 && ! mdoc_nwarn(mdoc, n, ENOWIDTH)) return(0); break; default: -- cgit v1.2.3