mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Fix undef-statements in index, bug 234591.
This commit is contained in:
parent
c33ef0d470
commit
ed6c4dc4a0
4 changed files with 17 additions and 13 deletions
|
@ -104,7 +104,7 @@ public class PDOM extends PlatformObject implements IPDOM {
|
|||
private static int version(int major, int minor) {
|
||||
return major << 16 + minor;
|
||||
}
|
||||
public static final int MAJOR_VERSION = 60;
|
||||
public static final int MAJOR_VERSION = 61;
|
||||
public static final int MINOR_VERSION = 0; // minor versions must be compatible
|
||||
|
||||
public static final int CURRENT_VERSION= version(MAJOR_VERSION, MINOR_VERSION);
|
||||
|
@ -174,6 +174,7 @@ public class PDOM extends PlatformObject implements IPDOM {
|
|||
* 58.0 - non-type parameters (bug 207840)
|
||||
* 59.0 - changed modeling of deferred class instances (bug 229218)
|
||||
* 60.0 - store integral values with basic types (bug 207871)
|
||||
* 61.0 - properly insert macro undef statements into macro-containers (bug 234591)
|
||||
*/
|
||||
|
||||
public static final int LINKAGES = Database.DATA_AREA;
|
||||
|
@ -800,7 +801,10 @@ public class PDOM extends PlatformObject implements IPDOM {
|
|||
throws CoreException {
|
||||
if ((options & FIND_DEFINITIONS) != 0) {
|
||||
for (PDOMMacro macro= container.getFirstDefinition(); macro != null; macro= macro.getNextInContainer()) {
|
||||
names.add(macro.getDefinition());
|
||||
final IIndexFragmentName name = macro.getDefinition();
|
||||
if (name != null) {
|
||||
names.add(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((options & FIND_REFERENCES) != 0) {
|
||||
|
|
|
@ -472,12 +472,13 @@ public class PDOMFile implements IIndexFragmentFile {
|
|||
}
|
||||
|
||||
}
|
||||
for (PDOMMacro name= getFirstMacro(); name != null; name= name.getNextMacro()) {
|
||||
int nameOffset= name.getNodeOffset();
|
||||
for (PDOMMacro macro= getFirstMacro(); macro != null; macro= macro.getNextMacro()) {
|
||||
int nameOffset= macro.getNodeOffset();
|
||||
if (nameOffset >= offset) {
|
||||
if (nameOffset + name.getNodeLength() <= offset+length) {
|
||||
if (name.isMacroDefinition()) {
|
||||
result.add(name.getDefinition());
|
||||
if (nameOffset + macro.getNodeLength() <= offset+length) {
|
||||
IIndexFragmentName name= macro.getDefinition();
|
||||
if (name != null) {
|
||||
result.add(name);
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
* Markus Schorn (Wind River Systems)
|
||||
* Andrew Ferguson (Symbian)
|
||||
*******************************************************************************/
|
||||
|
||||
package org.eclipse.cdt.internal.core.pdom.dom;
|
||||
|
||||
import java.net.URI;
|
||||
|
@ -90,8 +89,6 @@ public class PDOMMacro implements IIndexMacro, IIndexFragmentBinding, IASTFileLo
|
|||
}
|
||||
db.putInt(fRecord + PARAMETERS, db.newString(buf.toString().toCharArray()).getRecord());
|
||||
}
|
||||
|
||||
container.addDefinition(this);
|
||||
}
|
||||
|
||||
public PDOMMacro(PDOM pdom, PDOMMacroContainer container, IASTPreprocessorUndefStatement undef, PDOMFile file) throws CoreException {
|
||||
|
@ -109,6 +106,8 @@ public class PDOMMacro implements IIndexMacro, IIndexFragmentBinding, IASTFileLo
|
|||
db.putInt(fRecord + FILE, file.getRecord());
|
||||
db.putInt(fRecord + NAME_OFFSET, fileloc.getNodeOffset());
|
||||
db.putShort(fRecord + NAME_LENGTH, (short) fileloc.getNodeLength());
|
||||
|
||||
container.addDefinition(this);
|
||||
}
|
||||
|
||||
public PDOM getPDOM() {
|
||||
|
|
|
@ -345,9 +345,9 @@ public class IndexUI {
|
|||
throws CoreException {
|
||||
ITranslationUnit tu= getTranslationUnit(preferProject, macro.getFileLocation());
|
||||
if (tu != null) {
|
||||
IIndexName def= macro.getDefinition();
|
||||
if (def != null) {
|
||||
IRegion region= new Region(def.getNodeOffset(), def.getNodeLength());
|
||||
IIndexName name= macro.getDefinition();
|
||||
if (name != null) {
|
||||
IRegion region= new Region(name.getNodeOffset(), name.getNodeLength());
|
||||
long timestamp= macro.getFile().getTimestamp();
|
||||
return CElementHandleFactory.create(tu, macro, region, timestamp);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue