mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Added using support. Cleaned up tEOC handling.
This commit is contained in:
parent
cf1d5bf0d1
commit
0b0d156d87
2 changed files with 41 additions and 17 deletions
|
@ -1307,10 +1307,8 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
||||||
typeId = typeId(true, false);
|
typeId = typeId(true, false);
|
||||||
switch (LT(1)) {
|
switch (LT(1)) {
|
||||||
case IToken.tRPAREN:
|
case IToken.tRPAREN:
|
||||||
lastOffset = consume(IToken.tRPAREN).getEndOffset();
|
|
||||||
break;
|
|
||||||
case IToken.tEOC:
|
case IToken.tEOC:
|
||||||
lastOffset = Integer.MAX_VALUE;
|
lastOffset = consume().getEndOffset();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw backtrack;
|
throw backtrack;
|
||||||
|
@ -1501,10 +1499,8 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
||||||
int lastOffset;
|
int lastOffset;
|
||||||
switch (LT(1)) {
|
switch (LT(1)) {
|
||||||
case IToken.tRBRACKET:
|
case IToken.tRBRACKET:
|
||||||
lastOffset = consume(IToken.tRBRACKET).getEndOffset();
|
|
||||||
break;
|
|
||||||
case IToken.tEOC:
|
case IToken.tEOC:
|
||||||
lastOffset = Integer.MAX_VALUE;
|
lastOffset = consume().getEndOffset();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw backtrack;
|
throw backtrack;
|
||||||
|
@ -1540,10 +1536,8 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
||||||
secondExpression = null;
|
secondExpression = null;
|
||||||
switch (LT(1)) {
|
switch (LT(1)) {
|
||||||
case IToken.tRPAREN:
|
case IToken.tRPAREN:
|
||||||
lastOffset = consume(IToken.tRPAREN).getEndOffset();
|
|
||||||
break;
|
|
||||||
case IToken.tEOC:
|
case IToken.tEOC:
|
||||||
lastOffset = Integer.MAX_VALUE;
|
lastOffset = consume().getEndOffset();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw backtrack;
|
throw backtrack;
|
||||||
|
@ -1959,13 +1953,26 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
||||||
// using-directive
|
// using-directive
|
||||||
int endOffset = consume(IToken.t_namespace).getEndOffset();
|
int endOffset = consume(IToken.t_namespace).getEndOffset();
|
||||||
IASTName name = null;
|
IASTName name = null;
|
||||||
if (LT(1) == IToken.tIDENTIFIER || LT(1) == IToken.tCOLONCOLON)
|
switch (LT(1)) {
|
||||||
|
case IToken.tIDENTIFIER:
|
||||||
|
case IToken.tCOLONCOLON:
|
||||||
|
case IToken.tCOMPLETION:
|
||||||
name = createName(name());
|
name = createName(name());
|
||||||
else
|
break;
|
||||||
|
default:
|
||||||
throwBacktrack(firstToken.getOffset(), endOffset
|
throwBacktrack(firstToken.getOffset(), endOffset
|
||||||
- firstToken.getOffset());
|
- firstToken.getOffset());
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (LT(1)) {
|
||||||
|
case IToken.tSEMI:
|
||||||
|
case IToken.tEOC:
|
||||||
|
endOffset = consume().getEndOffset();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw backtrack;
|
||||||
|
}
|
||||||
|
|
||||||
endOffset = consume(IToken.tSEMI).getEndOffset();
|
|
||||||
ICPPASTUsingDirective astUD = createUsingDirective();
|
ICPPASTUsingDirective astUD = createUsingDirective();
|
||||||
((ASTNode) astUD).setOffsetAndLength(firstToken.getOffset(),
|
((ASTNode) astUD).setOffsetAndLength(firstToken.getOffset(),
|
||||||
endOffset - firstToken.getOffset());
|
endOffset - firstToken.getOffset());
|
||||||
|
@ -1983,7 +1990,16 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
||||||
}
|
}
|
||||||
|
|
||||||
IASTName name = createName(name());
|
IASTName name = createName(name());
|
||||||
int end = consume(IToken.tSEMI).getEndOffset();
|
int end;
|
||||||
|
switch (LT(1)) {
|
||||||
|
case IToken.tSEMI:
|
||||||
|
case IToken.tEOC:
|
||||||
|
end = consume().getEndOffset();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw backtrack;
|
||||||
|
}
|
||||||
|
|
||||||
ICPPASTUsingDeclaration result = createUsingDeclaration();
|
ICPPASTUsingDeclaration result = createUsingDeclaration();
|
||||||
((ASTNode) result).setOffsetAndLength(firstToken.getOffset(), end
|
((ASTNode) result).setOffsetAndLength(firstToken.getOffset(), end
|
||||||
- firstToken.getOffset());
|
- firstToken.getOffset());
|
||||||
|
@ -4549,10 +4565,8 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
|
||||||
int l;
|
int l;
|
||||||
switch (LT(1)) {
|
switch (LT(1)) {
|
||||||
case IToken.tRBRACKET:
|
case IToken.tRBRACKET:
|
||||||
l = consume(IToken.tRBRACKET).getEndOffset();
|
|
||||||
break;
|
|
||||||
case IToken.tEOC:
|
case IToken.tEOC:
|
||||||
l = Integer.MAX_VALUE;
|
l = consume().getEndOffset();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw backtrack;
|
throw backtrack;
|
||||||
|
|
|
@ -25,9 +25,13 @@ import org.eclipse.cdt.core.dom.ast.IParameter;
|
||||||
import org.eclipse.cdt.core.dom.ast.IType;
|
import org.eclipse.cdt.core.dom.ast.IType;
|
||||||
import org.eclipse.cdt.core.dom.ast.ITypedef;
|
import org.eclipse.cdt.core.dom.ast.ITypedef;
|
||||||
import org.eclipse.cdt.core.dom.ast.IVariable;
|
import org.eclipse.cdt.core.dom.ast.IVariable;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPDelegate;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPField;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPField;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionTemplate;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPUsingDeclaration;
|
||||||
import org.eclipse.cdt.core.model.IWorkingCopy;
|
import org.eclipse.cdt.core.model.IWorkingCopy;
|
||||||
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
|
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility;
|
||||||
import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
|
import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
|
||||||
|
@ -229,7 +233,7 @@ public class DOMCompletionContributor implements ICompletionContributor {
|
||||||
if (binding instanceof ITypedef) {
|
if (binding instanceof ITypedef) {
|
||||||
imageDescriptor = CElementImageProvider.getTypedefImageDescriptor();
|
imageDescriptor = CElementImageProvider.getTypedefImageDescriptor();
|
||||||
} else if (binding instanceof ICompositeType) {
|
} else if (binding instanceof ICompositeType) {
|
||||||
if (((ICompositeType)binding).getKey() == ICPPClassType.k_class)
|
if (((ICompositeType)binding).getKey() == ICPPClassType.k_class || binding instanceof ICPPClassTemplate)
|
||||||
imageDescriptor = CElementImageProvider.getClassImageDescriptor();
|
imageDescriptor = CElementImageProvider.getClassImageDescriptor();
|
||||||
else if (((ICompositeType)binding).getKey() == ICompositeType.k_struct)
|
else if (((ICompositeType)binding).getKey() == ICompositeType.k_struct)
|
||||||
imageDescriptor = CElementImageProvider.getStructImageDescriptor();
|
imageDescriptor = CElementImageProvider.getStructImageDescriptor();
|
||||||
|
@ -253,6 +257,12 @@ public class DOMCompletionContributor implements ICompletionContributor {
|
||||||
imageDescriptor = CElementImageProvider.getVariableImageDescriptor();
|
imageDescriptor = CElementImageProvider.getVariableImageDescriptor();
|
||||||
} else if (binding instanceof ICPPNamespace) {
|
} else if (binding instanceof ICPPNamespace) {
|
||||||
imageDescriptor = CElementImageProvider.getNamespaceImageDescriptor();
|
imageDescriptor = CElementImageProvider.getNamespaceImageDescriptor();
|
||||||
|
} else if (binding instanceof ICPPFunctionTemplate) {
|
||||||
|
imageDescriptor = CElementImageProvider.getFunctionImageDescriptor();
|
||||||
|
} else if (binding instanceof ICPPUsingDeclaration) {
|
||||||
|
ICPPDelegate[] delegates = ((ICPPUsingDeclaration)binding).getDelegates();
|
||||||
|
if (delegates.length > 0)
|
||||||
|
return getImage(delegates[0]);
|
||||||
}
|
}
|
||||||
} catch (DOMException e) {
|
} catch (DOMException e) {
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue