Module Name:    src
Committed By:   rillig
Date:           Wed Jul 14 17:07:24 UTC 2021

Modified Files:
        src/usr.bin/xlint/lint1: cgram.y externs1.h tree.c

Log Message:
lint: extract build_member_access from the grammar

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.322 -r1.323 src/usr.bin/xlint/lint1/cgram.y
cvs rdiff -u -r1.116 -r1.117 src/usr.bin/xlint/lint1/externs1.h
cvs rdiff -u -r1.313 -r1.314 src/usr.bin/xlint/lint1/tree.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/xlint/lint1/cgram.y
diff -u src/usr.bin/xlint/lint1/cgram.y:1.322 src/usr.bin/xlint/lint1/cgram.y:1.323
--- src/usr.bin/xlint/lint1/cgram.y:1.322	Wed Jul 14 16:59:39 2021
+++ src/usr.bin/xlint/lint1/cgram.y	Wed Jul 14 17:07:24 2021
@@ -1,5 +1,5 @@
 %{
-/* $NetBSD: cgram.y,v 1.322 2021/07/14 16:59:39 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.323 2021/07/14 17:07:24 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: cgram.y,v 1.322 2021/07/14 16:59:39 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.323 2021/07/14 17:07:24 rillig Exp $");
 #endif
 
 #include <limits.h>
@@ -478,24 +478,7 @@ postfix_expression:
 		$$ = new_function_call_node($1, $3);
 	  }
 	| postfix_expression point_or_arrow T_NAME {
-		if ($1 != NULL) {
-			sym_t	*msym;
-			/*
-			 * XXX struct_or_union_member should be integrated
-			 * in build()
-			 */
-			if ($2 == ARROW) {
-				/*
-				 * must do this before struct_or_union_member
-				 * is called
-				 */
-				$1 = cconv($1);
-			}
-			msym = struct_or_union_member($1, $2, getsym($3));
-			$$ = build($2, $1, new_name_node(msym, 0));
-		} else {
-			$$ = NULL;
-		}
+		$$ = build_member_access($1, $2, $3);
 	  }
 	| postfix_expression T_INCDEC {
 		$$ = build($2 == INC ? INCAFT : DECAFT, $1, NULL);

Index: src/usr.bin/xlint/lint1/externs1.h
diff -u src/usr.bin/xlint/lint1/externs1.h:1.116 src/usr.bin/xlint/lint1/externs1.h:1.117
--- src/usr.bin/xlint/lint1/externs1.h:1.116	Sat Jul 10 17:35:54 2021
+++ src/usr.bin/xlint/lint1/externs1.h	Wed Jul 14 17:07:24 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: externs1.h,v 1.116 2021/07/10 17:35:54 rillig Exp $	*/
+/*	$NetBSD: externs1.h,v 1.117 2021/07/14 17:07:24 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -212,6 +212,7 @@ extern	tnode_t	*build_generic_selection(
 		    struct generic_association *);
 
 extern	tnode_t	*build(op_t, tnode_t *, tnode_t *);
+extern	tnode_t	*build_member_access(tnode_t *, op_t, sbuf_t *);
 extern	tnode_t	*cconv(tnode_t *);
 extern	bool	is_typeok_bool_operand(const tnode_t *);
 extern	bool	typeok(op_t, int, const tnode_t *, const tnode_t *);

Index: src/usr.bin/xlint/lint1/tree.c
diff -u src/usr.bin/xlint/lint1/tree.c:1.313 src/usr.bin/xlint/lint1/tree.c:1.314
--- src/usr.bin/xlint/lint1/tree.c:1.313	Tue Jul  6 04:44:20 2021
+++ src/usr.bin/xlint/lint1/tree.c	Wed Jul 14 17:07:24 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: tree.c,v 1.313 2021/07/06 04:44:20 rillig Exp $	*/
+/*	$NetBSD: tree.c,v 1.314 2021/07/14 17:07:24 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: tree.c,v 1.313 2021/07/06 04:44:20 rillig Exp $");
+__RCSID("$NetBSD: tree.c,v 1.314 2021/07/14 17:07:24 rillig Exp $");
 #endif
 
 #include <float.h>
@@ -687,6 +687,22 @@ build(op_t op, tnode_t *ln, tnode_t *rn)
 	return ntn;
 }
 
+tnode_t *
+build_member_access(tnode_t *ln, op_t op, sbuf_t *member)
+{
+	sym_t	*msym;
+
+	if (ln == NULL)
+		return NULL;
+
+	if (op == ARROW) {
+		/* must do this before struct_or_union_member is called */
+		ln = cconv(ln);
+	}
+	msym = struct_or_union_member(ln, op, getsym(member));
+	return build(op, ln, new_name_node(msym, 0));
+}
+
 /*
  * Perform class conversions.
  *

Reply via email to