🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: net.lang.c
Article #9329

Re: Equality vs Assignment

#9329
From: Ray Butterworth
Date: Thu, 18 Sep 1986 19:39
37 lines
1564 bytes
> Who among us has not been bitten at least once by writing
> if (x = 1) ...
> when he/she meant
> if (x == 1)
> What I want to know is
> 
> Has anyone written a program to scan a C program and issue a warning message
> for those lines where an assignment has occured in a conditional statement
> (i.e. if, while, the third statement in a for loop)?

There is already such a program:  lint.
Here's the modified section you want from the BSD 4.2 version of
/usr/src/usr.bin/lint/lpass1.c.

contx( p, down, pl, pr ) register NODE *p; register *pl, *pr; {

    *pl = *pr = VAL;
    if (p->in.type==UNDEF) down=VAL; /* (void) cast */

    switch( p->in.op ){

    case NOT:
        *pl=down;
    case ANDAND:
    case OROR:
        if (hflag&&(p->in.right->in.op==ASSIGN))
            werror("Possible unintended assignment");
    case QUEST:
        *pr = down;
    case CBRANCH:
        if (hflag&&(p->in.left->in.op==ASSIGN))
            werror("possible unintended assignment");
        break;

    case SCONV:
    case PCONV:
    ...
Technical Details
Message-ID: <3234@watmath.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!mnetor!seismo!columbia!caip!clyde!watmath!rbutterworth
References: <2259@gitpyr.UUCP>

Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: arc1-ca.pugleaf.net!utzoo!mnetor!seismo!columbia!caip!clyde!watmath!rbutterworth
From: rbutterworth@watmath.UUCP (Ray Butterworth)
Newsgroups: net.lang.c
Subject: Re: Equality vs Assignment
Message-ID: <3234@watmath.UUCP>
Date: Thu, 18-Sep-86 15:39:00 EDT
Article-I.D.: watmath.3234
Posted: Thu Sep 18 15:39:00 1986
Date-Received: Fri, 19-Sep-86 23:57:24 EDT
References: <2259@gitpyr.UUCP>
Organization: U of Waterloo, Ontario
Lines: 37