From 259ff86c1b74b1fa4aff1c94481debad8b888f89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrius=20=C5=A0tikonas?= Date: Tue, 6 Dec 2022 21:38:37 +0000 Subject: [PATCH] Add support for . operator that is after array. --- cc_core.c | 2 +- test/test.answers | 30 +++++++++++++++--------------- test/test0029/member_access.c | 6 +++++- test/test1000/proof.answer | 2 +- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/cc_core.c b/cc_core.c index 651f985..9853105 100644 --- a/cc_core.c +++ b/cc_core.c @@ -1176,7 +1176,7 @@ void postfix_expr_array() require_match("ERROR in postfix_expr\nMissing ]\n", "]"); require(NULL != global_token, "truncated array expression\n"); - if(match("=", global_token->s) || is_compound_assignment(global_token->s)) + if(match("=", global_token->s) || is_compound_assignment(global_token->s) || match(".", global_token->s)) { assign = ""; } diff --git a/test/test.answers b/test/test.answers index 26e9f39..b76d3e0 100644 --- a/test/test.answers +++ b/test/test.answers @@ -217,14 +217,14 @@ cddae954ec3486707f9c7ea6643093c71cdf31feef6db33ad359432bffcc8252 test/results/t d9d621632b1a50de329b38a39cfff4a18abe47f2cd89a497345f4792407612b9 test/results/test0028-riscv32-binary cd74ccf3a4cb56fe52c0106da92a8befd8628993efd9a74765125ff132653533 test/results/test0028-riscv64-binary 47a16d1df9e671b938ba5fcaed42af74c452d0364b128e91a6be422d7f9b6038 test/results/test0028-x86-binary -fe189477661c04e0b02d13feff398b1dbbc7364c7ce83bd5a5521e2e9102cfb6 test/results/test0029-aarch64-binary -dc172816d58fc7b49a89bb985571674b78af4e8c4d552d70e46ca02f99de09e9 test/results/test0029-amd64-binary -64826adf4acc3e7fe2914acecbe7de213dc7dd376988e898f610ca3a5d9e9523 test/results/test0029-armv7l-binary -b63a536a13303880dcc1cdbb7ad897effc3b34543613553f724836fbcfa636d2 test/results/test0029-knight-native-binary -ce86579b93ffb57cb9cac32258adb11e19c039fd9b0d040c50fb2c8e0230123d test/results/test0029-knight-posix-binary -f3fbe64a87cb3e744f655112a1c12146038cd5f0c2be1a2906aed9d054808421 test/results/test0029-riscv32-binary -82574a452f0b3d2eb4920b88051729aadc7bb5828f8c4c9e21e3b1b9cd829dde test/results/test0029-riscv64-binary -13db461fa05a52ac928ee01a0c4ecb2cadefc46760a848bc7f316bb6973d7218 test/results/test0029-x86-binary +dd335051cac1ee8ac176f71ac78e9e1e15922915e4a44d46b5eea4002f391c2e test/results/test0029-aarch64-binary +e4227d2734fc4efe9604120507d262fa5fb26a248da3c09d4595a976c53d8c02 test/results/test0029-amd64-binary +74bcec6ee152d23a925cb9440582841d39cda038f17184080703b19a86c428bc test/results/test0029-armv7l-binary +311424e171859157d9c7bd659e641b1430ca059d74ba6eb0660d9c62d17945ca test/results/test0029-knight-native-binary +d3d7f2b6760db4f66a6d4838644ad13218062b7754858299b3b3369de08cfa2a test/results/test0029-knight-posix-binary +b313a590ffce238ea5e1d590448176499c6778c0b688c9b918c53ec30e89e05a test/results/test0029-riscv32-binary +0ac0596f14196ad86a18ea1cd612c566d056405867fe0664ead80bcfe0e96bce test/results/test0029-riscv64-binary +a5649410e4052fbb749bdffa6fc60edc18ea6a06e42be26603a31a3c78e1bed9 test/results/test0029-x86-binary 03e46aa5069358b7783363c442fd4e2862f5a8e2d80c22cb00ed509ddef3858f test/results/test0030-aarch64-binary 3a87c7c6c28344a0174ecef9b06e45af17225c86c2f2cc38f68bb71a51b1aca1 test/results/test0030-amd64-binary d92ed2bf4c011412a4080b6b9eeab4c88fb09ea6f264af6ec3a4c9be47bdd869 test/results/test0030-armv7l-binary @@ -281,10 +281,10 @@ c38a794b4aee60088b5b57431afcfadae71897fda17d59c7e0523fc960091137 test/results/t 0586076a36d3097489c92924459e6e16aa50911fd245e67fea116b66ecb7c514 test/results/test0106-riscv32-binary 9e6d9ae36b7a963c193250eccc188fc33e1e6a04c958b0f045c601ad540cc09a test/results/test0106-riscv64-binary 8dd7c32c2a1a9ebf3ad7fcc4f1d814230023cb4eefa26ea3bb7fb6c98db1d2fa test/results/test0106-x86-binary -123792967e6005078285a9ff70557f22139955a0666f35d791aeddce0cdfd775 test/results/test1000-aarch64-binary -7f3fef3d756de9f52857945578f32572cf889017aafc79f73cf8ae7d22cb059d test/results/test1000-amd64-binary -12636b4e7122a87304ddaa90bd6526b22d9e3bf1de21459ba50d8c1ee9fa1bba test/results/test1000-armv7l-binary -34ccad8b9e8a9d5d517613bcb513a007bd972aba332de54a74832427071d2ac9 test/results/test1000-knight-posix-binary -e2ddeef4b0258c04ca0e2a4f08d6dde9c02ccef27eb87fbd8df8f8bb21ac1760 test/results/test1000-riscv32-binary -1985f79d8cdf37aec7f74b131fa84ce567a859148597df40f0b73a620d686339 test/results/test1000-riscv64-binary -f5ab3226acafea2d0799f16e9ea524c49f69a6ae077b3db1571612a746ac65e3 test/results/test1000-x86-binary +24829b174096cb6a1a7e7c82115e84d867bf3a2ae7f1bc8f5b4883c509bdb35e test/results/test1000-aarch64-binary +f81bf9ee0a3e8f47e0bd201d56b0f160b7421644bb41c9be87ea7d8910ee1a7c test/results/test1000-amd64-binary +7804cf6c9676d59ecd25b358d65e277ee9bac13115fd0237ad77ca06bef2df15 test/results/test1000-armv7l-binary +293b14b5aace4aa0afa68cafa1d1429a01559c9eec878de1cca98317dc6a5169 test/results/test1000-knight-posix-binary +aa0c84993a0614ef97b4d95b98e6356e7fe04416adf316a8abeaa7fe7a5538eb test/results/test1000-riscv32-binary +5f83710c60bd46d2833e00839ca610292dbb82d9a8c6a100aeafc2497a8b8a1b test/results/test1000-riscv64-binary +8e82265b4a03a1151969c430aba7240bb41846a16cf626ac91dcff0422d9d7b9 test/results/test1000-x86-binary diff --git a/test/test0029/member_access.c b/test/test0029/member_access.c index 0985597..a90a613 100644 --- a/test/test0029/member_access.c +++ b/test/test0029/member_access.c @@ -42,6 +42,10 @@ int main() { b.z[0] = 1; b.z[1] = 2; b.z[2] = 3; - if (b.z[0] + b.z[1] + b.z[2] != 6) return 6; + if(b.z[0] + b.z[1] + b.z[2] != 6) return 6; + + struct s* p = &b; + if(p[0].x != 3) return 7; + return 0; } diff --git a/test/test1000/proof.answer b/test/test1000/proof.answer index 5707268..305bbe2 100644 --- a/test/test1000/proof.answer +++ b/test/test1000/proof.answer @@ -1 +1 @@ -8c2105fe64cd0211bc9fec3939f557862ec956a9a7a76c0ab659ff52ff24b56c test/test1000/proof +2e9f6af840dbe0cc98f83963c57c9b9865b5a35f55fc4d859d1a4b34748278d6 test/test1000/proof