Browse Source

Fixed code completion in files containing character literals like '\xFF'.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@161 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 21 years ago
parent
commit
f757e0045c
  1. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
  2. 28
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/ExpressionFinder.cs

2
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj

@ -73,6 +73,8 @@ @@ -73,6 +73,8 @@
<Name>ICSharpCode.Core</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="Src\PrettyPrinter\Gui\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />

28
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/ExpressionFinder.cs

@ -257,18 +257,22 @@ namespace CSharpBinding.Parser @@ -257,18 +257,22 @@ namespace CSharpBinding.Parser
bool ReadChar(StringBuilder outText, string text, ref int curOffset)
{
char first = text[curOffset];
if (curOffset <= initialOffset) {
outText.Append(text[curOffset++]);
}
if (curOffset <= initialOffset) {
outText.Append(text[curOffset++]);
}
// special case: '\''
if(first == '\\' && curOffset <= initialOffset) {
outText.Append(text[curOffset++]);
char first = text[curOffset++];
outText.Append(first);
if (curOffset > initialOffset)
return false;
char second = text[curOffset++];
outText.Append(second);
if (first == '\\') {
// character is escape sequence, so read one char more
char next;
do {
if (curOffset > initialOffset)
return false;
next = text[curOffset++];
outText.Append(next);
// unicode or hexadecimal character literals can have more content characters
} while((second == 'u' || second == 'x') && char.IsLetterOrDigit(next));
}
return text[curOffset - 1] == '\'';
}

Loading…
Cancel
Save