This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
Summary: | Evaluation of preprocessor expression containing macro with empty body is not correct | ||
---|---|---|---|
Product: | cnd | Reporter: | Alexander Simon <alexvsimon> |
Component: | Code Model | Assignee: | Vladimir Voskresensky <vv159170> |
Status: | VERIFIED FIXED | ||
Severity: | blocker | ||
Priority: | P1 | ||
Version: | 6.x | ||
Hardware: | All | ||
OS: | Solaris | ||
Issue Type: | DEFECT | Exception Reporter: | |
Bug Depends on: | |||
Bug Blocks: | 108501 | ||
Attachments: | proposed patch |
Description
Alexander Simon
2007-11-16 08:51:25 UTC
Investigation shows that value of i386=1 for SUN C collection. Verify please list of predefined macros for SUN collections. I think that it is P1 for Sun Studio. simplified test case: #define A #if !(A || B) int a; #endif The problem caused by expanding token stream process. When expanding is performed for pp-expressions => all defined macro must be "1"-number token assigned on expanding, not empty token stream as it's usually expanded in code we need a mode of expanding stream for preprocessor expressions. in this mode all defined macros with empty body are expanded to default body (token number "1") Created attachment 53108 [details]
proposed patch
fixed: - when preproc expression is expanded all empty-body macros must be expanded with default body cvs log: Checking in impl/support/APTBaseMacroMap.java; /shared/data/ccvs/repository/cnd/apt/src/org/netbeans/modules/cnd/apt/impl/support/APTBaseMacroMap.java,v <-- APTBaseMacroMap.java new revision: 1.12; previous revision: 1.11 done Checking in support/APTConditionResolver.java; /shared/data/ccvs/repository/cnd/apt/src/org/netbeans/modules/cnd/apt/support/APTConditionResolver.java,v <-- APTConditionResolver.java new revision: 1.4; previous revision: 1.3 done Checking in support/APTExpandedStream.java; /shared/data/ccvs/repository/cnd/apt/src/org/netbeans/modules/cnd/apt/support/APTExpandedStream.java,v <-- APTExpandedStream.java new revision: 1.4; previous revision: 1.3 done Checking in utils/APTUtils.java; /shared/data/ccvs/repository/cnd/apt/src/org/netbeans/modules/cnd/apt/utils/APTUtils.java,v <-- APTUtils.java new revision: 1.16; previous revision: 1.15 done + test cvs log: Checking in data/goldenfiles/org/netbeans/modules/cnd/modelimpl/trace/FileModelTest/ppExpressionAndEmptyBodyMacro.cc.err; /shared/data/ccvs/repository/cnd/modelimpl/test/unit/data/goldenfiles/org/netbeans/modules/cnd/modelimpl/trace/FileModelTest/ppExpressionAndEmptyBodyMacro.cc.err,v <-- ppExpressionAndEmptyBodyMacro.cc.err initial revision: 1.1 done RCS file: /shared/data/ccvs/repository/cnd/modelimpl/test/unit/data/goldenfiles/org/netbeans/modules/cnd/modelimpl/trace/FileModelTest/ppExpressionAndEmptyBodyMacro.cc.dat,v done Checking in data/goldenfiles/org/netbeans/modules/cnd/modelimpl/trace/FileModelTest/ppExpressionAndEmptyBodyMacro.cc.dat; /shared/data/ccvs/repository/cnd/modelimpl/test/unit/data/goldenfiles/org/netbeans/modules/cnd/modelimpl/trace/FileModelTest/ppExpressionAndEmptyBodyMacro.cc.dat,v <-- ppExpressionAndEmptyBodyMacro.cc.dat initial revision: 1.1 done RCS file: /shared/data/ccvs/repository/cnd/modelimpl/test/unit/data/org/netbeans/modules/cnd/modelimpl/trace/FileModelTest/ppExpressionAndEmptyBodyMacro.cc,v done Checking in data/org/netbeans/modules/cnd/modelimpl/trace/FileModelTest/ppExpressionAndEmptyBodyMacro.cc; /shared/data/ccvs/repository/cnd/modelimpl/test/unit/data/org/netbeans/modules/cnd/modelimpl/trace/FileModelTest/ppExpressionAndEmptyBodyMacro.cc,v <-- ppExpressionAndEmptyBodyMacro.cc initial revision: 1.1 done Checking in src/org/netbeans/modules/cnd/modelimpl/trace/FileModelTest.java; /shared/data/ccvs/repository/cnd/modelimpl/test/unit/src/org/netbeans/modules/cnd/modelimpl/trace/FileModelTest.java,v <-- FileModelTest.java new revision: 1.22; previous revision: 1.21 done I've reviewed the fix. I believe the fix is correct and safe. verified in the trunk build 20071118 integrated into release60: Checking in impl/support/APTBaseMacroMap.java; /shared/data/ccvs/repository/cnd/apt/src/org/netbeans/modules/cnd/apt/impl/support/APTBaseMacroMap.java,v <-- APTBaseMacroMap.java new revision: 1.11.6.1; previous revision: 1.11 done Checking in support/APTConditionResolver.java; /shared/data/ccvs/repository/cnd/apt/src/org/netbeans/modules/cnd/apt/support/APTConditionResolver.java,v <-- APTConditionResolver.java new revision: 1.3.8.1; previous revision: 1.3 done Checking in support/APTExpandedStream.java; /shared/data/ccvs/repository/cnd/apt/src/org/netbeans/modules/cnd/apt/support/APTExpandedStream.java,v <-- APTExpandedStream.java new revision: 1.3.8.1; previous revision: 1.3 done Checking in utils/APTUtils.java; /shared/data/ccvs/repository/cnd/apt/src/org/netbeans/modules/cnd/apt/utils/APTUtils.java,v <-- APTUtils.java new revision: 1.15.2.1; previous revision: 1.15 done verified in RC2 build (200711201000) |