mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Merge branch 'cdt_8_0' of ssh://rarohrba@git.eclipse.org/gitroot/cdt/org.eclipse.cdt.git into cdt_8_0
This commit is contained in:
commit
68d329ec2a
7 changed files with 441 additions and 402 deletions
File diff suppressed because it is too large
Load diff
|
@ -210,7 +210,14 @@ public abstract class ArrayUtil {
|
|||
}
|
||||
|
||||
/**
|
||||
* Assumes that both arrays contain nulls at the end, only.
|
||||
* Takes contents of the two arrays up to the first <code>null</code> element and concatenates
|
||||
* them.
|
||||
* @param c The type of the element of the returned array if there was not enough free space
|
||||
* in the destination array.
|
||||
* @param dest The destination array. The elements of the source array are added to this array
|
||||
* if there is enough free space in it. May be <code>null</code>.
|
||||
* @param source The source array. May not be <code>null</code>.
|
||||
* @return The concatenated array, which may be the same as the first parameter.
|
||||
*/
|
||||
public static Object[] addAll(Class<?> c, Object[] dest, Object[] source) {
|
||||
if (source == null || source.length == 0)
|
||||
|
@ -246,8 +253,12 @@ public abstract class ArrayUtil {
|
|||
}
|
||||
|
||||
/**
|
||||
* Concatenates two arrays skipping <code>null</code> elements.
|
||||
* Assumes that both arrays contain <code>null</code>s at the end, only.
|
||||
* Takes contents of the two arrays up to the first <code>null</code> element and concatenates
|
||||
* them.
|
||||
* @param dest The destination array. The elements of the source array are added to this array
|
||||
* if there is enough free space in it. May be <code>null</code>.
|
||||
* @param source The source array. May not be <code>null</code>.
|
||||
* @return The concatenated array, which may be the same as the first parameter.
|
||||
* @since 5.2
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
|
@ -264,7 +275,8 @@ public abstract class ArrayUtil {
|
|||
}
|
||||
|
||||
if (dest == null || dest.length == 0) {
|
||||
Class<? extends Object> c = dest != null ? dest.getClass().getComponentType() : source.getClass().getComponentType();
|
||||
Class<? extends Object> c = dest != null ?
|
||||
dest.getClass().getComponentType() : source.getClass().getComponentType();
|
||||
dest = (T[]) Array.newInstance(c, numToAdd);
|
||||
System.arraycopy(source, 0, dest, 0, numToAdd);
|
||||
return dest;
|
||||
|
|
|
@ -22,7 +22,6 @@ import org.eclipse.cdt.core.dom.ast.DOMException;
|
|||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
||||
import org.eclipse.cdt.core.dom.ast.IProblemBinding;
|
||||
import org.eclipse.cdt.core.dom.ast.IScope;
|
||||
import org.eclipse.cdt.core.dom.ast.IType;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassScope;
|
||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
|
||||
|
@ -56,8 +55,13 @@ class BaseClassLookup {
|
|||
rootInfo.collectResultForContentAssist(data);
|
||||
} else {
|
||||
hideVirtualBases(rootInfo, infoMap);
|
||||
IBinding[] result= rootInfo.collectResult(data, true, null);
|
||||
verifyResult(data, result);
|
||||
IBinding[] result= rootInfo.collectResult(data, true, IBinding.EMPTY_BINDING_ARRAY);
|
||||
if (data.problem == null) {
|
||||
data.foundItems = ArrayUtil.addAll((Object[]) data.foundItems, result);
|
||||
} else if (result.length > 0) {
|
||||
data.problem.setCandidateBindings(result);
|
||||
}
|
||||
// verifyResult(data, result);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -323,7 +327,7 @@ class BaseClassLookup {
|
|||
}
|
||||
}
|
||||
|
||||
public IBinding[] collectResult(LookupData data, boolean asVirtualBase, IBinding[] result) {
|
||||
private IBinding[] collectResult(LookupData data, boolean asVirtualBase, IBinding[] result) {
|
||||
if (asVirtualBase) {
|
||||
if (fHiddenAsVirtualBase)
|
||||
return result;
|
||||
|
@ -337,41 +341,27 @@ class BaseClassLookup {
|
|||
if (fCollected)
|
||||
return result;
|
||||
fCollected= true;
|
||||
|
||||
result= (IBinding[]) ArrayUtil.addAll(IBinding.class, result, fBindings);
|
||||
|
||||
int numBindingsToAdd = 0;
|
||||
for (int i = 0; i < fBindings.length; i++) {
|
||||
IBinding binding = fBindings[i];
|
||||
if (binding == null)
|
||||
break;
|
||||
if (!ArrayUtil.contains(result, binding))
|
||||
fBindings[numBindingsToAdd++] = binding;
|
||||
}
|
||||
if (numBindingsToAdd < fBindings.length)
|
||||
fBindings[numBindingsToAdd] = null;
|
||||
if (result.length > 0 && numBindingsToAdd > 0 && data.problem == null) {
|
||||
// Matches are found in more than one base class - this is an indication of ambiguity.
|
||||
data.problem= new ProblemBinding(data.astName,
|
||||
IProblemBinding.SEMANTIC_AMBIGUOUS_LOOKUP, result);
|
||||
}
|
||||
result= ArrayUtil.addAll(result, fBindings);
|
||||
for (int i= 0; i < fChildren.size(); i++) {
|
||||
BaseClassLookup child = fChildren.get(i);
|
||||
result= child.collectResult(data, fVirtual.get(i), result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static void verifyResult(LookupData data, IBinding[] bindings) {
|
||||
bindings= (IBinding[]) ArrayUtil.trim(IBinding.class, bindings);
|
||||
if (bindings.length == 0)
|
||||
return;
|
||||
|
||||
if (data.problem != null) {
|
||||
data.problem.setCandidateBindings(bindings);
|
||||
} else {
|
||||
ICPPClassType uniqueOwner= null;
|
||||
for (IBinding b : bindings) {
|
||||
if (!(b instanceof IType)) {
|
||||
IBinding owner= b.getOwner();
|
||||
if (owner instanceof ICPPClassType) {
|
||||
final ICPPClassType classOwner = (ICPPClassType) owner;
|
||||
if (uniqueOwner == null) {
|
||||
uniqueOwner= classOwner;
|
||||
} else if (!uniqueOwner.isSameType(classOwner)) {
|
||||
data.problem= new ProblemBinding(data.astName,
|
||||
IProblemBinding.SEMANTIC_AMBIGUOUS_LOOKUP, bindings);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data.foundItems = ArrayUtil.addAll(Object.class, (Object[]) data.foundItems, bindings);
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2004, 2009 QNX Software Systems and others.
|
||||
* Copyright (c) 2004, 2011 QNX Software Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
|
@ -7,6 +7,7 @@
|
|||
*
|
||||
* Contributors:
|
||||
* QNX Software Systems - Initial API and implementation
|
||||
* Marc Khouzam (Ericsson) - Check for a null threadId (Bug 356463)
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.dsf.gdb.internal.ui.breakpoints;
|
||||
|
||||
|
@ -474,7 +475,15 @@ public class GdbThreadFilterEditor {
|
|||
new DataRequestMonitor<IThreadDMData>(ImmediateExecutor.getInstance(), rm) {
|
||||
@Override
|
||||
public void handleSuccess() {
|
||||
rm.setData(getData().getName());
|
||||
final StringBuilder builder = new StringBuilder(getData().getName());
|
||||
String containerId = getData().getId();
|
||||
if (containerId != null) {
|
||||
builder.append(" ["); //$NON-NLS-1$
|
||||
builder.append(containerId);
|
||||
builder.append("]"); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
rm.setData(builder.toString());
|
||||
rm.done();
|
||||
}
|
||||
});
|
||||
|
@ -524,8 +533,14 @@ public class GdbThreadFilterEditor {
|
|||
builder.append("["); //$NON-NLS-1$
|
||||
builder.append(((IMIExecutionDMContext)thread).getThreadId());
|
||||
builder.append("] "); //$NON-NLS-1$
|
||||
builder.append(getData().getId());
|
||||
builder.append(getData().getName());
|
||||
String threadId = getData().getId();
|
||||
if (threadId != null) {
|
||||
builder.append(threadId);
|
||||
}
|
||||
String threadName = getData().getName();
|
||||
if (threadName != null) {
|
||||
builder.append(threadName);
|
||||
}
|
||||
|
||||
rm.setData(builder.toString());
|
||||
rm.done();
|
||||
|
|
|
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
|||
Bundle-ManifestVersion: 2
|
||||
Bundle-Name: %pluginName
|
||||
Bundle-SymbolicName: org.eclipse.cdt.debug.gdbjtag.core;singleton:=true
|
||||
Bundle-Version: 8.0.0.qualifier
|
||||
Bundle-Version: 8.0.1.qualifier
|
||||
Bundle-Activator: org.eclipse.cdt.debug.gdbjtag.core.Activator
|
||||
Bundle-Localization: plugin
|
||||
Require-Bundle: org.eclipse.core.runtime,
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<version>8.0.0-SNAPSHOT</version>
|
||||
<version>8.0.1-SNAPSHOT</version>
|
||||
<artifactId>org.eclipse.cdt.debug.gdbjtag.core</artifactId>
|
||||
<packaging>eclipse-plugin</packaging>
|
||||
</project>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2007 - 2010 QNX Software Systems and others.
|
||||
* Copyright (c) 2007 - 2011 QNX Software Systems and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
|
@ -11,6 +11,7 @@
|
|||
* Sage Electronic Engineering, LLC - bug 305943
|
||||
* - API generalization to become transport-independent (allow
|
||||
* connections via serial ports and pipes).
|
||||
* John Dallaway - Wrong groupId during initialization (Bug 349736)
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.debug.gdbjtag.core;
|
||||
|
||||
|
@ -615,7 +616,7 @@ public class GDBJtagDSFFinalLaunchSequence extends Sequence {
|
|||
public void execute(final RequestMonitor requestMonitor) {
|
||||
if (fSessionType != SessionType.CORE) {
|
||||
MIBreakpointsManager bpmService = fTracker.getService(MIBreakpointsManager.class);
|
||||
IMIContainerDMContext containerDmc = fProcService.createContainerContextFromGroupId(fCommandControl.getContext(), null);
|
||||
IMIContainerDMContext containerDmc = fProcService.createContainerContextFromGroupId(fCommandControl.getContext(), MIProcesses.UNIQUE_GROUP_ID);
|
||||
IBreakpointsTargetDMContext bpTargetDmc = DMContexts.getAncestorOfType(containerDmc, IBreakpointsTargetDMContext.class);
|
||||
|
||||
bpmService.startTrackingBreakpoints(bpTargetDmc, requestMonitor);
|
||||
|
|
Loading…
Add table
Reference in a new issue