From ab66ebb70ca1b6a1ea115f2b38cdef8b241c758d Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Mon, 6 Aug 2007 17:10:13 +0000 Subject: [PATCH 1/6] Fixed SD2-1367: Templates ignore tab/indentation options git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2634 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Gui/PackageFilesView.cs | 4 +-- .../Src/Gui/WixDialogDesignerGenerator.cs | 2 +- .../XmlEditor/Project/Src/XmlView.cs | 2 +- .../Project/Src/Actions/MiscActions.cs | 6 ++-- .../Document/DefaultTextEditorProperties.cs | 5 +++ .../Src/Document/ITextEditorProperties.cs | 11 ++++++ .../Project/Src/Gui/Dialogs/NewFileDialog.cs | 10 +++++- .../Templates/Project/ProjectDescriptor.cs | 11 +++--- .../Src/Project/MSBuildBasedProject.cs | 1 + .../Solution/AbstractSolutionFolder.cs | 2 +- .../CodeDOMGeneratorUtility.cs | 14 ++------ .../SharpDevelopTextEditorProperties.cs | 34 ++++++++++++++++--- .../OptionPanels/BehaviorTextEditorPanel.cs | 14 +++----- 13 files changed, 78 insertions(+), 38 deletions(-) diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/PackageFilesView.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/PackageFilesView.cs index 8eddf39767..16132ad6e3 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/PackageFilesView.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/PackageFilesView.cs @@ -113,7 +113,7 @@ namespace ICSharpCode.WixBinding { if (!UpdateOpenFile(document)) { ITextEditorProperties properties = new SharpDevelopTextEditorProperties(); - document.Save(properties.LineTerminator, properties.ConvertTabsToSpaces, properties.TabIndent); + document.Save(properties.LineTerminator, properties.ConvertTabsToSpaces, properties.IndentationSize); } IsDirty = false; } @@ -304,7 +304,7 @@ namespace ICSharpCode.WixBinding string GetWixXml(XmlElement element) { ITextEditorProperties properties = new SharpDevelopTextEditorProperties(); - return WixDocument.GetXml(element, properties.LineTerminator, properties.ConvertTabsToSpaces, properties.TabIndent); + return WixDocument.GetXml(element, properties.LineTerminator, properties.ConvertTabsToSpaces, properties.IndentationSize); } /// diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesignerGenerator.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesignerGenerator.cs index 9c8cbd9ded..0de2ffafd5 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesignerGenerator.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDialogDesignerGenerator.cs @@ -74,7 +74,7 @@ namespace ICSharpCode.WixBinding } // Get the replacement dialog xml. ITextEditorProperties properties = view.TextEditorControl.TextEditorProperties; - string replacementXml = WixDocument.GetXml(dialogElement, properties.LineTerminator, properties.ConvertTabsToSpaces, properties.TabIndent); + string replacementXml = WixDocument.GetXml(dialogElement, properties.LineTerminator, properties.ConvertTabsToSpaces, properties.IndentationSize); // Replace the xml and select the inserted text. WixDocumentEditor editor = new WixDocumentEditor(view.TextEditorControl.ActiveTextAreaControl); diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs index d5be962044..0f92c51df6 100644 --- a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs @@ -1001,7 +1001,7 @@ namespace ICSharpCode.XmlEditor { XmlTextWriter writer = new XmlTextWriter(textWriter); if (xmlEditor.TextEditorProperties.ConvertTabsToSpaces) { - writer.Indentation = xmlEditor.TextEditorProperties.TabIndent; + writer.Indentation = xmlEditor.TextEditorProperties.IndentationSize; writer.IndentChar = ' '; } else { writer.Indentation = 1; diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs index ea6b4cac08..25ec941302 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/MiscActions.cs @@ -25,7 +25,7 @@ namespace ICSharpCode.TextEditor.Actions StringBuilder indent = new StringBuilder(); if (document.TextEditorProperties.ConvertTabsToSpaces) { - int tabIndent = document.TextEditorProperties.TabIndent; + int tabIndent = document.TextEditorProperties.IndentationSize; if (textArea != null) { int column = textArea.TextView.GetVisualColumn(textArea.Caret.Line, textArea.Caret.Column); indent.Append(new String(' ', tabIndent - column % tabIndent)); @@ -149,7 +149,7 @@ namespace ICSharpCode.TextEditor.Actions charactersToRemove = 1; } else if(document.GetCharAt(line.Offset) == ' ') { int leadingSpaces = 1; - int tabIndent = document.TextEditorProperties.TabIndent; + int tabIndent = document.TextEditorProperties.IndentationSize; for (leadingSpaces = 1; leadingSpaces < line.Length && document.GetCharAt(line.Offset + leadingSpaces) == ' '; leadingSpaces++) { // deliberately empty } @@ -204,7 +204,7 @@ namespace ICSharpCode.TextEditor.Actions // column is updated to that column. LineSegment line = textArea.Document.GetLineSegmentForOffset(textArea.Caret.Offset); string startOfLine = textArea.Document.GetText(line.Offset,textArea.Caret.Offset - line.Offset); - int tabIndent = textArea.Document.TextEditorProperties.TabIndent; + int tabIndent = textArea.Document.TextEditorProperties.IndentationSize; int currentColumn = textArea.Caret.Column; int remainder = currentColumn % tabIndent; if (remainder == 0) { diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DefaultTextEditorProperties.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DefaultTextEditorProperties.cs index 9dcc28a63c..850e11c7ca 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DefaultTextEditorProperties.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/DefaultTextEditorProperties.cs @@ -19,6 +19,7 @@ namespace ICSharpCode.TextEditor.Document public class DefaultTextEditorProperties : ITextEditorProperties { int tabIndent = 4; + int indentationSize = 4; IndentStyle indentStyle = IndentStyle.Smart; DocumentSelectionMode documentSelectionMode = DocumentSelectionMode.Normal; Encoding encoding = System.Text.Encoding.UTF8; @@ -73,6 +74,10 @@ namespace ICSharpCode.TextEditor.Document } } + public int IndentationSize { + get { return indentationSize; } + set { indentationSize = value; } + } public IndentStyle IndentStyle { get { diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/ITextEditorProperties.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/ITextEditorProperties.cs index d98ffe9d4a..ae16d68792 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/ITextEditorProperties.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/ITextEditorProperties.cs @@ -128,11 +128,22 @@ namespace ICSharpCode.TextEditor.Document set; } + /// + /// The width of a tab. + /// int TabIndent { // is wrapped in text editor control get; set; } + /// + /// The amount of spaces a tab is converted to if ConvertTabsToSpaces is true. + /// + int IndentationSize { + get; + set; + } + IndentStyle IndentStyle { // is wrapped in text editor control get; set; diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs b/src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs index bc3a22347f..0055b6a173 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs +++ b/src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs @@ -5,6 +5,7 @@ // $Revision$ // +using ICSharpCode.TextEditor.Document; using System; using System.Collections; using System.Collections.Generic; @@ -12,8 +13,8 @@ using System.Drawing; using System.IO; using System.Text; using System.Windows.Forms; - using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; using ICSharpCode.SharpDevelop.Gui.XmlForms; using ICSharpCode.SharpDevelop.Internal.Templates; using ICSharpCode.SharpDevelop.Project; @@ -372,6 +373,13 @@ namespace ICSharpCode.SharpDevelop.Gui // Parse twice so that tags used in included standard header are parsed string parsedContent = StringParser.Parse(StringParser.Parse(content)); + if (parsedContent != null) { + if (SharpDevelopTextEditorProperties.IndentationString != "\t") { + parsedContent = parsedContent.Replace("\t", SharpDevelopTextEditorProperties.IndentationString); + } + } + + // when newFile.Name is "${Path}/${FileName}", there might be a useless '/' in front of the file name // if the file is created when no project is opened. So we remove single '/' or '\', but not double // '\\' (project is saved on network share). diff --git a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs index c03245f91b..4875c3593f 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs +++ b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs @@ -5,17 +5,16 @@ // $Revision$ // +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Xml; - using ICSharpCode.Core; using ICSharpCode.SharpDevelop.Project; - +using Import = System.Collections.Generic.KeyValuePair; using MSBuild = Microsoft.Build.BuildEngine; -using Import = System.Collections.Generic.KeyValuePair; namespace ICSharpCode.SharpDevelop.Internal.Templates { @@ -357,7 +356,11 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates } else { // Textual content StreamWriter sr = new StreamWriter(File.Create(fileName), ParserService.DefaultFileEncoding); - sr.Write(StringParser.Parse(StringParser.Parse(file.Content, new string[,] { {"ProjectName", projectCreateInformation.ProjectName}, {"FileName", fileName}}))); + string fileContent = StringParser.Parse(file.Content, new string[,] { {"ProjectName", projectCreateInformation.ProjectName}, {"FileName", fileName}}); + if (SharpDevelopTextEditorProperties.IndentationString != "\t") { + fileContent = fileContent.Replace("\t", SharpDevelopTextEditorProperties.IndentationString); + } + sr.Write(fileContent); sr.Close(); } } catch (Exception ex) { diff --git a/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs b/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs index c8ba31f4f4..ff39b4b102 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs @@ -326,6 +326,7 @@ namespace ICSharpCode.SharpDevelop.Project return property; } } + location = PropertyStorageLocations.Unknown; group = null; return null; diff --git a/src/Main/Base/Project/Src/Project/Solution/AbstractSolutionFolder.cs b/src/Main/Base/Project/Src/Project/Solution/AbstractSolutionFolder.cs index e7c6b89164..276981caf9 100644 --- a/src/Main/Base/Project/Src/Project/Solution/AbstractSolutionFolder.cs +++ b/src/Main/Base/Project/Src/Project/Solution/AbstractSolutionFolder.cs @@ -26,7 +26,7 @@ namespace ICSharpCode.SharpDevelop.Project /// /// Gets the object used for thread-safe synchronization. - /// All members lock on this object, but if you manipulate underlying structures + /// Thread-safe members lock on this object, but if you manipulate underlying structures /// (such as the MSBuild project for MSBuildBasedProjects) directly, you will have to lock on this object. /// [Browsable(false)] diff --git a/src/Main/Base/Project/Src/Services/AmbienceService/CodeDOMGeneratorUtility.cs b/src/Main/Base/Project/Src/Services/AmbienceService/CodeDOMGeneratorUtility.cs index 11e27b108d..774fdef4f9 100644 --- a/src/Main/Base/Project/Src/Services/AmbienceService/CodeDOMGeneratorUtility.cs +++ b/src/Main/Base/Project/Src/Services/AmbienceService/CodeDOMGeneratorUtility.cs @@ -5,12 +5,12 @@ // $Revision$ // +using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor; using System; using System.CodeDom; using System.CodeDom.Compiler; using System.Collections; using System.Text; - using ICSharpCode.Core; namespace ICSharpCode.SharpDevelop @@ -24,18 +24,8 @@ namespace ICSharpCode.SharpDevelop options.BracingStyle = AmbienceService.CodeGenerationProperties.Get("StartBlockOnSameLine", true) ? "Block" : "C"; options.ElseOnClosing = AmbienceService.CodeGenerationProperties.Get("ElseOnClosing", true); + options.IndentString = SharpDevelopTextEditorProperties.IndentationString; - Properties docProperties = ((Properties)PropertyService.Get("ICSharpCode.TextEditor.Document.Document.DefaultDocumentAggregatorProperties", new Properties())); - - if ((bool)docProperties.Get("TabsToSpaces", false)) { - StringBuilder indentationString = new StringBuilder(); - for (int i = 0; i < (int)docProperties.Get("IndentationSize", 4); ++i) { - indentationString.Append(' '); - } - options.IndentString = indentationString.ToString(); - } else { - options.IndentString = "\t"; - } return options; } } diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextEditorProperties.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextEditorProperties.cs index e150760304..3902d039cc 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextEditorProperties.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextEditorProperties.cs @@ -40,14 +40,39 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor } public int TabIndent { - get { - return properties.Get("TabIndent", 4); - - } + get { return properties.Get("TabIndent", 4); } set { + // FIX: don't allow to set tab size to zero as this will cause divide by zero exceptions in the text control. + // Zero isn't a setting that makes sense, anyway. + if (value < 1) value = 1; properties.Set("TabIndent", value); } } + + public int IndentationSize { + get { return properties.Get("IndentationSize", 4); } + set { + if (value < 1) value = 1; + properties.Set("IndentationSize", value); + indentationString = null; + } + } + + static string indentationString; + + public static string IndentationString { + get { + if (indentationString == null) { + SharpDevelopTextEditorProperties p = new SharpDevelopTextEditorProperties(); + if (p.ConvertTabsToSpaces) + return new string(' ', p.IndentationSize); + else + return "\t"; + } + return indentationString; + } + } + public IndentStyle IndentStyle { get { return (IndentStyle)properties.Get("IndentStyle", IndentStyle.Smart); @@ -169,6 +194,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor } set { properties.Set("TabsToSpaces", value); + indentationString = null; } } public bool UseAntiAliasedFont { diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/OptionPanels/BehaviorTextEditorPanel.cs b/src/Main/Base/Project/Src/TextEditor/Gui/OptionPanels/BehaviorTextEditorPanel.cs index 63902f9efd..e2f93d1ca7 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/OptionPanels/BehaviorTextEditorPanel.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/OptionPanels/BehaviorTextEditorPanel.cs @@ -48,7 +48,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.OptionPanels public override bool StorePanelContents() { - ((Properties)CustomizationObject).Set("TabsToSpaces", ((CheckBox)ControlDictionary["convertTabsToSpacesCheckBox"]).Checked); + SharpDevelopTextEditorProperties prop = new SharpDevelopTextEditorProperties(); + prop.ConvertTabsToSpaces = ((CheckBox)ControlDictionary["convertTabsToSpacesCheckBox"]).Checked; ((Properties)CustomizationObject).Set("MouseWheelScrollDown", ((ComboBox)ControlDictionary["mouseWhellDirectionComboBox"]).SelectedIndex == 0); ((Properties)CustomizationObject).Set("AutoInsertCurlyBracket", ((CheckBox)ControlDictionary["autoinsertCurlyBraceCheckBox"]).Checked); @@ -59,19 +60,14 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.OptionPanels ((Properties)CustomizationObject).Set("IndentStyle", (IndentStyle)((ComboBox)ControlDictionary["indentStyleComboBox"]).SelectedIndex); + try { - int tabSize = Int32.Parse(ControlDictionary["tabSizeTextBox"].Text); - - // FIX: don't allow to set tab size to zero as this will cause divide by zero exceptions in the text control. - // Zero isn't a setting that makes sense, anyway. - if (tabSize > 0) { - ((Properties)CustomizationObject).Set("TabIndent", tabSize); - } + prop.TabIndent = Int32.Parse(ControlDictionary["tabSizeTextBox"].Text); } catch (Exception) { } try { - ((Properties)CustomizationObject).Set("IndentationSize", Int32.Parse(ControlDictionary["indentSizeTextBox"].Text)); + prop.IndentationSize = Int32.Parse(ControlDictionary["indentSizeTextBox"].Text); } catch (Exception) { } From f86decdab154244a0b2716755f545834951878f2 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Mon, 6 Aug 2007 18:51:51 +0000 Subject: [PATCH 2/6] Fixed SD2-1325: SharpDevelop brought in front of running console app git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2635 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Services/Debugger/DebuggerService.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs b/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs index 2933ba74ab..7055acec34 100644 --- a/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs +++ b/src/Main/Base/Project/Src/Services/Debugger/DebuggerService.cs @@ -101,14 +101,21 @@ namespace ICSharpCode.SharpDevelop.Debugging public static event EventHandler DebugStopped; static void OnDebugStarted(object sender, EventArgs e) + { + // OnDebugStarted runs on the main thread, but for some reason we + // have to delay the layout change a bit to work around SD2-1325 + WorkbenchSingleton.SafeThreadAsyncCall(OnDebugStartedInvoked); + if (DebugStarted != null) + DebugStarted(null, EventArgs.Empty); + } + + static void OnDebugStartedInvoked() { WorkbenchSingleton.Workbench.WorkbenchLayout.StoreConfiguration(); oldLayoutConfiguration = LayoutConfiguration.CurrentLayoutName; LayoutConfiguration.CurrentLayoutName = "Debug"; ClearDebugMessages(); - if (DebugStarted != null) - DebugStarted(null, e); } static void OnDebugStopped(object sender, EventArgs e) From 9d73b7042e6e48845e325df5d240bdf6babb16c0 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Tue, 7 Aug 2007 11:56:27 +0000 Subject: [PATCH 3/6] C# lexer: add support for 32-bit unicode escape sequences (including those that represent surrogate pairs) git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2636 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Lexer/CSharp/Lexer.cs | 55 +++++++++++++++++-- .../Test/Lexer/CSharp/NumberLexerTest.cs | 14 +++++ 2 files changed, 64 insertions(+), 5 deletions(-) diff --git a/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs b/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs index fc392520b3..19e993c9ff 100644 --- a/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs +++ b/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs @@ -377,8 +377,13 @@ namespace ICSharpCode.NRefactory.Parser.CSharp if (ch == '\\') { originalValue.Append('\\'); - originalValue.Append(ReadEscapeSequence(out ch)); - sb.Append(ch); + string surrogatePair; + originalValue.Append(ReadEscapeSequence(out ch, out surrogatePair)); + if (surrogatePair != null) { + sb.Append(surrogatePair); + } else { + sb.Append(ch); + } } else if (ch == '\n') { errors.Error(y, x, String.Format("No new line is allowed inside a string literal")); break; @@ -431,14 +436,28 @@ namespace ICSharpCode.NRefactory.Parser.CSharp } char[] escapeSequenceBuffer = new char[12]; - string ReadEscapeSequence(out char ch) + + /// + /// reads an escape sequence + /// + /// The character represented by the escape sequence, + /// or '\0' if there was an error or the escape sequence represents a character that + /// can be represented only be a suggorate pair + /// Null, except when the character represented + /// by the escape sequence can only be represented by a surrogate pair (then the string + /// contains the surrogate pair) + /// The escape sequence + string ReadEscapeSequence(out char ch, out string surrogatePair) { + surrogatePair = null; + int nextChar = ReaderRead(); if (nextChar == -1) { errors.Error(Line, Col, String.Format("End of file reached inside escape sequence")); ch = '\0'; return String.Empty; } + int number; char c = (char)nextChar; int curPos = 1; escapeSequenceBuffer[0] = c; @@ -478,8 +497,9 @@ namespace ICSharpCode.NRefactory.Parser.CSharp break; case 'u': case 'x': + // 16 bit unicode character c = (char)ReaderRead(); - int number = GetHexNumber(c); + number = GetHexNumber(c); escapeSequenceBuffer[curPos++] = c; if (number < 0) { @@ -497,6 +517,27 @@ namespace ICSharpCode.NRefactory.Parser.CSharp } ch = (char)number; break; + case 'U': + // 32 bit unicode character + number = 0; + for (int i = 0; i < 8; ++i) { + if (IsHex((char)ReaderPeek())) { + c = (char)ReaderRead(); + int idx = GetHexNumber(c); + escapeSequenceBuffer[curPos++] = c; + number = 16 * number + idx; + } else { + errors.Error(Line, Col - 1, String.Format("Invalid char in literal : {0}", (char)ReaderPeek())); + break; + } + } + if (number > 0xffff) { + ch = '\0'; + surrogatePair = char.ConvertFromUtf32(number); + } else { + ch = (char)number; + } + break; default: errors.Error(Line, Col, String.Format("Unexpected escape sequence : {0}", c)); ch = '\0'; @@ -518,7 +559,11 @@ namespace ICSharpCode.NRefactory.Parser.CSharp char chValue = ch; string escapeSequence = String.Empty; if (ch == '\\') { - escapeSequence = ReadEscapeSequence(out chValue); + string surrogatePair; + escapeSequence = ReadEscapeSequence(out chValue, out surrogatePair); + if (surrogatePair != null) { + errors.Error(y, x, String.Format("The unicode character must be represented by a surrogate pair and does not fit into a System.Char")); + } } unchecked { diff --git a/src/Libraries/NRefactory/Test/Lexer/CSharp/NumberLexerTest.cs b/src/Libraries/NRefactory/Test/Lexer/CSharp/NumberLexerTest.cs index 7b53e21112..969c5a8cdc 100644 --- a/src/Libraries/NRefactory/Test/Lexer/CSharp/NumberLexerTest.cs +++ b/src/Libraries/NRefactory/Test/Lexer/CSharp/NumberLexerTest.cs @@ -124,6 +124,20 @@ namespace ICSharpCode.NRefactory.Tests.Lexer.CSharp { CheckToken(@"@""-->""""<--""", @"-->""<--"); CheckToken(@"""-->\""<--""", "-->\"<--"); + + CheckToken(@"""\U00000041""", "\U00000041"); + CheckToken(@"""\U00010041""", "\U00010041"); + } + + [Test] + public void TestCharLiteral() + { + CheckToken(@"'a'", 'a'); + CheckToken(@"'\u0041'", '\u0041'); + CheckToken(@"'\x41'", '\x41'); + CheckToken(@"'\x041'", '\x041'); + CheckToken(@"'\x0041'", '\x0041'); + CheckToken(@"'\U00000041'", '\U00000041'); } } } From 9dbd77c0d1123af5963651fc0a3331d1473d3c63 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Tue, 7 Aug 2007 13:04:12 +0000 Subject: [PATCH 4/6] C# parser: allow unicode escape sequences in identifier names (yes, "int numb\u0065r;" is valid C#!) git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2637 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Lexer/CSharp/Lexer.cs | 60 +++++++++++++++---- .../Test/Lexer/CSharp/CustomLexerTests.cs | 48 ++++++++++----- 2 files changed, 79 insertions(+), 29 deletions(-) diff --git a/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs b/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs index 19e993c9ff..03a3fdd88e 100644 --- a/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs +++ b/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs @@ -21,7 +21,8 @@ namespace ICSharpCode.NRefactory.Parser.CSharp void ReadPreProcessingDirective() { Location start = new Location(Col - 1, Line); - string directive = ReadIdent('#'); + bool canBeKeyword; + string directive = ReadIdent('#', out canBeKeyword); string argument = ReadToEndOfLine(); this.specialTracker.AddPreprocessingDirective(directive, argument.Trim(), start, new Location(start.X + directive.Length + argument.Length, start.Y)); } @@ -80,7 +81,8 @@ namespace ICSharpCode.NRefactory.Parser.CSharp if (ch == '"') { token = ReadVerbatimString(); } else if (Char.IsLetterOrDigit(ch) || ch == '_') { - token = new Token(Tokens.Identifier, x - 1, y, ReadIdent(ch)); + bool canBeKeyword; + token = new Token(Tokens.Identifier, x - 1, y, ReadIdent(ch, out canBeKeyword)); } else { errors.Error(y, x, String.Format("Unexpected char in Lexer.Next() : {0}", ch)); continue; @@ -89,13 +91,16 @@ namespace ICSharpCode.NRefactory.Parser.CSharp break; default: ch = (char)nextChar; - if (Char.IsLetter(ch) || ch == '_') { + if (Char.IsLetter(ch) || ch == '_' || ch == '\\') { int x = Col - 1; // Col was incremented above, but we want the start of the identifier int y = Line; - string s = ReadIdent(ch); - int keyWordToken = Keywords.GetToken(s); - if (keyWordToken >= 0) { - return new Token(keyWordToken, x, y); + bool canBeKeyword; + string s = ReadIdent(ch, out canBeKeyword); + if (canBeKeyword) { + int keyWordToken = Keywords.GetToken(s); + if (keyWordToken >= 0) { + return new Token(keyWordToken, x, y); + } } return new Token(Tokens.Identifier, x, y, s); } else if (Char.IsDigit(ch)) { @@ -120,16 +125,39 @@ namespace ICSharpCode.NRefactory.Parser.CSharp const int MAX_IDENTIFIER_LENGTH = 512; char[] identBuffer = new char[MAX_IDENTIFIER_LENGTH]; - string ReadIdent(char ch) + string ReadIdent(char ch, out bool canBeKeyword) { int peek; - int curPos = 1; - identBuffer[0] = ch; - while (IsIdentifierPart(peek = ReaderPeek())) { - ReaderRead(); + int curPos = 0; + canBeKeyword = true; + while (true) { + if (ch == '\\') { + peek = ReaderPeek(); + if (peek != 'u' && peek != 'U') { + errors.Error(Line, Col, "Identifiers can only contain unicode escape sequences"); + } + canBeKeyword = false; + string surrogatePair; + ReadEscapeSequence(out ch, out surrogatePair); + if (surrogatePair != null) { + if (!char.IsLetterOrDigit(surrogatePair, 0)) { + errors.Error(Line, Col, "Unicode escape sequences in identifiers cannot be used to represent characters that are invalid in identifiers"); + } + for (int i = 0; i < surrogatePair.Length - 1; i++) { + if (curPos < MAX_IDENTIFIER_LENGTH) { + identBuffer[curPos++] = surrogatePair[i]; + } + } + ch = surrogatePair[surrogatePair.Length - 1]; + } else { + if (!IsIdentifierPart(ch)) { + errors.Error(Line, Col, "Unicode escape sequences in identifiers cannot be used to represent characters that are invalid in identifiers"); + } + } + } if (curPos < MAX_IDENTIFIER_LENGTH) { - identBuffer[curPos++] = (char)peek; + identBuffer[curPos++] = ch; } else { errors.Error(Line, Col, String.Format("Identifier too long")); while (IsIdentifierPart(ReaderPeek())) { @@ -137,6 +165,12 @@ namespace ICSharpCode.NRefactory.Parser.CSharp } break; } + peek = ReaderPeek(); + if (IsIdentifierPart(peek) || peek == '\\') { + ch = (char)ReaderRead(); + } else { + break; + } } return new String(identBuffer, 0, curPos); } diff --git a/src/Libraries/NRefactory/Test/Lexer/CSharp/CustomLexerTests.cs b/src/Libraries/NRefactory/Test/Lexer/CSharp/CustomLexerTests.cs index f5864e2db5..528647acd4 100644 --- a/src/Libraries/NRefactory/Test/Lexer/CSharp/CustomLexerTests.cs +++ b/src/Libraries/NRefactory/Test/Lexer/CSharp/CustomLexerTests.cs @@ -32,41 +32,57 @@ namespace ICSharpCode.NRefactory.Tests.Lexer.CSharp Assert.AreEqual(Tokens.EOF, lexer.NextToken().kind); } - [Test] - public void TestIdentifier() + void CheckIdentifier(string text, string actualIdentifier) { - ILexer lexer = GenerateLexer(new StringReader("a_Bc05")); + ILexer lexer = GenerateLexer(new StringReader(text)); Token t = lexer.NextToken(); Assert.AreEqual(Tokens.Identifier, t.kind); - Assert.AreEqual("a_Bc05", t.val); + Assert.AreEqual(actualIdentifier, t.val); + t = lexer.NextToken(); + Assert.AreEqual(Tokens.EOF, t.kind); + Assert.AreEqual("", lexer.Errors.ErrorOutput); + } + + [Test] + public void TestIdentifier() + { + CheckIdentifier("a_Bc05", "a_Bc05"); } [Test] public void TestIdentifierStartingWithUnderscore() { - ILexer lexer = GenerateLexer(new StringReader("_Bc05")); - Token t = lexer.NextToken(); - Assert.AreEqual(Tokens.Identifier, t.kind); - Assert.AreEqual("_Bc05", t.val); + CheckIdentifier("_Bc05", "_Bc05"); + } + + [Test] + public void TestIdentifierStartingWithEscapeSequence() + { + CheckIdentifier(@"\u006cexer", "lexer"); + } + + [Test] + public void TestIdentifierContainingEscapeSequence() + { + CheckIdentifier(@"l\U00000065xer", "lexer"); } [Test] public void TestKeyWordAsIdentifier() { - ILexer lexer = GenerateLexer(new StringReader("@int")); - Token t = lexer.NextToken(); - Assert.AreEqual(Tokens.Identifier, t.kind); - Assert.AreEqual("int", t.val); + CheckIdentifier("@int", "int"); } + [Test] + public void TestKeywordWithEscapeSequenceIsIdentifier() + { + CheckIdentifier(@"i\u006et", "int"); + } [Test] public void TestKeyWordAsIdentifierStartingWithUnderscore() { - ILexer lexer = GenerateLexer(new StringReader("@_int")); - Token t = lexer.NextToken(); - Assert.AreEqual(Tokens.Identifier, t.kind); - Assert.AreEqual("_int", t.val); + CheckIdentifier("@_int", "_int"); } [Test] From 670b0d52127dc09da67519f59a1a1cfd893c8836 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Tue, 7 Aug 2007 13:59:29 +0000 Subject: [PATCH 5/6] Fixed C# parser bug regarding integer literals between long.MaxValue + 1 and ulong.MaxValue. C# spec 2.4.4.2: Implemented rules regarding int.MinValue and long.MinValue (they get tokenized to Token.Minus + Token.Literal(uint/ulong), but must be parsed as signed int/long) git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2638 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Lexer/CSharp/Lexer.cs | 4 +- .../Project/Src/Parser/CSharp/CSharpParser.cs | 21 + .../Project/Src/Parser/CSharp/Parser.cs | 565 +++++++++--------- .../Project/Src/Parser/CSharp/cs.ATG | 47 +- .../NRefactory/Project/Src/Parser/gen.bat | 3 - .../Test/Lexer/CSharp/NumberLexerTest.cs | 16 +- .../Expressions/PrimitiveExpressionTests.cs | 34 ++ 7 files changed, 395 insertions(+), 295 deletions(-) diff --git a/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs b/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs index 03a3fdd88e..329f04fc6f 100644 --- a/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs +++ b/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs @@ -321,7 +321,7 @@ namespace ICSharpCode.NRefactory.Parser.CSharp } // Try to determine a parsable value using ranges. (Quick hack!) - double d = 0; + decimal d = 0; if (ishex) { ulong result; if (ulong.TryParse(digit, NumberStyles.HexNumber, null, out result)) { @@ -331,7 +331,7 @@ namespace ICSharpCode.NRefactory.Parser.CSharp return new Token(Tokens.Literal, x, y, stringValue.ToString(), 0); } } else { - if (!Double.TryParse(digit, NumberStyles.Integer, null, out d)) { + if (!decimal.TryParse(digit, NumberStyles.Integer, null, out d)) { errors.Error(y, x, String.Format("Can't parse integral constant {0}", digit)); return new Token(Tokens.Literal, x, y, stringValue.ToString(), 0); } diff --git a/src/Libraries/NRefactory/Project/Src/Parser/CSharp/CSharpParser.cs b/src/Libraries/NRefactory/Project/Src/Parser/CSharp/CSharpParser.cs index 1702a1d98f..a48a4682b2 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/CSharp/CSharpParser.cs +++ b/src/Libraries/NRefactory/Project/Src/Parser/CSharp/CSharpParser.cs @@ -530,5 +530,26 @@ namespace ICSharpCode.NRefactory.Parser.CSharp return false; } } + + bool IsMostNegativeIntegerWithoutTypeSuffix() + { + Token token = la; + if (token.kind == Tokens.Literal) { + return token.val == "2147483648" || token.val == "9223372036854775808"; + } else { + return false; + } + } + + bool LastExpressionIsUnaryMinus(System.Collections.ArrayList expressions) + { + if (expressions.Count == 0) return false; + UnaryOperatorExpression uoe = expressions[expressions.Count - 1] as UnaryOperatorExpression; + if (uoe != null) { + return uoe.Op == UnaryOperatorType.Minus; + } else { + return false; + } + } } } diff --git a/src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs b/src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs index 6b04d80371..9b8512dc85 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs +++ b/src/Libraries/NRefactory/Project/Src/Parser/CSharp/Parser.cs @@ -823,39 +823,39 @@ templates); } void TypeParameterList( -#line 2011 "cs.ATG" +#line 2026 "cs.ATG" List templates) { -#line 2013 "cs.ATG" +#line 2028 "cs.ATG" AttributeSection section; List attributes = new List(); Expect(23); while (la.kind == 18) { AttributeSection( -#line 2017 "cs.ATG" +#line 2032 "cs.ATG" out section); -#line 2017 "cs.ATG" +#line 2032 "cs.ATG" attributes.Add(section); } Expect(1); -#line 2018 "cs.ATG" +#line 2033 "cs.ATG" templates.Add(new TemplateDefinition(t.val, attributes)); while (la.kind == 14) { lexer.NextToken(); while (la.kind == 18) { AttributeSection( -#line 2019 "cs.ATG" +#line 2034 "cs.ATG" out section); -#line 2019 "cs.ATG" +#line 2034 "cs.ATG" attributes.Add(section); } Expect(1); -#line 2020 "cs.ATG" +#line 2035 "cs.ATG" templates.Add(new TemplateDefinition(t.val, attributes)); } Expect(22); @@ -888,25 +888,25 @@ out typeRef, false); } void TypeParameterConstraintsClause( -#line 2024 "cs.ATG" +#line 2039 "cs.ATG" List templates) { -#line 2025 "cs.ATG" +#line 2040 "cs.ATG" string name = ""; TypeReference type; Expect(1); -#line 2027 "cs.ATG" +#line 2042 "cs.ATG" if (t.val != "where") Error("where expected"); Expect(1); -#line 2028 "cs.ATG" +#line 2043 "cs.ATG" name = t.val; Expect(9); TypeParameterConstraintsClauseBase( -#line 2030 "cs.ATG" +#line 2045 "cs.ATG" out type); -#line 2031 "cs.ATG" +#line 2046 "cs.ATG" TemplateDefinition td = null; foreach (TemplateDefinition d in templates) { if (d.Name == name) { @@ -919,10 +919,10 @@ out type); while (la.kind == 14) { lexer.NextToken(); TypeParameterConstraintsClauseBase( -#line 2040 "cs.ATG" +#line 2055 "cs.ATG" out type); -#line 2041 "cs.ATG" +#line 2056 "cs.ATG" td = null; foreach (TemplateDefinition d in templates) { if (d.Name == name) { @@ -1256,33 +1256,33 @@ out r, canBeUnbound); } void TypeName( -#line 1954 "cs.ATG" +#line 1969 "cs.ATG" out TypeReference typeRef, bool canBeUnbound) { -#line 1955 "cs.ATG" +#line 1970 "cs.ATG" List typeArguments = null; string alias = null; string qualident; if ( -#line 1960 "cs.ATG" +#line 1975 "cs.ATG" la.kind == Tokens.Identifier && Peek(1).kind == Tokens.DoubleColon) { lexer.NextToken(); -#line 1961 "cs.ATG" +#line 1976 "cs.ATG" alias = t.val; Expect(10); } Qualident( -#line 1964 "cs.ATG" +#line 1979 "cs.ATG" out qualident); if (la.kind == 23) { TypeArgumentList( -#line 1965 "cs.ATG" +#line 1980 "cs.ATG" out typeArguments, canBeUnbound); } -#line 1967 "cs.ATG" +#line 1982 "cs.ATG" if (alias == null) { typeRef = new TypeReference(qualident, typeArguments); } else if (alias == "global") { @@ -1293,22 +1293,22 @@ out typeArguments, canBeUnbound); } while ( -#line 1976 "cs.ATG" +#line 1991 "cs.ATG" DotAndIdent()) { Expect(15); -#line 1977 "cs.ATG" +#line 1992 "cs.ATG" typeArguments = null; Qualident( -#line 1978 "cs.ATG" +#line 1993 "cs.ATG" out qualident); if (la.kind == 23) { TypeArgumentList( -#line 1979 "cs.ATG" +#line 1994 "cs.ATG" out typeArguments, canBeUnbound); } -#line 1980 "cs.ATG" +#line 1995 "cs.ATG" typeRef = new InnerClassTypeReference(typeRef, qualident, typeArguments); } } @@ -2373,14 +2373,14 @@ out name); } void NullableQuestionMark( -#line 1985 "cs.ATG" +#line 2000 "cs.ATG" ref TypeReference typeRef) { -#line 1986 "cs.ATG" +#line 2001 "cs.ATG" List typeArguments = new List(1); Expect(12); -#line 1990 "cs.ATG" +#line 2005 "cs.ATG" if (typeRef != null) typeArguments.Add(typeRef); typeRef = new TypeReference("System.Nullable", typeArguments); @@ -4004,8 +4004,8 @@ out Expression uExpr) { #line 1629 "cs.ATG" TypeReference type = null; - Expression expr; - ArrayList expressions = new ArrayList(); + Expression expr = null; + ArrayList expressions = new ArrayList(); uExpr = null; while (StartOf(26) || @@ -4062,11 +4062,28 @@ out type); expressions.Add(new CastExpression(type)); } } - PrimaryExpr( -#line 1655 "cs.ATG" + if ( +#line 1656 "cs.ATG" +LastExpressionIsUnaryMinus(expressions) && IsMostNegativeIntegerWithoutTypeSuffix()) { + Expect(2); + +#line 1659 "cs.ATG" + expressions.RemoveAt(expressions.Count - 1); + if (t.literalValue is uint) { + expr = new PrimitiveExpression(int.MinValue, int.MinValue.ToString()); + } else if (t.literalValue is ulong) { + expr = new PrimitiveExpression(long.MinValue, long.MinValue.ToString()); + } else { + throw new Exception("t.literalValue must be uint or ulong"); + } + + } else if (StartOf(27)) { + PrimaryExpr( +#line 1668 "cs.ATG" out expr); + } else SynErr(179); -#line 1655 "cs.ATG" +#line 1670 "cs.ATG" for (int i = 0; i < expressions.Count; ++i) { Expression nextExpression = i + 1 < expressions.Count ? (Expression)expressions[i + 1] : expr; if (expressions[i] is CastExpression) { @@ -4084,33 +4101,33 @@ out expr); } void ConditionalOrExpr( -#line 1825 "cs.ATG" +#line 1840 "cs.ATG" ref Expression outExpr) { -#line 1826 "cs.ATG" +#line 1841 "cs.ATG" Expression expr; ConditionalAndExpr( -#line 1828 "cs.ATG" +#line 1843 "cs.ATG" ref outExpr); while (la.kind == 26) { lexer.NextToken(); UnaryExpr( -#line 1828 "cs.ATG" +#line 1843 "cs.ATG" out expr); ConditionalAndExpr( -#line 1828 "cs.ATG" +#line 1843 "cs.ATG" ref expr); -#line 1828 "cs.ATG" +#line 1843 "cs.ATG" outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.LogicalOr, expr); } } void PrimaryExpr( -#line 1672 "cs.ATG" +#line 1687 "cs.ATG" out Expression pexpr) { -#line 1674 "cs.ATG" +#line 1689 "cs.ATG" TypeReference type = null; List typeList = null; bool isArrayCreation = false; @@ -4120,536 +4137,536 @@ out Expression pexpr) { if (la.kind == 112) { lexer.NextToken(); -#line 1682 "cs.ATG" +#line 1697 "cs.ATG" pexpr = new PrimitiveExpression(true, "true"); } else if (la.kind == 71) { lexer.NextToken(); -#line 1683 "cs.ATG" +#line 1698 "cs.ATG" pexpr = new PrimitiveExpression(false, "false"); } else if (la.kind == 89) { lexer.NextToken(); -#line 1684 "cs.ATG" +#line 1699 "cs.ATG" pexpr = new PrimitiveExpression(null, "null"); } else if (la.kind == 2) { lexer.NextToken(); -#line 1685 "cs.ATG" +#line 1700 "cs.ATG" pexpr = new PrimitiveExpression(t.literalValue, t.val); } else if ( -#line 1686 "cs.ATG" +#line 1701 "cs.ATG" la.kind == Tokens.Identifier && Peek(1).kind == Tokens.DoubleColon) { Expect(1); -#line 1687 "cs.ATG" +#line 1702 "cs.ATG" type = new TypeReference(t.val); Expect(10); -#line 1688 "cs.ATG" +#line 1703 "cs.ATG" pexpr = new TypeReferenceExpression(type); Expect(1); -#line 1689 "cs.ATG" +#line 1704 "cs.ATG" if (type.Type == "global") { type.IsGlobal = true; type.Type = (t.val ?? "?"); } else type.Type += "." + (t.val ?? "?"); } else if (la.kind == 1) { lexer.NextToken(); -#line 1691 "cs.ATG" +#line 1706 "cs.ATG" pexpr = new IdentifierExpression(t.val); } else if (la.kind == 20) { lexer.NextToken(); Expr( -#line 1693 "cs.ATG" +#line 1708 "cs.ATG" out expr); Expect(21); -#line 1693 "cs.ATG" +#line 1708 "cs.ATG" pexpr = new ParenthesizedExpression(expr); - } else if (StartOf(27)) { + } else if (StartOf(28)) { -#line 1695 "cs.ATG" +#line 1710 "cs.ATG" string val = null; switch (la.kind) { case 51: { lexer.NextToken(); -#line 1697 "cs.ATG" +#line 1712 "cs.ATG" val = "bool"; break; } case 53: { lexer.NextToken(); -#line 1698 "cs.ATG" +#line 1713 "cs.ATG" val = "byte"; break; } case 56: { lexer.NextToken(); -#line 1699 "cs.ATG" +#line 1714 "cs.ATG" val = "char"; break; } case 61: { lexer.NextToken(); -#line 1700 "cs.ATG" +#line 1715 "cs.ATG" val = "decimal"; break; } case 65: { lexer.NextToken(); -#line 1701 "cs.ATG" +#line 1716 "cs.ATG" val = "double"; break; } case 74: { lexer.NextToken(); -#line 1702 "cs.ATG" +#line 1717 "cs.ATG" val = "float"; break; } case 81: { lexer.NextToken(); -#line 1703 "cs.ATG" +#line 1718 "cs.ATG" val = "int"; break; } case 86: { lexer.NextToken(); -#line 1704 "cs.ATG" +#line 1719 "cs.ATG" val = "long"; break; } case 90: { lexer.NextToken(); -#line 1705 "cs.ATG" +#line 1720 "cs.ATG" val = "object"; break; } case 101: { lexer.NextToken(); -#line 1706 "cs.ATG" +#line 1721 "cs.ATG" val = "sbyte"; break; } case 103: { lexer.NextToken(); -#line 1707 "cs.ATG" +#line 1722 "cs.ATG" val = "short"; break; } case 107: { lexer.NextToken(); -#line 1708 "cs.ATG" +#line 1723 "cs.ATG" val = "string"; break; } case 115: { lexer.NextToken(); -#line 1709 "cs.ATG" +#line 1724 "cs.ATG" val = "uint"; break; } case 116: { lexer.NextToken(); -#line 1710 "cs.ATG" +#line 1725 "cs.ATG" val = "ulong"; break; } case 119: { lexer.NextToken(); -#line 1711 "cs.ATG" +#line 1726 "cs.ATG" val = "ushort"; break; } } -#line 1712 "cs.ATG" +#line 1727 "cs.ATG" t.val = ""; Expect(15); Expect(1); -#line 1712 "cs.ATG" +#line 1727 "cs.ATG" pexpr = new FieldReferenceExpression(new TypeReferenceExpression(val), t.val); } else if (la.kind == 110) { lexer.NextToken(); -#line 1714 "cs.ATG" +#line 1729 "cs.ATG" pexpr = new ThisReferenceExpression(); } else if (la.kind == 50) { lexer.NextToken(); -#line 1716 "cs.ATG" +#line 1731 "cs.ATG" Expression retExpr = new BaseReferenceExpression(); if (la.kind == 15) { lexer.NextToken(); Expect(1); -#line 1718 "cs.ATG" +#line 1733 "cs.ATG" retExpr = new FieldReferenceExpression(retExpr, t.val); } else if (la.kind == 18) { lexer.NextToken(); Expr( -#line 1719 "cs.ATG" +#line 1734 "cs.ATG" out expr); -#line 1719 "cs.ATG" +#line 1734 "cs.ATG" List indices = new List(); if (expr != null) { indices.Add(expr); } while (la.kind == 14) { lexer.NextToken(); Expr( -#line 1720 "cs.ATG" +#line 1735 "cs.ATG" out expr); -#line 1720 "cs.ATG" +#line 1735 "cs.ATG" if (expr != null) { indices.Add(expr); } } Expect(19); -#line 1721 "cs.ATG" +#line 1736 "cs.ATG" retExpr = new IndexerExpression(retExpr, indices); - } else SynErr(179); + } else SynErr(180); -#line 1722 "cs.ATG" +#line 1737 "cs.ATG" pexpr = retExpr; } else if (la.kind == 88) { lexer.NextToken(); NonArrayType( -#line 1723 "cs.ATG" +#line 1738 "cs.ATG" out type); -#line 1724 "cs.ATG" +#line 1739 "cs.ATG" List parameters = new List(); if (la.kind == 20) { lexer.NextToken(); -#line 1729 "cs.ATG" +#line 1744 "cs.ATG" ObjectCreateExpression oce = new ObjectCreateExpression(type, parameters); if (StartOf(21)) { Argument( -#line 1730 "cs.ATG" +#line 1745 "cs.ATG" out expr); -#line 1730 "cs.ATG" +#line 1745 "cs.ATG" if (expr != null) { parameters.Add(expr); } while (la.kind == 14) { lexer.NextToken(); Argument( -#line 1731 "cs.ATG" +#line 1746 "cs.ATG" out expr); -#line 1731 "cs.ATG" +#line 1746 "cs.ATG" if (expr != null) { parameters.Add(expr); } } } Expect(21); -#line 1733 "cs.ATG" +#line 1748 "cs.ATG" pexpr = oce; } else if (la.kind == 18) { lexer.NextToken(); -#line 1735 "cs.ATG" +#line 1750 "cs.ATG" isArrayCreation = true; ArrayCreateExpression ace = new ArrayCreateExpression(type); pexpr = ace; -#line 1736 "cs.ATG" +#line 1751 "cs.ATG" int dims = 0; List ranks = new List(); if (la.kind == 14 || la.kind == 19) { while (la.kind == 14) { lexer.NextToken(); -#line 1738 "cs.ATG" +#line 1753 "cs.ATG" dims += 1; } Expect(19); -#line 1739 "cs.ATG" +#line 1754 "cs.ATG" ranks.Add(dims); dims = 0; while (la.kind == 18) { lexer.NextToken(); while (la.kind == 14) { lexer.NextToken(); -#line 1740 "cs.ATG" +#line 1755 "cs.ATG" ++dims; } Expect(19); -#line 1740 "cs.ATG" +#line 1755 "cs.ATG" ranks.Add(dims); dims = 0; } -#line 1741 "cs.ATG" +#line 1756 "cs.ATG" ace.CreateType.RankSpecifier = ranks.ToArray(); ArrayInitializer( -#line 1742 "cs.ATG" +#line 1757 "cs.ATG" out expr); -#line 1742 "cs.ATG" +#line 1757 "cs.ATG" ace.ArrayInitializer = (ArrayInitializerExpression)expr; } else if (StartOf(5)) { Expr( -#line 1743 "cs.ATG" +#line 1758 "cs.ATG" out expr); -#line 1743 "cs.ATG" +#line 1758 "cs.ATG" if (expr != null) parameters.Add(expr); while (la.kind == 14) { lexer.NextToken(); -#line 1744 "cs.ATG" +#line 1759 "cs.ATG" dims += 1; Expr( -#line 1745 "cs.ATG" +#line 1760 "cs.ATG" out expr); -#line 1745 "cs.ATG" +#line 1760 "cs.ATG" if (expr != null) parameters.Add(expr); } Expect(19); -#line 1747 "cs.ATG" +#line 1762 "cs.ATG" ranks.Add(dims); ace.Arguments = parameters; dims = 0; while (la.kind == 18) { lexer.NextToken(); while (la.kind == 14) { lexer.NextToken(); -#line 1748 "cs.ATG" +#line 1763 "cs.ATG" ++dims; } Expect(19); -#line 1748 "cs.ATG" +#line 1763 "cs.ATG" ranks.Add(dims); dims = 0; } -#line 1749 "cs.ATG" +#line 1764 "cs.ATG" ace.CreateType.RankSpecifier = ranks.ToArray(); if (la.kind == 16) { ArrayInitializer( -#line 1750 "cs.ATG" +#line 1765 "cs.ATG" out expr); -#line 1750 "cs.ATG" +#line 1765 "cs.ATG" ace.ArrayInitializer = (ArrayInitializerExpression)expr; } - } else SynErr(180); - } else SynErr(181); + } else SynErr(181); + } else SynErr(182); } else if (la.kind == 114) { lexer.NextToken(); Expect(20); if ( -#line 1755 "cs.ATG" +#line 1770 "cs.ATG" NotVoidPointer()) { Expect(122); -#line 1755 "cs.ATG" +#line 1770 "cs.ATG" type = new TypeReference("void"); } else if (StartOf(9)) { TypeWithRestriction( -#line 1756 "cs.ATG" +#line 1771 "cs.ATG" out type, true, true); - } else SynErr(182); + } else SynErr(183); Expect(21); -#line 1757 "cs.ATG" +#line 1772 "cs.ATG" pexpr = new TypeOfExpression(type); } else if (la.kind == 62) { lexer.NextToken(); Expect(20); Type( -#line 1759 "cs.ATG" +#line 1774 "cs.ATG" out type); Expect(21); -#line 1759 "cs.ATG" +#line 1774 "cs.ATG" pexpr = new DefaultValueExpression(type); } else if (la.kind == 104) { lexer.NextToken(); Expect(20); Type( -#line 1760 "cs.ATG" +#line 1775 "cs.ATG" out type); Expect(21); -#line 1760 "cs.ATG" +#line 1775 "cs.ATG" pexpr = new SizeOfExpression(type); } else if (la.kind == 57) { lexer.NextToken(); Expect(20); Expr( -#line 1761 "cs.ATG" +#line 1776 "cs.ATG" out expr); Expect(21); -#line 1761 "cs.ATG" +#line 1776 "cs.ATG" pexpr = new CheckedExpression(expr); } else if (la.kind == 117) { lexer.NextToken(); Expect(20); Expr( -#line 1762 "cs.ATG" +#line 1777 "cs.ATG" out expr); Expect(21); -#line 1762 "cs.ATG" +#line 1777 "cs.ATG" pexpr = new UncheckedExpression(expr); } else if (la.kind == 63) { lexer.NextToken(); AnonymousMethodExpr( -#line 1763 "cs.ATG" +#line 1778 "cs.ATG" out expr); -#line 1763 "cs.ATG" +#line 1778 "cs.ATG" pexpr = expr; - } else SynErr(183); - while (StartOf(28) || -#line 1774 "cs.ATG" + } else SynErr(184); + while (StartOf(29) || +#line 1789 "cs.ATG" IsGenericFollowedBy(Tokens.Dot) && IsTypeReferenceExpression(pexpr) || -#line 1783 "cs.ATG" +#line 1798 "cs.ATG" IsGenericFollowedBy(Tokens.OpenParenthesis)) { if (la.kind == 31 || la.kind == 32) { if (la.kind == 31) { lexer.NextToken(); -#line 1767 "cs.ATG" +#line 1782 "cs.ATG" pexpr = new UnaryOperatorExpression(pexpr, UnaryOperatorType.PostIncrement); } else if (la.kind == 32) { lexer.NextToken(); -#line 1768 "cs.ATG" +#line 1783 "cs.ATG" pexpr = new UnaryOperatorExpression(pexpr, UnaryOperatorType.PostDecrement); - } else SynErr(184); + } else SynErr(185); } else if (la.kind == 47) { lexer.NextToken(); Expect(1); -#line 1771 "cs.ATG" +#line 1786 "cs.ATG" pexpr = new PointerReferenceExpression(pexpr, t.val); } else if (la.kind == 15) { lexer.NextToken(); Expect(1); -#line 1772 "cs.ATG" +#line 1787 "cs.ATG" pexpr = new FieldReferenceExpression(pexpr, t.val); } else if ( -#line 1774 "cs.ATG" +#line 1789 "cs.ATG" IsGenericFollowedBy(Tokens.Dot) && IsTypeReferenceExpression(pexpr)) { TypeArgumentList( -#line 1775 "cs.ATG" +#line 1790 "cs.ATG" out typeList, false); Expect(15); Expect(1); -#line 1777 "cs.ATG" +#line 1792 "cs.ATG" pexpr = new FieldReferenceExpression(GetTypeReferenceExpression(pexpr, typeList), t.val); } else if (la.kind == 20) { lexer.NextToken(); -#line 1779 "cs.ATG" +#line 1794 "cs.ATG" List parameters = new List(); if (StartOf(21)) { Argument( -#line 1780 "cs.ATG" +#line 1795 "cs.ATG" out expr); -#line 1780 "cs.ATG" +#line 1795 "cs.ATG" if (expr != null) {parameters.Add(expr);} while (la.kind == 14) { lexer.NextToken(); Argument( -#line 1781 "cs.ATG" +#line 1796 "cs.ATG" out expr); -#line 1781 "cs.ATG" +#line 1796 "cs.ATG" if (expr != null) {parameters.Add(expr);} } } Expect(21); -#line 1782 "cs.ATG" +#line 1797 "cs.ATG" pexpr = new InvocationExpression(pexpr, parameters); } else if ( -#line 1783 "cs.ATG" +#line 1798 "cs.ATG" IsGenericFollowedBy(Tokens.OpenParenthesis)) { TypeArgumentList( -#line 1783 "cs.ATG" +#line 1798 "cs.ATG" out typeList, false); Expect(20); -#line 1784 "cs.ATG" +#line 1799 "cs.ATG" List parameters = new List(); if (StartOf(21)) { Argument( -#line 1785 "cs.ATG" +#line 1800 "cs.ATG" out expr); -#line 1785 "cs.ATG" +#line 1800 "cs.ATG" if (expr != null) {parameters.Add(expr);} while (la.kind == 14) { lexer.NextToken(); Argument( -#line 1786 "cs.ATG" +#line 1801 "cs.ATG" out expr); -#line 1786 "cs.ATG" +#line 1801 "cs.ATG" if (expr != null) {parameters.Add(expr);} } } Expect(21); -#line 1787 "cs.ATG" +#line 1802 "cs.ATG" pexpr = new InvocationExpression(pexpr, parameters, typeList); } else { -#line 1789 "cs.ATG" +#line 1804 "cs.ATG" if (isArrayCreation) Error("element access not allow on array creation"); List indices = new List(); lexer.NextToken(); Expr( -#line 1792 "cs.ATG" +#line 1807 "cs.ATG" out expr); -#line 1792 "cs.ATG" +#line 1807 "cs.ATG" if (expr != null) { indices.Add(expr); } while (la.kind == 14) { lexer.NextToken(); Expr( -#line 1793 "cs.ATG" +#line 1808 "cs.ATG" out expr); -#line 1793 "cs.ATG" +#line 1808 "cs.ATG" if (expr != null) { indices.Add(expr); } } Expect(19); -#line 1794 "cs.ATG" +#line 1809 "cs.ATG" pexpr = new IndexerExpression(pexpr, indices); } } } void AnonymousMethodExpr( -#line 1798 "cs.ATG" +#line 1813 "cs.ATG" out Expression outExpr) { -#line 1800 "cs.ATG" +#line 1815 "cs.ATG" AnonymousMethodExpression expr = new AnonymousMethodExpression(); expr.StartLocation = t.Location; Statement stmt; @@ -4660,368 +4677,368 @@ out Expression outExpr) { lexer.NextToken(); if (StartOf(10)) { FormalParameterList( -#line 1809 "cs.ATG" +#line 1824 "cs.ATG" p); -#line 1809 "cs.ATG" +#line 1824 "cs.ATG" expr.Parameters = p; } Expect(21); -#line 1811 "cs.ATG" +#line 1826 "cs.ATG" expr.HasParameterList = true; } -#line 1815 "cs.ATG" +#line 1830 "cs.ATG" if (compilationUnit != null) { Block( -#line 1816 "cs.ATG" +#line 1831 "cs.ATG" out stmt); -#line 1816 "cs.ATG" +#line 1831 "cs.ATG" expr.Body = (BlockStatement)stmt; -#line 1817 "cs.ATG" +#line 1832 "cs.ATG" } else { Expect(16); -#line 1819 "cs.ATG" +#line 1834 "cs.ATG" lexer.SkipCurrentBlock(0); Expect(17); -#line 1821 "cs.ATG" +#line 1836 "cs.ATG" } -#line 1822 "cs.ATG" +#line 1837 "cs.ATG" expr.EndLocation = t.Location; } void TypeArgumentList( -#line 1995 "cs.ATG" +#line 2010 "cs.ATG" out List types, bool canBeUnbound) { -#line 1997 "cs.ATG" +#line 2012 "cs.ATG" types = new List(); TypeReference type = null; Expect(23); if ( -#line 2002 "cs.ATG" +#line 2017 "cs.ATG" canBeUnbound && (la.kind == Tokens.GreaterThan || la.kind == Tokens.Comma)) { -#line 2003 "cs.ATG" +#line 2018 "cs.ATG" types.Add(TypeReference.Null); while (la.kind == 14) { lexer.NextToken(); -#line 2004 "cs.ATG" +#line 2019 "cs.ATG" types.Add(TypeReference.Null); } } else if (StartOf(9)) { Type( -#line 2005 "cs.ATG" +#line 2020 "cs.ATG" out type); -#line 2005 "cs.ATG" +#line 2020 "cs.ATG" if (type != null) { types.Add(type); } while (la.kind == 14) { lexer.NextToken(); Type( -#line 2006 "cs.ATG" +#line 2021 "cs.ATG" out type); -#line 2006 "cs.ATG" +#line 2021 "cs.ATG" if (type != null) { types.Add(type); } } - } else SynErr(185); + } else SynErr(186); Expect(22); } void ConditionalAndExpr( -#line 1831 "cs.ATG" +#line 1846 "cs.ATG" ref Expression outExpr) { -#line 1832 "cs.ATG" +#line 1847 "cs.ATG" Expression expr; InclusiveOrExpr( -#line 1834 "cs.ATG" +#line 1849 "cs.ATG" ref outExpr); while (la.kind == 25) { lexer.NextToken(); UnaryExpr( -#line 1834 "cs.ATG" +#line 1849 "cs.ATG" out expr); InclusiveOrExpr( -#line 1834 "cs.ATG" +#line 1849 "cs.ATG" ref expr); -#line 1834 "cs.ATG" +#line 1849 "cs.ATG" outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.LogicalAnd, expr); } } void InclusiveOrExpr( -#line 1837 "cs.ATG" +#line 1852 "cs.ATG" ref Expression outExpr) { -#line 1838 "cs.ATG" +#line 1853 "cs.ATG" Expression expr; ExclusiveOrExpr( -#line 1840 "cs.ATG" +#line 1855 "cs.ATG" ref outExpr); while (la.kind == 29) { lexer.NextToken(); UnaryExpr( -#line 1840 "cs.ATG" +#line 1855 "cs.ATG" out expr); ExclusiveOrExpr( -#line 1840 "cs.ATG" +#line 1855 "cs.ATG" ref expr); -#line 1840 "cs.ATG" +#line 1855 "cs.ATG" outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.BitwiseOr, expr); } } void ExclusiveOrExpr( -#line 1843 "cs.ATG" +#line 1858 "cs.ATG" ref Expression outExpr) { -#line 1844 "cs.ATG" +#line 1859 "cs.ATG" Expression expr; AndExpr( -#line 1846 "cs.ATG" +#line 1861 "cs.ATG" ref outExpr); while (la.kind == 30) { lexer.NextToken(); UnaryExpr( -#line 1846 "cs.ATG" +#line 1861 "cs.ATG" out expr); AndExpr( -#line 1846 "cs.ATG" +#line 1861 "cs.ATG" ref expr); -#line 1846 "cs.ATG" +#line 1861 "cs.ATG" outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.ExclusiveOr, expr); } } void AndExpr( -#line 1849 "cs.ATG" +#line 1864 "cs.ATG" ref Expression outExpr) { -#line 1850 "cs.ATG" +#line 1865 "cs.ATG" Expression expr; EqualityExpr( -#line 1852 "cs.ATG" +#line 1867 "cs.ATG" ref outExpr); while (la.kind == 28) { lexer.NextToken(); UnaryExpr( -#line 1852 "cs.ATG" +#line 1867 "cs.ATG" out expr); EqualityExpr( -#line 1852 "cs.ATG" +#line 1867 "cs.ATG" ref expr); -#line 1852 "cs.ATG" +#line 1867 "cs.ATG" outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.BitwiseAnd, expr); } } void EqualityExpr( -#line 1855 "cs.ATG" +#line 1870 "cs.ATG" ref Expression outExpr) { -#line 1857 "cs.ATG" +#line 1872 "cs.ATG" Expression expr; BinaryOperatorType op = BinaryOperatorType.None; RelationalExpr( -#line 1861 "cs.ATG" +#line 1876 "cs.ATG" ref outExpr); while (la.kind == 33 || la.kind == 34) { if (la.kind == 34) { lexer.NextToken(); -#line 1864 "cs.ATG" +#line 1879 "cs.ATG" op = BinaryOperatorType.InEquality; } else { lexer.NextToken(); -#line 1865 "cs.ATG" +#line 1880 "cs.ATG" op = BinaryOperatorType.Equality; } UnaryExpr( -#line 1867 "cs.ATG" +#line 1882 "cs.ATG" out expr); RelationalExpr( -#line 1867 "cs.ATG" +#line 1882 "cs.ATG" ref expr); -#line 1867 "cs.ATG" +#line 1882 "cs.ATG" outExpr = new BinaryOperatorExpression(outExpr, op, expr); } } void RelationalExpr( -#line 1871 "cs.ATG" +#line 1886 "cs.ATG" ref Expression outExpr) { -#line 1873 "cs.ATG" +#line 1888 "cs.ATG" TypeReference type; Expression expr; BinaryOperatorType op = BinaryOperatorType.None; ShiftExpr( -#line 1878 "cs.ATG" +#line 1893 "cs.ATG" ref outExpr); - while (StartOf(29)) { - if (StartOf(30)) { + while (StartOf(30)) { + if (StartOf(31)) { if (la.kind == 23) { lexer.NextToken(); -#line 1880 "cs.ATG" +#line 1895 "cs.ATG" op = BinaryOperatorType.LessThan; } else if (la.kind == 22) { lexer.NextToken(); -#line 1881 "cs.ATG" +#line 1896 "cs.ATG" op = BinaryOperatorType.GreaterThan; } else if (la.kind == 36) { lexer.NextToken(); -#line 1882 "cs.ATG" +#line 1897 "cs.ATG" op = BinaryOperatorType.LessThanOrEqual; } else if (la.kind == 35) { lexer.NextToken(); -#line 1883 "cs.ATG" +#line 1898 "cs.ATG" op = BinaryOperatorType.GreaterThanOrEqual; - } else SynErr(186); + } else SynErr(187); UnaryExpr( -#line 1885 "cs.ATG" +#line 1900 "cs.ATG" out expr); ShiftExpr( -#line 1886 "cs.ATG" +#line 1901 "cs.ATG" ref expr); -#line 1887 "cs.ATG" +#line 1902 "cs.ATG" outExpr = new BinaryOperatorExpression(outExpr, op, expr); } else { if (la.kind == 84) { lexer.NextToken(); TypeWithRestriction( -#line 1890 "cs.ATG" +#line 1905 "cs.ATG" out type, false, false); if ( -#line 1891 "cs.ATG" +#line 1906 "cs.ATG" la.kind == Tokens.Question && Tokens.CastFollower[Peek(1).kind] == false) { NullableQuestionMark( -#line 1892 "cs.ATG" +#line 1907 "cs.ATG" ref type); } -#line 1893 "cs.ATG" +#line 1908 "cs.ATG" outExpr = new TypeOfIsExpression(outExpr, type); } else if (la.kind == 49) { lexer.NextToken(); TypeWithRestriction( -#line 1895 "cs.ATG" +#line 1910 "cs.ATG" out type, false, false); if ( -#line 1896 "cs.ATG" +#line 1911 "cs.ATG" la.kind == Tokens.Question && Tokens.CastFollower[Peek(1).kind] == false) { NullableQuestionMark( -#line 1897 "cs.ATG" +#line 1912 "cs.ATG" ref type); } -#line 1898 "cs.ATG" +#line 1913 "cs.ATG" outExpr = new CastExpression(type, outExpr, CastType.TryCast); - } else SynErr(187); + } else SynErr(188); } } } void ShiftExpr( -#line 1903 "cs.ATG" +#line 1918 "cs.ATG" ref Expression outExpr) { -#line 1905 "cs.ATG" +#line 1920 "cs.ATG" Expression expr; BinaryOperatorType op = BinaryOperatorType.None; AdditiveExpr( -#line 1909 "cs.ATG" +#line 1924 "cs.ATG" ref outExpr); while (la.kind == 37 || -#line 1912 "cs.ATG" +#line 1927 "cs.ATG" IsShiftRight()) { if (la.kind == 37) { lexer.NextToken(); -#line 1911 "cs.ATG" +#line 1926 "cs.ATG" op = BinaryOperatorType.ShiftLeft; } else { Expect(22); Expect(22); -#line 1913 "cs.ATG" +#line 1928 "cs.ATG" op = BinaryOperatorType.ShiftRight; } UnaryExpr( -#line 1916 "cs.ATG" +#line 1931 "cs.ATG" out expr); AdditiveExpr( -#line 1916 "cs.ATG" +#line 1931 "cs.ATG" ref expr); -#line 1916 "cs.ATG" +#line 1931 "cs.ATG" outExpr = new BinaryOperatorExpression(outExpr, op, expr); } } void AdditiveExpr( -#line 1920 "cs.ATG" +#line 1935 "cs.ATG" ref Expression outExpr) { -#line 1922 "cs.ATG" +#line 1937 "cs.ATG" Expression expr; BinaryOperatorType op = BinaryOperatorType.None; MultiplicativeExpr( -#line 1926 "cs.ATG" +#line 1941 "cs.ATG" ref outExpr); while (la.kind == 4 || la.kind == 5) { if (la.kind == 4) { lexer.NextToken(); -#line 1929 "cs.ATG" +#line 1944 "cs.ATG" op = BinaryOperatorType.Add; } else { lexer.NextToken(); -#line 1930 "cs.ATG" +#line 1945 "cs.ATG" op = BinaryOperatorType.Subtract; } UnaryExpr( -#line 1932 "cs.ATG" +#line 1947 "cs.ATG" out expr); MultiplicativeExpr( -#line 1932 "cs.ATG" +#line 1947 "cs.ATG" ref expr); -#line 1932 "cs.ATG" +#line 1947 "cs.ATG" outExpr = new BinaryOperatorExpression(outExpr, op, expr); } } void MultiplicativeExpr( -#line 1936 "cs.ATG" +#line 1951 "cs.ATG" ref Expression outExpr) { -#line 1938 "cs.ATG" +#line 1953 "cs.ATG" Expression expr; BinaryOperatorType op = BinaryOperatorType.None; @@ -5029,59 +5046,59 @@ ref Expression outExpr) { if (la.kind == 6) { lexer.NextToken(); -#line 1944 "cs.ATG" +#line 1959 "cs.ATG" op = BinaryOperatorType.Multiply; } else if (la.kind == 7) { lexer.NextToken(); -#line 1945 "cs.ATG" +#line 1960 "cs.ATG" op = BinaryOperatorType.Divide; } else { lexer.NextToken(); -#line 1946 "cs.ATG" +#line 1961 "cs.ATG" op = BinaryOperatorType.Modulus; } UnaryExpr( -#line 1948 "cs.ATG" +#line 1963 "cs.ATG" out expr); -#line 1948 "cs.ATG" +#line 1963 "cs.ATG" outExpr = new BinaryOperatorExpression(outExpr, op, expr); } } void TypeParameterConstraintsClauseBase( -#line 2052 "cs.ATG" +#line 2067 "cs.ATG" out TypeReference type) { -#line 2053 "cs.ATG" +#line 2068 "cs.ATG" TypeReference t; type = null; if (la.kind == 108) { lexer.NextToken(); -#line 2055 "cs.ATG" +#line 2070 "cs.ATG" type = TypeReference.StructConstraint; } else if (la.kind == 58) { lexer.NextToken(); -#line 2056 "cs.ATG" +#line 2071 "cs.ATG" type = TypeReference.ClassConstraint; } else if (la.kind == 88) { lexer.NextToken(); Expect(20); Expect(21); -#line 2057 "cs.ATG" +#line 2072 "cs.ATG" type = TypeReference.NewConstraint; } else if (StartOf(9)) { Type( -#line 2058 "cs.ATG" +#line 2073 "cs.ATG" out t); -#line 2058 "cs.ATG" +#line 2073 "cs.ATG" type = t; - } else SynErr(188); + } else SynErr(189); } @@ -5275,16 +5292,17 @@ out t); case 176: s = "invalid ResourceAcquisition"; break; case 177: s = "invalid SwitchLabel"; break; case 178: s = "invalid CatchClauses"; break; - case 179: s = "invalid PrimaryExpr"; break; + case 179: s = "invalid UnaryExpr"; break; case 180: s = "invalid PrimaryExpr"; break; case 181: s = "invalid PrimaryExpr"; break; case 182: s = "invalid PrimaryExpr"; break; case 183: s = "invalid PrimaryExpr"; break; case 184: s = "invalid PrimaryExpr"; break; - case 185: s = "invalid TypeArgumentList"; break; - case 186: s = "invalid RelationalExpr"; break; + case 185: s = "invalid PrimaryExpr"; break; + case 186: s = "invalid TypeArgumentList"; break; case 187: s = "invalid RelationalExpr"; break; - case 188: s = "invalid TypeParameterConstraintsClauseBase"; break; + case 188: s = "invalid RelationalExpr"; break; + case 189: s = "invalid TypeParameterConstraintsClauseBase"; break; default: s = "error " + errorNumber; break; } @@ -5324,6 +5342,7 @@ out t); {x,T,T,x, T,T,T,x, x,x,x,x, x,x,x,x, T,x,x,x, T,x,x,x, T,x,x,T, T,x,x,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,T,x,x, T,T,x,x, x,T,T,T, x,T,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,T,x,x, x,x,T,x, T,T,T,x, x,x,x,x, x,x,x,x, x,T,x,T, T,T,x,T, x,x,T,x, T,x,T,T, T,T,x,T, x,x,x,x, x,x,x}, {x,T,T,x, T,T,T,x, x,x,x,T, x,x,x,x, T,x,x,x, T,x,x,x, T,x,x,T, T,x,x,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, T,T,T,x, T,T,x,T, T,T,T,T, T,T,x,x, x,x,x,T, x,T,T,T, T,T,T,x, x,T,x,x, x,T,T,x, T,T,T,x, x,x,x,x, x,x,x,x, T,T,x,T, T,x,x,T, x,T,T,T, T,T,T,T, T,T,T,T, T,x,x,x, T,x,x}, {x,x,x,x, T,T,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,T, T,x,x,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x}, + {x,T,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,T,x,x, T,T,x,x, x,T,T,T, x,T,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,T,x,x, x,x,T,x, T,T,T,x, x,x,x,x, x,x,x,x, x,T,x,T, T,x,x,T, x,x,T,x, T,x,T,T, T,T,x,T, x,x,x,x, x,x,x}, {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,T,x,x, T,x,x,x, x,T,x,x, x,T,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,T,x,x, x,x,T,x, x,x,T,x, x,x,x,x, x,x,x,x, x,T,x,T, x,x,x,T, x,x,x,x, x,x,x,T, T,x,x,T, x,x,x,x, x,x,x}, {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,T,x, T,x,x,x, x,x,x,x, x,x,x,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x}, {x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,x,x,T, T,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x}, diff --git a/src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG b/src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG index a8ecd2146a..9e88d1d2f2 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG +++ b/src/Libraries/NRefactory/Project/Src/Parser/CSharp/cs.ATG @@ -1627,8 +1627,8 @@ Expr UnaryExpr (. TypeReference type = null; - Expression expr; - ArrayList expressions = new ArrayList(); + Expression expr = null; + ArrayList expressions = new ArrayList(); uExpr = null; .) = @@ -1652,20 +1652,35 @@ UnaryExpr ) } - PrimaryExpr (. for (int i = 0; i < expressions.Count; ++i) { - Expression nextExpression = i + 1 < expressions.Count ? (Expression)expressions[i + 1] : expr; - if (expressions[i] is CastExpression) { - ((CastExpression)expressions[i]).Expression = nextExpression; - } else { - ((UnaryOperatorExpression)expressions[i]).Expression = nextExpression; - } - } - if (expressions.Count > 0) { - uExpr = (Expression)expressions[0]; - } else { - uExpr = expr; - } - .) + /* special rule (2.4.4.2) to allow writing int.MinValue and long.MinValue */ + ( IF (LastExpressionIsUnaryMinus(expressions) && IsMostNegativeIntegerWithoutTypeSuffix()) + Literal + (. + expressions.RemoveAt(expressions.Count - 1); + if (t.literalValue is uint) { + expr = new PrimitiveExpression(int.MinValue, int.MinValue.ToString()); + } else if (t.literalValue is ulong) { + expr = new PrimitiveExpression(long.MinValue, long.MinValue.ToString()); + } else { + throw new Exception("t.literalValue must be uint or ulong"); + } + .) + | PrimaryExpr + ) + (. for (int i = 0; i < expressions.Count; ++i) { + Expression nextExpression = i + 1 < expressions.Count ? (Expression)expressions[i + 1] : expr; + if (expressions[i] is CastExpression) { + ((CastExpression)expressions[i]).Expression = nextExpression; + } else { + ((UnaryOperatorExpression)expressions[i]).Expression = nextExpression; + } + } + if (expressions.Count > 0) { + uExpr = (Expression)expressions[0]; + } else { + uExpr = expr; + } + .) . diff --git a/src/Libraries/NRefactory/Project/Src/Parser/gen.bat b/src/Libraries/NRefactory/Project/Src/Parser/gen.bat index 7e67c5d71d..363aa1220f 100644 --- a/src/Libraries/NRefactory/Project/Src/Parser/gen.bat +++ b/src/Libraries/NRefactory/Project/Src/Parser/gen.bat @@ -22,6 +22,3 @@ del VBNET.ATG :exit pause cd .. -pushd ..\..\.. -%windir%\microsoft.net\framework\v2.0.50727\msbuild -popd \ No newline at end of file diff --git a/src/Libraries/NRefactory/Test/Lexer/CSharp/NumberLexerTest.cs b/src/Libraries/NRefactory/Test/Lexer/CSharp/NumberLexerTest.cs index 969c5a8cdc..5e4505c4b4 100644 --- a/src/Libraries/NRefactory/Test/Lexer/CSharp/NumberLexerTest.cs +++ b/src/Libraries/NRefactory/Test/Lexer/CSharp/NumberLexerTest.cs @@ -60,8 +60,11 @@ namespace ICSharpCode.NRefactory.Tests.Lexer.CSharp } [Test] - public void TestOctalInteger() + public void TestNonOctalInteger() { + // C# does not have octal integers, so 077 should parse to 77 + Assert.IsTrue(077 == 77); + CheckToken("077", 077); CheckToken("056", 056); } @@ -92,6 +95,17 @@ namespace ICSharpCode.NRefactory.Tests.Lexer.CSharp CheckToken("0xf244636f446c6d58", 0xf244636f446c6d58); } + [Test] + public void TestLongInteger() + { + CheckToken("9223372036854775807", 9223372036854775807); // long.MaxValue + CheckToken("9223372036854775808", 9223372036854775808); // long.MaxValue+1 + CheckToken("18446744073709551615", 18446744073709551615); // ulong.MaxValue + CheckToken("18446744073709551616f", 18446744073709551616f); // ulong.MaxValue+1 as float + CheckToken("18446744073709551616d", 18446744073709551616d); // ulong.MaxValue+1 as double + CheckToken("18446744073709551616m", 18446744073709551616m); // ulong.MaxValue+1 as decimal + } + [Test] public void TestDouble() { diff --git a/src/Libraries/NRefactory/Test/Parser/Expressions/PrimitiveExpressionTests.cs b/src/Libraries/NRefactory/Test/Parser/Expressions/PrimitiveExpressionTests.cs index 8b78886c42..13b739131f 100644 --- a/src/Libraries/NRefactory/Test/Parser/Expressions/PrimitiveExpressionTests.cs +++ b/src/Libraries/NRefactory/Test/Parser/Expressions/PrimitiveExpressionTests.cs @@ -50,6 +50,40 @@ namespace ICSharpCode.NRefactory.Tests.Ast Assert.AreEqual('\u0356', (char)pe.Value); } + [Test] + public void IntMinValueTest() + { + PrimitiveExpression pe = ParseUtilCSharp.ParseExpression("-2147483648"); + Assert.AreEqual(-2147483648, (int)pe.Value); + } + + [Test] + public void IntMaxValueTest() + { + PrimitiveExpression pe = ParseUtilCSharp.ParseExpression("2147483647"); + Assert.AreEqual(2147483647, (int)pe.Value); + + pe = ParseUtilCSharp.ParseExpression("2147483648"); + Assert.AreEqual(2147483648, (uint)pe.Value); + } + + [Test] + public void LongMinValueTest() + { + PrimitiveExpression pe = ParseUtilCSharp.ParseExpression("-9223372036854775808"); + Assert.AreEqual(-9223372036854775808, (long)pe.Value); + } + + [Test] + public void LongMaxValueTest() + { + PrimitiveExpression pe = ParseUtilCSharp.ParseExpression("9223372036854775807"); + Assert.AreEqual(9223372036854775807, (long)pe.Value); + + pe = ParseUtilCSharp.ParseExpression("9223372036854775808"); + Assert.AreEqual(9223372036854775808, (ulong)pe.Value); + } + [Test] public void CSharpStringTest1() { From 5f9f3db75c61bc45c266abb9d8a3ed62dd4aa242 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Tue, 7 Aug 2007 19:32:24 +0000 Subject: [PATCH 6/6] Update string resources. Improve lexer code determining the type of integer literals. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.1@2639 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- data/resources/StringResources.cz.resources | Bin 297349 -> 298036 bytes .../resources/StringResources.es-mx.resources | Bin 302279 -> 302979 bytes data/resources/StringResources.es.resources | Bin 302394 -> 303094 bytes data/resources/StringResources.nl.resources | Bin 297482 -> 297891 bytes data/resources/StringResources.se.resources | Bin 201734 -> 201908 bytes data/resources/StringResources.tr.resources | Bin 277907 -> 279275 bytes .../Project/Src/Lexer/CSharp/Lexer.cs | 17 +++++++---------- .../ObjectCreateExpressionTests.cs | 9 +++++++++ 8 files changed, 16 insertions(+), 10 deletions(-) diff --git a/data/resources/StringResources.cz.resources b/data/resources/StringResources.cz.resources index d8f8b72fbc0735b228d5efb6c1944b0fc20d7f7e..8e4df7f81216faef4886854c182460b55b7b3cf9 100644 GIT binary patch delta 23043 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 delta 22355 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 U^tQ>YNvS?Ivh{5ro9RXWAI&K~xc~qF diff --git a/data/resources/StringResources.es.resources b/data/resources/StringResources.es.resources index bf15ad8e5027823be387c9d011e3c90be6b50701..a415b410d0f74107cb1cf48e41729fe78f246233 100644 GIT binary patch delta 23138 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 V1$}K?m|U1|Q?kR*&t`_-{{vyo9&-Qy diff --git a/data/resources/StringResources.se.resources b/data/resources/StringResources.se.resources index 56bf8c8bcab941983c08b6170ff404b5f8f8fdd4..fe29512f8bde57605de96f8091905b48a9b88e0d 100644 GIT binary patch delta 28875 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 Ko==w%j{gU$H9Bbk delta 37930 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 diff --git a/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs b/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs index 329f04fc6f..bbd92a48be 100644 --- a/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs +++ b/src/Libraries/NRefactory/Project/Src/Lexer/CSharp/Lexer.cs @@ -320,29 +320,26 @@ namespace ICSharpCode.NRefactory.Parser.CSharp } } - // Try to determine a parsable value using ranges. (Quick hack!) - decimal d = 0; + // Try to determine a parsable value using ranges. + ulong result; if (ishex) { - ulong result; - if (ulong.TryParse(digit, NumberStyles.HexNumber, null, out result)) { - d = result; - } else { + if (!ulong.TryParse(digit, NumberStyles.HexNumber, null, out result)) { errors.Error(y, x, String.Format("Can't parse hexadecimal constant {0}", digit)); return new Token(Tokens.Literal, x, y, stringValue.ToString(), 0); } } else { - if (!decimal.TryParse(digit, NumberStyles.Integer, null, out d)) { + if (!ulong.TryParse(digit, NumberStyles.Integer, null, out result)) { errors.Error(y, x, String.Format("Can't parse integral constant {0}", digit)); return new Token(Tokens.Literal, x, y, stringValue.ToString(), 0); } } - if (d < long.MinValue || d > long.MaxValue) { + if (result > long.MaxValue) { islong = true; isunsigned = true; - } else if (d < uint.MinValue || d > uint.MaxValue) { + } else if (result > uint.MaxValue) { islong = true; - } else if (d < int.MinValue || d > int.MaxValue) { + } else if (result > int.MaxValue) { isunsigned = true; } diff --git a/src/Libraries/NRefactory/Test/Parser/Expressions/ObjectCreateExpressionTests.cs b/src/Libraries/NRefactory/Test/Parser/Expressions/ObjectCreateExpressionTests.cs index ba7354048e..409de73db1 100644 --- a/src/Libraries/NRefactory/Test/Parser/Expressions/ObjectCreateExpressionTests.cs +++ b/src/Libraries/NRefactory/Test/Parser/Expressions/ObjectCreateExpressionTests.cs @@ -33,6 +33,15 @@ namespace ICSharpCode.NRefactory.Tests.Ast CheckSimpleObjectCreateExpression(ParseUtilCSharp.ParseExpression("new MyObject(1, 2, 3)")); } + [Test] + public void CSharpNullableObjectCreateExpressionTest() + { + ObjectCreateExpression oce = ParseUtilCSharp.ParseExpression("new IntPtr?(1)"); + Assert.AreEqual("System.Nullable", oce.CreateType.SystemType); + Assert.AreEqual(1, oce.CreateType.GenericTypes.Count); + Assert.AreEqual("IntPtr", oce.CreateType.GenericTypes[0].Type); + } + [Test] public void CSharpInvalidNestedObjectCreateExpressionTest() {