diff --git a/Million Prototype/App.config b/Million Prototype/App.config index 3c69a82..27b54d6 100644 --- a/Million Prototype/App.config +++ b/Million Prototype/App.config @@ -9,6 +9,14 @@ + + + + + + + + diff --git a/Million/Million Core.csproj b/Million/Million Core.csproj index adc9f86..f2d5848 100644 --- a/Million/Million Core.csproj +++ b/Million/Million Core.csproj @@ -59,9 +59,39 @@ ..\packages\DocumentFormat.OpenXml.2.16.0\lib\net46\DocumentFormat.OpenXml.dll + + ..\packages\Humanizer.Core.2.2.0\lib\netstandard1.0\Humanizer.dll + ..\packages\log4net.2.0.12\lib\net45\log4net.dll + + ..\packages\Microsoft.Bcl.AsyncInterfaces.5.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll + + + ..\packages\Microsoft.CodeAnalysis.Common.4.1.0\lib\netstandard2.0\Microsoft.CodeAnalysis.dll + + + ..\packages\Microsoft.CodeAnalysis.CSharp.4.1.0\lib\netstandard2.0\Microsoft.CodeAnalysis.CSharp.dll + + + ..\packages\Microsoft.CodeAnalysis.CSharp.Scripting.4.1.0\lib\netstandard2.0\Microsoft.CodeAnalysis.CSharp.Scripting.dll + + + ..\packages\Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0\lib\netstandard2.0\Microsoft.CodeAnalysis.CSharp.Workspaces.dll + + + ..\packages\Microsoft.CodeAnalysis.Scripting.Common.4.1.0\lib\netstandard2.0\Microsoft.CodeAnalysis.Scripting.dll + + + ..\packages\Microsoft.CodeAnalysis.VisualBasic.4.1.0\lib\netstandard2.0\Microsoft.CodeAnalysis.VisualBasic.dll + + + ..\packages\Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0\lib\netstandard2.0\Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll + + + ..\packages\Microsoft.CodeAnalysis.Workspaces.Common.4.1.0\lib\netstandard2.0\Microsoft.CodeAnalysis.Workspaces.dll + ..\packages\Microsoft.IdentityModel.JsonWebTokens.6.12.0\lib\net472\Microsoft.IdentityModel.JsonWebTokens.dll @@ -85,11 +115,29 @@ + + ..\packages\System.Composition.AttributedModel.1.0.31\lib\portable-net45+win8+wp8+wpa81\System.Composition.AttributedModel.dll + + + ..\packages\System.Composition.Convention.1.0.31\lib\portable-net45+win8+wp8+wpa81\System.Composition.Convention.dll + + + ..\packages\System.Composition.Hosting.1.0.31\lib\portable-net45+win8+wp8+wpa81\System.Composition.Hosting.dll + + + ..\packages\System.Composition.Runtime.1.0.31\lib\portable-net45+win8+wp8+wpa81\System.Composition.Runtime.dll + + + ..\packages\System.Composition.TypedParts.1.0.31\lib\portable-net45+win8+wp8+wpa81\System.Composition.TypedParts.dll + ..\packages\System.IdentityModel.Tokens.Jwt.6.12.0\lib\net472\System.IdentityModel.Tokens.Jwt.dll + + ..\packages\System.IO.Pipelines.5.0.1\lib\net461\System.IO.Pipelines.dll + diff --git a/Million/packages.config b/Million/packages.config index f4a6a93..41b9fed 100644 --- a/Million/packages.config +++ b/Million/packages.config @@ -1,12 +1,20 @@  + + + + + + + + @@ -14,7 +22,14 @@ + + + + + + + diff --git a/packages/Humanizer.Core.2.2.0/.signature.p7s b/packages/Humanizer.Core.2.2.0/.signature.p7s new file mode 100644 index 0000000..252fbb8 Binary files /dev/null and b/packages/Humanizer.Core.2.2.0/.signature.p7s differ diff --git a/packages/Humanizer.Core.2.2.0/Humanizer.Core.2.2.0.nupkg b/packages/Humanizer.Core.2.2.0/Humanizer.Core.2.2.0.nupkg new file mode 100644 index 0000000..b679124 Binary files /dev/null and b/packages/Humanizer.Core.2.2.0/Humanizer.Core.2.2.0.nupkg differ diff --git a/packages/Humanizer.Core.2.2.0/lib/netstandard1.0/Humanizer.dll b/packages/Humanizer.Core.2.2.0/lib/netstandard1.0/Humanizer.dll new file mode 100644 index 0000000..adb2aa4 Binary files /dev/null and b/packages/Humanizer.Core.2.2.0/lib/netstandard1.0/Humanizer.dll differ diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/.signature.p7s b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/.signature.p7s new file mode 100644 index 0000000..211981e Binary files /dev/null and b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/.signature.p7s differ diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/Icon.png b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/Icon.png new file mode 100644 index 0000000..a0f1fdb Binary files /dev/null and b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/Icon.png differ diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/LICENSE.TXT b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/LICENSE.TXT new file mode 100644 index 0000000..984713a --- /dev/null +++ b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/LICENSE.TXT @@ -0,0 +1,23 @@ +The MIT License (MIT) + +Copyright (c) .NET Foundation and Contributors + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/Microsoft.Bcl.AsyncInterfaces.5.0.0.nupkg b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/Microsoft.Bcl.AsyncInterfaces.5.0.0.nupkg new file mode 100644 index 0000000..bd94486 Binary files /dev/null and b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/Microsoft.Bcl.AsyncInterfaces.5.0.0.nupkg differ diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/THIRD-PARTY-NOTICES.TXT b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/THIRD-PARTY-NOTICES.TXT new file mode 100644 index 0000000..111dcf5 --- /dev/null +++ b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/THIRD-PARTY-NOTICES.TXT @@ -0,0 +1,884 @@ +.NET Runtime uses third-party libraries or other resources that may be +distributed under licenses different than the .NET Runtime software. + +In the event that we accidentally failed to list a required notice, please +bring it to our attention. Post an issue or email us: + + dotnet@microsoft.com + +The attached notices are provided for information only. + +License notice for ASP.NET +------------------------------- + +Copyright (c) .NET Foundation. All rights reserved. +Licensed under the Apache License, Version 2.0. + +Available at +https://github.com/aspnet/AspNetCore/blob/master/LICENSE.txt + +License notice for Slicing-by-8 +------------------------------- + +http://sourceforge.net/projects/slicing-by-8/ + +Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + + +This software program is licensed subject to the BSD License, available at +http://www.opensource.org/licenses/bsd-license.html. + + +License notice for Unicode data +------------------------------- + +https://www.unicode.org/license.html + +Copyright © 1991-2020 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in https://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation +(the "Data Files") or Unicode software and any associated documentation +(the "Software") to deal in the Data Files or Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. + +License notice for Zlib +----------------------- + +https://github.com/madler/zlib +http://zlib.net/zlib_license.html + +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.11, January 15th, 2017 + + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +*/ + +License notice for Mono +------------------------------- + +http://www.mono-project.com/docs/about-mono/ + +Copyright (c) .NET Foundation Contributors + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the Software), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License notice for International Organization for Standardization +----------------------------------------------------------------- + +Portions (C) International Organization for Standardization 1986: + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +License notice for Intel +------------------------ + +"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Xamarin and Novell +------------------------------------- + +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Copyright (c) 2011 Novell, Inc (http://www.novell.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Third party notice for W3C +-------------------------- + +"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. +This work is being provided by the copyright holders under the following license. +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders." + +License notice for Bit Twiddling Hacks +-------------------------------------- + +Bit Twiddling Hacks + +By Sean Eron Anderson +seander@cs.stanford.edu + +Individually, the code snippets here are in the public domain (unless otherwise +noted) — feel free to use them however you please. The aggregate collection and +descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are +distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and +without even the implied warranty of merchantability or fitness for a particular +purpose. + +License notice for Brotli +-------------------------------------- + +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +compress_fragment.c: +Copyright (c) 2011, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +decode_fuzzer.c: +Copyright (c) 2015 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." + +License notice for Json.NET +------------------------------- + +https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md + +The MIT License (MIT) + +Copyright (c) 2007 James Newton-King + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License notice for vectorized base64 encoding / decoding +-------------------------------------------------------- + +Copyright (c) 2005-2007, Nick Galbreath +Copyright (c) 2013-2017, Alfred Klomp +Copyright (c) 2015-2017, Wojciech Mula +Copyright (c) 2016-2017, Matthieu Darbois +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +- Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for RFC 3492 +--------------------------- + +The punycode implementation is based on the sample code in RFC 3492 + +Copyright (C) The Internet Society (2003). All Rights Reserved. + +This document and translations of it may be copied and furnished to +others, and derivative works that comment on or otherwise explain it +or assist in its implementation may be prepared, copied, published +and distributed, in whole or in part, without restriction of any +kind, provided that the above copyright notice and this paragraph are +included on all such copies and derivative works. However, this +document itself may not be modified in any way, such as by removing +the copyright notice or references to the Internet Society or other +Internet organizations, except as needed for the purpose of +developing Internet standards in which case the procedures for +copyrights defined in the Internet Standards process must be +followed, or as required to translate it into languages other than +English. + +The limited permissions granted above are perpetual and will not be +revoked by the Internet Society or its successors or assigns. + +This document and the information contained herein is provided on an +"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING +TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION +HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF +MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +License notice for Algorithm from Internet Draft document "UUIDs and GUIDs" +--------------------------------------------------------------------------- + +Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. +Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & +Digital Equipment Corporation, Maynard, Mass. +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: permission to use, copy, +modify, and distribute this file for any purpose is hereby +granted without fee, provided that the above copyright notices and +this notice appears in all source code copies, and that none of +the names of Open Software Foundation, Inc., Hewlett-Packard +Company, or Digital Equipment Corporation be used in advertising +or publicity pertaining to distribution of the software without +specific, written prior permission. Neither Open Software +Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital Equipment +Corporation makes any representations about the suitability of +this software for any purpose. + +Copyright(C) The Internet Society 1997. All Rights Reserved. + +This document and translations of it may be copied and furnished to others, +and derivative works that comment on or otherwise explain it or assist in +its implementation may be prepared, copied, published and distributed, in +whole or in part, without restriction of any kind, provided that the above +copyright notice and this paragraph are included on all such copies and +derivative works.However, this document itself may not be modified in any +way, such as by removing the copyright notice or references to the Internet +Society or other Internet organizations, except as needed for the purpose of +developing Internet standards in which case the procedures for copyrights +defined in the Internet Standards process must be followed, or as required +to translate it into languages other than English. + +The limited permissions granted above are perpetual and will not be revoked +by the Internet Society or its successors or assigns. + +This document and the information contained herein is provided on an "AS IS" +basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE +DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY +RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A +PARTICULAR PURPOSE. + +License notice for Algorithm from RFC 4122 - +A Universally Unique IDentifier (UUID) URN Namespace +---------------------------------------------------- + +Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. +Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & +Digital Equipment Corporation, Maynard, Mass. +Copyright (c) 1998 Microsoft. +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: permission to use, copy, +modify, and distribute this file for any purpose is hereby +granted without fee, provided that the above copyright notices and +this notice appears in all source code copies, and that none of +the names of Open Software Foundation, Inc., Hewlett-Packard +Company, Microsoft, or Digital Equipment Corporation be used in +advertising or publicity pertaining to distribution of the software +without specific, written prior permission. Neither Open Software +Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital +Equipment Corporation makes any representations about the +suitability of this software for any purpose." + +License notice for The LLVM Compiler Infrastructure +--------------------------------------------------- + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +License notice for Bob Jenkins +------------------------------ + +By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this +code any way you wish, private, educational, or commercial. It's free. + +License notice for Greg Parker +------------------------------ + +Greg Parker gparker@cs.stanford.edu December 2000 +This code is in the public domain and may be copied or modified without +permission. + +License notice for libunwind based code +---------------------------------------- + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License notice for Printing Floating-Point Numbers (Dragon4) +------------------------------------------------------------ + +/****************************************************************************** + Copyright (c) 2014 Ryan Juckett + http://www.ryanjuckett.com/ + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +******************************************************************************/ + +License notice for Printing Floating-point Numbers (Grisu3) +----------------------------------------------------------- + +Copyright 2012 the V8 project authors. All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for xxHash +------------------------- + +xxHash Library +Copyright (c) 2012-2014, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Berkeley SoftFloat Release 3e +------------------------------------------------ + +https://github.com/ucb-bar/berkeley-softfloat-3 +https://github.com/ucb-bar/berkeley-softfloat-3/blob/master/COPYING.txt + +License for Berkeley SoftFloat Release 3e + +John R. Hauser +2018 January 20 + +The following applies to the whole of SoftFloat Release 3e as well as to +each source file individually. + +Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the +University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions, and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions, and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Xorshift RNGs +-------------------------------- + +George Marsaglia +2003-07-04 +Journal of Statistical Software +License: http://creativecommons.org/licenses/by/3.0/ + +https://www.jstatsoft.org/article/view/v008i14 +https://www.jstatsoft.org/index.php/jss/article/view/v008i14/xorshift.pdf + +License notice for Xorshift (Wikipedia) +--------------------------------------- + +https://en.wikipedia.org/wiki/Xorshift +License: https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License + +License for fastmod (https://github.com/lemire/fastmod) +-------------------------------------- + + Copyright 2018 Daniel Lemire + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +License notice for The C++ REST SDK +----------------------------------- + +C++ REST SDK + +The MIT License (MIT) + +Copyright (c) Microsoft Corporation + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +License notice for MessagePack-CSharp +------------------------------------- + +MessagePack for C# + +MIT License + +Copyright (c) 2017 Yoshifumi Kawai + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +License notice for lz4net +------------------------------------- + +lz4net + +Copyright (c) 2013-2017, Milosz Krajewski + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Nerdbank.Streams +----------------------------------- + +The MIT License (MIT) + +Copyright (c) Andrew Arnott + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +License notice for RapidJSON +---------------------------- + +Tencent is pleased to support the open source community by making RapidJSON available. + +Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. + +Licensed under the MIT License (the "License"); you may not use this file except +in compliance with the License. You may obtain a copy of the License at + +http://opensource.org/licenses/MIT + +Unless required by applicable law or agreed to in writing, software distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the License for the +specific language governing permissions and limitations under the License. + +License notice for DirectX Math Library +--------------------------------------- + +https://github.com/microsoft/DirectXMath/blob/master/LICENSE + + The MIT License (MIT) + +Copyright (c) 2011-2020 Microsoft Corp + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be included in all copies +or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License notice for ldap4net +--------------------------- + +The MIT License (MIT) + +Copyright (c) 2018 Alexander Chermyanin + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License notice for vectorized sorting code +------------------------------------------ + +MIT License + +Copyright (c) 2020 Dan Shechter + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/net461/Microsoft.Bcl.AsyncInterfaces.dll b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/net461/Microsoft.Bcl.AsyncInterfaces.dll new file mode 100644 index 0000000..abe9406 Binary files /dev/null and b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/net461/Microsoft.Bcl.AsyncInterfaces.dll differ diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/net461/Microsoft.Bcl.AsyncInterfaces.xml b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/net461/Microsoft.Bcl.AsyncInterfaces.xml new file mode 100644 index 0000000..cb1744f --- /dev/null +++ b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/net461/Microsoft.Bcl.AsyncInterfaces.xml @@ -0,0 +1,223 @@ + + + + Microsoft.Bcl.AsyncInterfaces + + + + Provides the core logic for implementing a manual-reset or . + + + + + The callback to invoke when the operation completes if was called before the operation completed, + or if the operation completed before a callback was supplied, + or null if a callback hasn't yet been provided and the operation hasn't yet completed. + + + + State to pass to . + + + to flow to the callback, or null if no flowing is required. + + + + A "captured" or with which to invoke the callback, + or null if no special context is required. + + + + Whether the current operation has completed. + + + The result with which the operation succeeded, or the default value if it hasn't yet completed or failed. + + + The exception with which the operation failed, or null if it hasn't yet completed or completed successfully. + + + The current version of this value, used to help prevent misuse. + + + Gets or sets whether to force continuations to run asynchronously. + Continuations may run asynchronously if this is false, but they'll never run synchronously if this is true. + + + Resets to prepare for the next operation. + + + Completes with a successful result. + The result. + + + Complets with an error. + + + + Gets the operation version. + + + Gets the status of the operation. + Opaque value that was provided to the 's constructor. + + + Gets the result of the operation. + Opaque value that was provided to the 's constructor. + + + Schedules the continuation action for this operation. + The continuation to invoke when the operation has completed. + The state object to pass to when it's invoked. + Opaque value that was provided to the 's constructor. + The flags describing the behavior of the continuation. + + + Ensures that the specified token matches the current version. + The token supplied by . + + + Signals that the operation has completed. Invoked after the result or error has been set. + + + + Invokes the continuation with the appropriate captured context / scheduler. + This assumes that if is not null we're already + running within that . + + + + Provides a set of static methods for configuring -related behaviors on asynchronous enumerables and disposables. + + + Configures how awaits on the tasks returned from an async disposable will be performed. + The source async disposable. + Whether to capture and marshal back to the current context. + The configured async disposable. + + + Configures how awaits on the tasks returned from an async iteration will be performed. + The type of the objects being iterated. + The source enumerable being iterated. + Whether to capture and marshal back to the current context. + The configured enumerable. + + + Sets the to be passed to when iterating. + The type of the objects being iterated. + The source enumerable being iterated. + The to use. + The configured enumerable. + + + Represents a builder for asynchronous iterators. + + + Creates an instance of the struct. + The initialized instance. + + + Invokes on the state machine while guarding the . + The type of the state machine. + The state machine instance, passed by reference. + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + The type of the awaiter. + The type of the state machine. + The awaiter. + The state machine. + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + The type of the awaiter. + The type of the state machine. + The awaiter. + The state machine. + + + Marks iteration as being completed, whether successfully or otherwise. + + + Gets an object that may be used to uniquely identify this builder to the debugger. + + + Indicates whether a method is an asynchronous iterator. + + + Initializes a new instance of the class. + The type object for the underlying state machine type that's used to implement a state machine method. + + + Provides a type that can be used to configure how awaits on an are performed. + + + Provides an awaitable async enumerable that enables cancelable iteration and configured awaits. + + + Configures how awaits on the tasks returned from an async iteration will be performed. + Whether to capture and marshal back to the current context. + The configured enumerable. + This will replace any previous value set by for this iteration. + + + Sets the to be passed to when iterating. + The to use. + The configured enumerable. + This will replace any previous set by for this iteration. + + + Provides an awaitable async enumerator that enables cancelable iteration and configured awaits. + + + Advances the enumerator asynchronously to the next element of the collection. + + A that will complete with a result of true + if the enumerator was successfully advanced to the next element, or false if the enumerator has + passed the end of the collection. + + + + Gets the element in the collection at the current position of the enumerator. + + + + Performs application-defined tasks associated with freeing, releasing, or + resetting unmanaged resources asynchronously. + + + + Exposes an enumerator that provides asynchronous iteration over values of a specified type. + The type of values to enumerate. + + + Returns an enumerator that iterates asynchronously through the collection. + A that may be used to cancel the asynchronous iteration. + An enumerator that can be used to iterate asynchronously through the collection. + + + Supports a simple asynchronous iteration over a generic collection. + The type of objects to enumerate. + + + Advances the enumerator asynchronously to the next element of the collection. + + A that will complete with a result of true if the enumerator + was successfully advanced to the next element, or false if the enumerator has passed the end + of the collection. + + + + Gets the element in the collection at the current position of the enumerator. + + + Provides a mechanism for releasing unmanaged resources asynchronously. + + + + Performs application-defined tasks associated with freeing, releasing, or + resetting unmanaged resources asynchronously. + + + + diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll new file mode 100644 index 0000000..79fbfcc Binary files /dev/null and b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll differ diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml new file mode 100644 index 0000000..cb1744f --- /dev/null +++ b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml @@ -0,0 +1,223 @@ + + + + Microsoft.Bcl.AsyncInterfaces + + + + Provides the core logic for implementing a manual-reset or . + + + + + The callback to invoke when the operation completes if was called before the operation completed, + or if the operation completed before a callback was supplied, + or null if a callback hasn't yet been provided and the operation hasn't yet completed. + + + + State to pass to . + + + to flow to the callback, or null if no flowing is required. + + + + A "captured" or with which to invoke the callback, + or null if no special context is required. + + + + Whether the current operation has completed. + + + The result with which the operation succeeded, or the default value if it hasn't yet completed or failed. + + + The exception with which the operation failed, or null if it hasn't yet completed or completed successfully. + + + The current version of this value, used to help prevent misuse. + + + Gets or sets whether to force continuations to run asynchronously. + Continuations may run asynchronously if this is false, but they'll never run synchronously if this is true. + + + Resets to prepare for the next operation. + + + Completes with a successful result. + The result. + + + Complets with an error. + + + + Gets the operation version. + + + Gets the status of the operation. + Opaque value that was provided to the 's constructor. + + + Gets the result of the operation. + Opaque value that was provided to the 's constructor. + + + Schedules the continuation action for this operation. + The continuation to invoke when the operation has completed. + The state object to pass to when it's invoked. + Opaque value that was provided to the 's constructor. + The flags describing the behavior of the continuation. + + + Ensures that the specified token matches the current version. + The token supplied by . + + + Signals that the operation has completed. Invoked after the result or error has been set. + + + + Invokes the continuation with the appropriate captured context / scheduler. + This assumes that if is not null we're already + running within that . + + + + Provides a set of static methods for configuring -related behaviors on asynchronous enumerables and disposables. + + + Configures how awaits on the tasks returned from an async disposable will be performed. + The source async disposable. + Whether to capture and marshal back to the current context. + The configured async disposable. + + + Configures how awaits on the tasks returned from an async iteration will be performed. + The type of the objects being iterated. + The source enumerable being iterated. + Whether to capture and marshal back to the current context. + The configured enumerable. + + + Sets the to be passed to when iterating. + The type of the objects being iterated. + The source enumerable being iterated. + The to use. + The configured enumerable. + + + Represents a builder for asynchronous iterators. + + + Creates an instance of the struct. + The initialized instance. + + + Invokes on the state machine while guarding the . + The type of the state machine. + The state machine instance, passed by reference. + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + The type of the awaiter. + The type of the state machine. + The awaiter. + The state machine. + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + The type of the awaiter. + The type of the state machine. + The awaiter. + The state machine. + + + Marks iteration as being completed, whether successfully or otherwise. + + + Gets an object that may be used to uniquely identify this builder to the debugger. + + + Indicates whether a method is an asynchronous iterator. + + + Initializes a new instance of the class. + The type object for the underlying state machine type that's used to implement a state machine method. + + + Provides a type that can be used to configure how awaits on an are performed. + + + Provides an awaitable async enumerable that enables cancelable iteration and configured awaits. + + + Configures how awaits on the tasks returned from an async iteration will be performed. + Whether to capture and marshal back to the current context. + The configured enumerable. + This will replace any previous value set by for this iteration. + + + Sets the to be passed to when iterating. + The to use. + The configured enumerable. + This will replace any previous set by for this iteration. + + + Provides an awaitable async enumerator that enables cancelable iteration and configured awaits. + + + Advances the enumerator asynchronously to the next element of the collection. + + A that will complete with a result of true + if the enumerator was successfully advanced to the next element, or false if the enumerator has + passed the end of the collection. + + + + Gets the element in the collection at the current position of the enumerator. + + + + Performs application-defined tasks associated with freeing, releasing, or + resetting unmanaged resources asynchronously. + + + + Exposes an enumerator that provides asynchronous iteration over values of a specified type. + The type of values to enumerate. + + + Returns an enumerator that iterates asynchronously through the collection. + A that may be used to cancel the asynchronous iteration. + An enumerator that can be used to iterate asynchronously through the collection. + + + Supports a simple asynchronous iteration over a generic collection. + The type of objects to enumerate. + + + Advances the enumerator asynchronously to the next element of the collection. + + A that will complete with a result of true if the enumerator + was successfully advanced to the next element, or false if the enumerator has passed the end + of the collection. + + + + Gets the element in the collection at the current position of the enumerator. + + + Provides a mechanism for releasing unmanaged resources asynchronously. + + + + Performs application-defined tasks associated with freeing, releasing, or + resetting unmanaged resources asynchronously. + + + + diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll new file mode 100644 index 0000000..be25bdb Binary files /dev/null and b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll differ diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml new file mode 100644 index 0000000..5fd48a2 --- /dev/null +++ b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml @@ -0,0 +1,8 @@ + + + + Microsoft.Bcl.AsyncInterfaces + + + + diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/useSharedDesignerContext.txt b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/useSharedDesignerContext.txt new file mode 100644 index 0000000..e69de29 diff --git a/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/version.txt b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/version.txt new file mode 100644 index 0000000..0a6d216 --- /dev/null +++ b/packages/Microsoft.Bcl.AsyncInterfaces.5.0.0/version.txt @@ -0,0 +1 @@ +cf258a14b70ad9069470a108f13765e0e5988f51 diff --git a/packages/Microsoft.CodeAnalysis.4.1.0/.signature.p7s b/packages/Microsoft.CodeAnalysis.4.1.0/.signature.p7s new file mode 100644 index 0000000..8556418 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.4.1.0/.signature.p7s differ diff --git a/packages/Microsoft.CodeAnalysis.4.1.0/Icon.png b/packages/Microsoft.CodeAnalysis.4.1.0/Icon.png new file mode 100644 index 0000000..a0f1fdb Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.4.1.0/Icon.png differ diff --git a/packages/Microsoft.CodeAnalysis.4.1.0/Microsoft.CodeAnalysis.4.1.0.nupkg b/packages/Microsoft.CodeAnalysis.4.1.0/Microsoft.CodeAnalysis.4.1.0.nupkg new file mode 100644 index 0000000..f8694ec Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.4.1.0/Microsoft.CodeAnalysis.4.1.0.nupkg differ diff --git a/packages/Microsoft.CodeAnalysis.4.1.0/ThirdPartyNotices.rtf b/packages/Microsoft.CodeAnalysis.4.1.0/ThirdPartyNotices.rtf new file mode 100644 index 0000000..1e4323d Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.4.1.0/ThirdPartyNotices.rtf differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/.signature.p7s b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/.signature.p7s new file mode 100644 index 0000000..ecfc486 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/.signature.p7s differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/Icon.png b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/Icon.png new file mode 100644 index 0000000..a0f1fdb Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/Icon.png differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0.nupkg b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0.nupkg new file mode 100644 index 0000000..c6529ea Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0.nupkg differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/ThirdPartyNotices.rtf b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/ThirdPartyNotices.rtf new file mode 100644 index 0000000..1e4323d Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/ThirdPartyNotices.rtf differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll new file mode 100644 index 0000000..8309de2 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb new file mode 100644 index 0000000..7b843e0 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.xml b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.xml new file mode 100644 index 0000000..01981c3 --- /dev/null +++ b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.xml @@ -0,0 +1,953 @@ + + + + Microsoft.CodeAnalysis.CSharp.Workspaces + + + + + Determine the classification type for a given token. + + The token. + The correct syntactic classification for the token. + + + + Worker is an utility class that can classify a list of tokens or a tree within a + requested span The implementation is generic and can produce any kind of classification + artifacts T T is normally either ClassificationSpan or a Tuple (for testing purposes) + and constructed via provided factory. + + + + + Try use the existing syntax node and generate a new syntax node for the given . + Note: the returned syntax node might be modified, which means its parent information might be missing. + + + + + Moves the trailing trivia from the node's previous token to the end of the node + + + + + Parenthesize the left hand size of a member access, invocation or element access expression + + + + + C# always requires a type to be present with a local declaration. (Even if that type is + var). + + + + + Analyzes if type information is obvious to the reader by simply looking at the assignment expression. + + + accepts null, to be able to cater to codegen features + that are about to generate a local declaration and do not have this information to pass in. + Things (like analyzers) that do have a local declaration already, should pass this in. + + + + + Looks for types that have static methods that return the same type as the container. + e.g: int.Parse, XElement.Load, Tuple.Create etc. + + + + + If we have a method ToXXX and its return type is also XXX, then type name is apparent + e.g: Convert.ToString. + + + + + If there are type arguments on either side of assignment, we match type names instead of type equality + to account for inferred generic type arguments. + e.g: Tuple.Create(0, true) returns Tuple<X,y> which isn't the same as type Tuple. + otherwise, we match for type equivalence + + + + + Walks the portion of the tree we're adding imports to looking to see if those imports could likely cause + conflicts with existing code. Note: this is a best-effort basis, and the goal is to catch reasonable + conflicts effectively. There may be cases that do slip through that we can adjust for in the future. Those + cases should be assessed to see how reasonable/likely they are. I.e. if it's just a hypothetical case with + no users being hit, then that's far less important than if we have a reasonable coding pattern that would be + impacted by adding an import to a normal namespace. + + + + + A mapping containing the simple names and arity of all imported types, mapped to the import that they're + brought in by. + + + + + A mapping containing the simple names of all imported extension methods, mapped to the import that + they're brought in by. This doesn't keep track of arity because methods can be called with type + arguments. + + + We could consider adding more information here (for example the min/max number of args that this can be + called with). That could then be used to check if there could be a conflict. However, that's likely + more complexity than we need currently. But it is always something we can do in the future. + + + + + Track if we're in an anonymous method or not. If so, because of how the language binds lambdas and + overloads, we'll assume any method access we see inside (instance or otherwise) could end up conflicting + with an extension method we might pull in. + + + + + Given an argument node, tries to generate an appropriate name that can be used for that + argument. + + + + + Given an expression node, tries to generate an appropriate name that can be used for + that expression. + + + + + Decomposes a name or member access expression into its component parts. + + The name or member access expression. + The qualifier (or left-hand-side) of the name expression. This may be null if there is no qualifier. + The name of the expression. + The number of generic type parameters. + + + + Returns the parameter to which this argument is passed. If + is true, the last parameter will be returned if it is params parameter and the index of + the specified argument is greater than the number of parameters. + + + + + Returns the parameter to which this argument is passed. If + is true, the last parameter will be returned if it is params parameter and the index of + the specified argument is greater than the number of parameters. + + + Returns null if the is a named argument. + + + + + Are you possibly typing a tuple type or expression? + This is used to suppress colon as a completion trigger (so that you can type element names). + This is also used to recommend some keywords (like var). + + + + + Are you possibly in the designation part of a deconstruction? + This is used to enter suggestion mode (suggestions become soft-selected). + + + + + If inside a parenthesized or tuple expression, unwrap the nestings and return the container. + + + + + Is this a possible position for an await statement (`await using` or `await foreach`)? + + + + + Determines whether await should be suggested in a given position. + + + + + Returns true if this expression is in some ref keyword context. If then + will be the node containing the keyword. + + + + + If this declaration or identifier is part of a deconstruction, find the deconstruction. + If found, returns either an assignment expression or a foreach variable statement. + Returns null otherwise. + + copied from SyntaxExtensions.GetContainingDeconstruction + + + + + Adds to if it does not contain an anonymous + type and binds to the same type at the given . + + + + + DeterminesCheck if we're in an interesting situation like this: + + int i = 5; + i. // -- here + List ml = new List(); + + The problem is that "i.List" gets parsed as a type. In this case we need to try binding again as if "i" is + an expression and not a type. In order to do that, we need to speculate as to what 'i' meant if it wasn't + part of a local declaration's type. + + Another interesting case is something like: + + stringList. + await Test2(); + + Here "stringList.await" is thought of as the return type of a local function. + + + + + We always unilaterally add "global::" to all named types/namespaces. This + will then be trimmed off if possible by calls to + + + + + + Operator precedence classes from section 7.3.1 of the C# language specification. + + + + + Determine if the given array contains the given kind. + + Array to search + Sought value + True if contains the value. + PERF: Not using Array.IndexOf here because it results in a call to IndexOf on the + default EqualityComparer for SyntaxKind.The default comparer for SyntaxKind is the + ObjectEqualityComparer which results in boxing allocations. + + + + Returns all of the trivia to the left of this token up to the previous token (concatenates + the previous token's trailing trivia and this token's leading trivia). + + + + + + > + + + + Returns the list of using directives that affect . The list will be returned in + top down order. + + + + + Returns true if the passed in node contains an interleaved pp directive. + + i.e. The following returns false: + + void Goo() { + #if true + #endif + } + + #if true + void Goo() { + } + #endif + + but these return true: + + #if true + void Goo() { + #endif + } + + void Goo() { + #if true + } + #endif + + #if true + void Goo() { + #else + } + #endif + + i.e. the method returns true if it contains a PP directive that belongs to a grouping + constructs (like #if/#endif or #region/#endregion), but the grouping construct isn't + entirely contained within the span of the node. + + + + + Similar to except that the span to check + for interleaved directives can be specified separately to the node passed in. + + + + + Breaks up the list of provided nodes, based on how they are interspersed with pp + directives, into groups. Within these groups nodes can be moved around safely, without + breaking any pp constructs. + + + + + Returns child node or token that contains given position. + + + This is a copy of that also returns the index of the child node. + + + + + Returns true if this token is something that looks like a C# keyword. This includes + actual keywords, contextual keywords, and even 'var' and 'dynamic' + + + + + + + Determines whether the given SyntaxToken is the first token on a line in the specified SourceText. + + + + + Retrieves all trivia after this token, including it's trailing trivia and + the leading trivia of the next token. + + + + + Lexically, find the last token that looks like it's part of this generic name. + + The "name" of the generic identifier, last token before + the "&" + The last token in the name + This is related to the code in + + + + Takes an INCLUSIVE range of trivia from the trivia list. + + + + + Determines whether the specified TypeSyntax is actually 'var'. + + + + + Available if is or . + + + + + Available if is or . + + + + + Available if is or . + + + + + Builds up the suffix to show for something with parameters in navigate-to. + While it would be nice to just use the compiler SymbolDisplay API for this, + it would be too expensive as it requires going back to Symbols (which requires + creating compilations, etc.) in a perf sensitive area. + + So, instead, we just build a reasonable suffix using the pure syntax that a + user provided. That means that if they wrote "Method(System.Int32 i)" we'll + show that as "Method(System.Int32)" not "Method(int)". Given that this is + actually what the user wrote, and it saves us from ever having to go back to + symbols/compilations, this is well worth it, even if it does mean we have to + create our own 'symbol display' logic here. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Placed in the Zeroth column of the text editor + + + Placed at one less indent to the current context + + + Placed at the same indent as the current context + + + Single Spacing + + + Ignore Formatting + + + Remove Spacing + + + + this holds onto changes made by formatting engine. + + + + + C# never passes a VB Comment + + + + + + trivia factory. + + it will cache some commonly used trivia to reduce memory footprint and heap allocation + + + + + represents a general trivia between two tokens. slightly more expensive than others since it + needs to calculate stuff unlike other cases + + + + + Checks whether currentToken is the opening paren of a deconstruction-declaration in var form, such as var (x, y) = ... + + + + + Check whether the currentToken is a comma and is a delimiter between arguments inside a tuple expression. + + + + + Adds user defined and predefined conversions to the unnamed recommendation set. + + + Adds user defined operators to the unnamed recommendation set. + + + + + Flag indicating if we should perform a rename inside string literals. + + + + + Flag indicating if we should perform a rename inside comment trivia. + + + + + A map from spans of tokens needing rename within strings or comments to an optional + set of specific sub-spans within the token span that + have matches and should be renamed. + If this sorted set is null, it indicates that sub-spans to rename within the token span + are not available, and a regex match should be performed to rename + all matches within the span. + + + + + Gets the top most enclosing statement or CrefSyntax as target to call MakeExplicit on. + It's either the enclosing statement, or if this statement is inside of a lambda expression, the enclosing + statement of this lambda. + + The token to get the complexification target for. + + + + + Gets the semantic model for the given node. + If the node belongs to the syntax tree of the original semantic model, then returns originalSemanticModel. + Otherwise, returns a speculative model. + The assumption for the later case is that span start position of the given node in it's syntax tree is same as + the span start of the original node in the original syntax tree. + + + + + Computes a list of nodes and tokens that need to be reduced in the given syntax root. + + + + + Complexify makes inferred names explicit for tuple elements and anonymous type members. This + class considers which ones of those can be simplified (after the refactoring was done). + If the inferred name of the member matches, the explicit name (from Complexify) can be removed. + + + + + Contains helpers used by several simplifier subclasses. + + + + + Returns the predefined keyword kind for a given . + + The of this type. + The keyword kind for a given special type, or SyntaxKind.None if the type name is not a predefined type. + + + + Determines if and + together contain a superset of the symbols in . + + + + + Compares symbols by their original definition. + + + + + Tells if the member access is dynamically invoked and cannot be reduced. In the case of + NS1.NS2.T1.T2.Method(...dynamic...) we can only remove the NS1.NS2 + portion. The namespace part is not encoded into the IL, but the specific types in + T1.T2 and cannot be removed. + + + + + Checks if the SyntaxNode is a name of a namespace declaration. To be a namespace name, the syntax + must be parented by an namespace declaration and the node itself must be equal to the declaration's Name + property. + + + + + + + By default the cast simplifier operates under several main principles: + + The final type that a cast-expression was converted to should be the same as the final + type that the underlying expression should convert to without the cast. This tells us that + the compiler thinks that value should convert to that type implicitly, not just explicitly. + Static semantics of the code should remain the same. This means that things like overload + resolution of the invocations the casted expression is contained within should not change. + Runtime types and values should not observably change. This means that if casting the + value would cause a different type to be seen in a call, + or a different value could be observed at runtime, then it must remain. + + + These rules serve as a good foundational intuition about when casts should be kept and when + they should be removable. However, they are not entirely complete. There are cases when we + can weaken some of the above rules if it would not be observable at runtime. For example, + if it can be proven that calling through an interface method would lead to the exact same + call at runtime to a specific implementation of that interface method, then it can be legal to + remove such a cast as at runtime this would not be observable. This does in effect mean that + the emitted IL will be different, but this matches the user expectation that the *end* behavior + of their code remains the same. + + + + + Represents a syntax reference that doesn't actually hold onto the + referenced node. Instead, enough data is held onto so that the node + can be recovered and returned if necessary. + + + + + Represents a syntax reference that was passed a null + reference to a node. In this case, we just hold onto the + weak tree reference and throw if any invalid properties + are accessed. + + + + + Represents a syntax reference that doesn't actually hold onto the + referenced node. Instead, enough data is held onto so that the node + can be recovered and returned if necessary. + + + + + Represents a syntax tree that only has a weak reference to its + underlying data. This way it can be passed around without forcing + the underlying full tree to stay alive. Think of it more as a + key that can be used to identify a tree rather than the tree itself. + + + + + Corresponds to Microsoft.CodeAnalysis.CSharp.LanguageVersionFacts.CSharpNext. + + + + + this help finding a range of tokens to format based on given ending token + + + + + Helper class to analyze the semantic effects of a speculated syntax node replacement on the parenting nodes. + Given an expression node from a syntax tree and a new expression from a different syntax tree, + it replaces the expression with the new expression to create a speculated syntax tree. + It uses the original tree's semantic model to create a speculative semantic model and verifies that + the syntax replacement doesn't break the semantics of any parenting nodes of the original expression. + + + + + Creates a semantic analyzer for speculative syntax replacement. + + Original expression to be replaced. + New expression to replace the original expression. + Semantic model of node's syntax tree. + Cancellation token. + + True if semantic analysis should be skipped for the replaced node and performed starting from parent of the original and replaced nodes. + This could be the case when custom verifications are required to be done by the caller or + semantics of the replaced expression are different from the original expression. + + + True if semantic analysis should fail when any of the invocation expression ancestors of in original code has overload resolution failures. + + + + + Determines whether performing the syntax replacement in one of the sibling nodes of the given lambda expressions will change the lambda binding semantics. + This is done by first determining the lambda parameters whose type differs in the replaced lambda node. + For each of these parameters, we find the descendant identifier name nodes in the lambda body and check if semantics of any of the parenting nodes of these + identifier nodes have changed in the replaced lambda. + + + + + Checks if the conversion might change the resultant boxed type. + Similar boxing checks are performed elsewhere, but in this case we need to perform the check on the entire conditional expression. + This will make sure the resultant cast is proper for the type of the conditional expression. + + + + + Whether or not converting would transition the code to the style the user prefers. i.e. if the user likes + var for everything, and you have int i = 0 then will be + . However, if the user likes var for everything and you have var i = 0, + then it's still possible to convert that, it would just be for + because it goes against the user's preferences. + + + In general, most features should only convert the type if is + . The one exception is the refactoring, which is explicitly there to still let people + convert things quickly, even if it's going against their stated style. + + + + + Returns true if type information could be gleaned by simply looking at the given statement. + This typically means that the type name occurs in right hand side of an assignment. + + + + + checks if the type represented by the given symbol is one of the + simple types defined in the compiler. + + + From the IDE perspective, we also include object and string to be simplified + to var. considers string + and object but the compiler's implementation of IsIntrinsicType does not. + + + + + Returns true for type that are arrays/nullable/pointer types of special types + + + + + Analyzes the assignment expression and rejects a given declaration if it is unsuitable for explicit typing. + + + false, if explicit typing cannot be used. + true, otherwise. + + + + + Analyzes the assignment expression and rejects a given declaration if it is unsuitable for implicit typing. + + + false, if implicit typing cannot be used. + true, otherwise. + + + + No available location found to add statements to. + + + Namespace can not be added in this destination. + + + Node does not descend from root. + + + Node not in parent's child list + + + Trivia is not associated with token + + + Cannot retrieve the Span of a null syntax reference. + + + Only attributes, constructor initializers, expressions or statements can be made explicit + + + Implement Interface + + + Indentation preferences + + + Space preferences + + + Wrapping preferences + + + R&emove and Sort Usings + + + &Sort Usings + + + var preferences + + + Expression-bodied members + + + Pattern matching preferences + + + Null-checking preferences + + + Code-block preferences + + + 'using' directive preferences + + + Expected string or char literal + + + '{0}.{1}' is not supported in this version + + + Remove this value when another is added. + + + + Defines the known values for . + + + + + Braces are allowed, but not preferred. + + + The value 0 is important for serialization compatibility in + . Prior to the use of this enum, the serialized value + was the value . + + + + + Braces are preferred where allowed except in the following limited situations: + + + Braces are not required for the embedded statement of an else clause when the embedded statement is an if statement. + In a sequence of consecutive using statements, only the last statement requires braces. + In a sequence of consecutive lock statements, only the last statement requires braces. + In a sequence of consecutive fixed statements, only the last statement requires braces. + + + + The value 1 is important for serialization compatibility in + . Prior to the use of this enum, the serialized value + was the value . + + + + + Braces are always allowed, and generally preferred except in limited situations involving single-line + statements and expressions: + + + Braces may be omitted in the cases described for . + Braces may be omitted when the entire statement is placed on one line. + For a statement that contains one or more embedded statements, braces may be omitted when + every embedded statement fits on one line, and the part preceding the embedded statement is placed on one + line. If any embedded statement uses braces, braces are preferred for all embedded statements of the same + parent statement. For the purposes of evaluating this rule, if the embedded statement following an + else keyword is an if statement, the embedded statements of the nested if statement are treated as + children of the parent statement of the else keyword. + + + + + diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..4132bf0 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..35cbf95 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..460ea87 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..a66f9c1 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..56169b1 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..82aea44 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..8decc3e Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..4b06920 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..6289dae Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..b5da344 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..4c4d1e8 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..271d5dd Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..746b110 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll new file mode 100644 index 0000000..e727be3 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb new file mode 100644 index 0000000..16564db Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.xml b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.xml new file mode 100644 index 0000000..01981c3 --- /dev/null +++ b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.xml @@ -0,0 +1,953 @@ + + + + Microsoft.CodeAnalysis.CSharp.Workspaces + + + + + Determine the classification type for a given token. + + The token. + The correct syntactic classification for the token. + + + + Worker is an utility class that can classify a list of tokens or a tree within a + requested span The implementation is generic and can produce any kind of classification + artifacts T T is normally either ClassificationSpan or a Tuple (for testing purposes) + and constructed via provided factory. + + + + + Try use the existing syntax node and generate a new syntax node for the given . + Note: the returned syntax node might be modified, which means its parent information might be missing. + + + + + Moves the trailing trivia from the node's previous token to the end of the node + + + + + Parenthesize the left hand size of a member access, invocation or element access expression + + + + + C# always requires a type to be present with a local declaration. (Even if that type is + var). + + + + + Analyzes if type information is obvious to the reader by simply looking at the assignment expression. + + + accepts null, to be able to cater to codegen features + that are about to generate a local declaration and do not have this information to pass in. + Things (like analyzers) that do have a local declaration already, should pass this in. + + + + + Looks for types that have static methods that return the same type as the container. + e.g: int.Parse, XElement.Load, Tuple.Create etc. + + + + + If we have a method ToXXX and its return type is also XXX, then type name is apparent + e.g: Convert.ToString. + + + + + If there are type arguments on either side of assignment, we match type names instead of type equality + to account for inferred generic type arguments. + e.g: Tuple.Create(0, true) returns Tuple<X,y> which isn't the same as type Tuple. + otherwise, we match for type equivalence + + + + + Walks the portion of the tree we're adding imports to looking to see if those imports could likely cause + conflicts with existing code. Note: this is a best-effort basis, and the goal is to catch reasonable + conflicts effectively. There may be cases that do slip through that we can adjust for in the future. Those + cases should be assessed to see how reasonable/likely they are. I.e. if it's just a hypothetical case with + no users being hit, then that's far less important than if we have a reasonable coding pattern that would be + impacted by adding an import to a normal namespace. + + + + + A mapping containing the simple names and arity of all imported types, mapped to the import that they're + brought in by. + + + + + A mapping containing the simple names of all imported extension methods, mapped to the import that + they're brought in by. This doesn't keep track of arity because methods can be called with type + arguments. + + + We could consider adding more information here (for example the min/max number of args that this can be + called with). That could then be used to check if there could be a conflict. However, that's likely + more complexity than we need currently. But it is always something we can do in the future. + + + + + Track if we're in an anonymous method or not. If so, because of how the language binds lambdas and + overloads, we'll assume any method access we see inside (instance or otherwise) could end up conflicting + with an extension method we might pull in. + + + + + Given an argument node, tries to generate an appropriate name that can be used for that + argument. + + + + + Given an expression node, tries to generate an appropriate name that can be used for + that expression. + + + + + Decomposes a name or member access expression into its component parts. + + The name or member access expression. + The qualifier (or left-hand-side) of the name expression. This may be null if there is no qualifier. + The name of the expression. + The number of generic type parameters. + + + + Returns the parameter to which this argument is passed. If + is true, the last parameter will be returned if it is params parameter and the index of + the specified argument is greater than the number of parameters. + + + + + Returns the parameter to which this argument is passed. If + is true, the last parameter will be returned if it is params parameter and the index of + the specified argument is greater than the number of parameters. + + + Returns null if the is a named argument. + + + + + Are you possibly typing a tuple type or expression? + This is used to suppress colon as a completion trigger (so that you can type element names). + This is also used to recommend some keywords (like var). + + + + + Are you possibly in the designation part of a deconstruction? + This is used to enter suggestion mode (suggestions become soft-selected). + + + + + If inside a parenthesized or tuple expression, unwrap the nestings and return the container. + + + + + Is this a possible position for an await statement (`await using` or `await foreach`)? + + + + + Determines whether await should be suggested in a given position. + + + + + Returns true if this expression is in some ref keyword context. If then + will be the node containing the keyword. + + + + + If this declaration or identifier is part of a deconstruction, find the deconstruction. + If found, returns either an assignment expression or a foreach variable statement. + Returns null otherwise. + + copied from SyntaxExtensions.GetContainingDeconstruction + + + + + Adds to if it does not contain an anonymous + type and binds to the same type at the given . + + + + + DeterminesCheck if we're in an interesting situation like this: + + int i = 5; + i. // -- here + List ml = new List(); + + The problem is that "i.List" gets parsed as a type. In this case we need to try binding again as if "i" is + an expression and not a type. In order to do that, we need to speculate as to what 'i' meant if it wasn't + part of a local declaration's type. + + Another interesting case is something like: + + stringList. + await Test2(); + + Here "stringList.await" is thought of as the return type of a local function. + + + + + We always unilaterally add "global::" to all named types/namespaces. This + will then be trimmed off if possible by calls to + + + + + + Operator precedence classes from section 7.3.1 of the C# language specification. + + + + + Determine if the given array contains the given kind. + + Array to search + Sought value + True if contains the value. + PERF: Not using Array.IndexOf here because it results in a call to IndexOf on the + default EqualityComparer for SyntaxKind.The default comparer for SyntaxKind is the + ObjectEqualityComparer which results in boxing allocations. + + + + Returns all of the trivia to the left of this token up to the previous token (concatenates + the previous token's trailing trivia and this token's leading trivia). + + + + + + > + + + + Returns the list of using directives that affect . The list will be returned in + top down order. + + + + + Returns true if the passed in node contains an interleaved pp directive. + + i.e. The following returns false: + + void Goo() { + #if true + #endif + } + + #if true + void Goo() { + } + #endif + + but these return true: + + #if true + void Goo() { + #endif + } + + void Goo() { + #if true + } + #endif + + #if true + void Goo() { + #else + } + #endif + + i.e. the method returns true if it contains a PP directive that belongs to a grouping + constructs (like #if/#endif or #region/#endregion), but the grouping construct isn't + entirely contained within the span of the node. + + + + + Similar to except that the span to check + for interleaved directives can be specified separately to the node passed in. + + + + + Breaks up the list of provided nodes, based on how they are interspersed with pp + directives, into groups. Within these groups nodes can be moved around safely, without + breaking any pp constructs. + + + + + Returns child node or token that contains given position. + + + This is a copy of that also returns the index of the child node. + + + + + Returns true if this token is something that looks like a C# keyword. This includes + actual keywords, contextual keywords, and even 'var' and 'dynamic' + + + + + + + Determines whether the given SyntaxToken is the first token on a line in the specified SourceText. + + + + + Retrieves all trivia after this token, including it's trailing trivia and + the leading trivia of the next token. + + + + + Lexically, find the last token that looks like it's part of this generic name. + + The "name" of the generic identifier, last token before + the "&" + The last token in the name + This is related to the code in + + + + Takes an INCLUSIVE range of trivia from the trivia list. + + + + + Determines whether the specified TypeSyntax is actually 'var'. + + + + + Available if is or . + + + + + Available if is or . + + + + + Available if is or . + + + + + Builds up the suffix to show for something with parameters in navigate-to. + While it would be nice to just use the compiler SymbolDisplay API for this, + it would be too expensive as it requires going back to Symbols (which requires + creating compilations, etc.) in a perf sensitive area. + + So, instead, we just build a reasonable suffix using the pure syntax that a + user provided. That means that if they wrote "Method(System.Int32 i)" we'll + show that as "Method(System.Int32)" not "Method(int)". Given that this is + actually what the user wrote, and it saves us from ever having to go back to + symbols/compilations, this is well worth it, even if it does mean we have to + create our own 'symbol display' logic here. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Placed in the Zeroth column of the text editor + + + Placed at one less indent to the current context + + + Placed at the same indent as the current context + + + Single Spacing + + + Ignore Formatting + + + Remove Spacing + + + + this holds onto changes made by formatting engine. + + + + + C# never passes a VB Comment + + + + + + trivia factory. + + it will cache some commonly used trivia to reduce memory footprint and heap allocation + + + + + represents a general trivia between two tokens. slightly more expensive than others since it + needs to calculate stuff unlike other cases + + + + + Checks whether currentToken is the opening paren of a deconstruction-declaration in var form, such as var (x, y) = ... + + + + + Check whether the currentToken is a comma and is a delimiter between arguments inside a tuple expression. + + + + + Adds user defined and predefined conversions to the unnamed recommendation set. + + + Adds user defined operators to the unnamed recommendation set. + + + + + Flag indicating if we should perform a rename inside string literals. + + + + + Flag indicating if we should perform a rename inside comment trivia. + + + + + A map from spans of tokens needing rename within strings or comments to an optional + set of specific sub-spans within the token span that + have matches and should be renamed. + If this sorted set is null, it indicates that sub-spans to rename within the token span + are not available, and a regex match should be performed to rename + all matches within the span. + + + + + Gets the top most enclosing statement or CrefSyntax as target to call MakeExplicit on. + It's either the enclosing statement, or if this statement is inside of a lambda expression, the enclosing + statement of this lambda. + + The token to get the complexification target for. + + + + + Gets the semantic model for the given node. + If the node belongs to the syntax tree of the original semantic model, then returns originalSemanticModel. + Otherwise, returns a speculative model. + The assumption for the later case is that span start position of the given node in it's syntax tree is same as + the span start of the original node in the original syntax tree. + + + + + Computes a list of nodes and tokens that need to be reduced in the given syntax root. + + + + + Complexify makes inferred names explicit for tuple elements and anonymous type members. This + class considers which ones of those can be simplified (after the refactoring was done). + If the inferred name of the member matches, the explicit name (from Complexify) can be removed. + + + + + Contains helpers used by several simplifier subclasses. + + + + + Returns the predefined keyword kind for a given . + + The of this type. + The keyword kind for a given special type, or SyntaxKind.None if the type name is not a predefined type. + + + + Determines if and + together contain a superset of the symbols in . + + + + + Compares symbols by their original definition. + + + + + Tells if the member access is dynamically invoked and cannot be reduced. In the case of + NS1.NS2.T1.T2.Method(...dynamic...) we can only remove the NS1.NS2 + portion. The namespace part is not encoded into the IL, but the specific types in + T1.T2 and cannot be removed. + + + + + Checks if the SyntaxNode is a name of a namespace declaration. To be a namespace name, the syntax + must be parented by an namespace declaration and the node itself must be equal to the declaration's Name + property. + + + + + + + By default the cast simplifier operates under several main principles: + + The final type that a cast-expression was converted to should be the same as the final + type that the underlying expression should convert to without the cast. This tells us that + the compiler thinks that value should convert to that type implicitly, not just explicitly. + Static semantics of the code should remain the same. This means that things like overload + resolution of the invocations the casted expression is contained within should not change. + Runtime types and values should not observably change. This means that if casting the + value would cause a different type to be seen in a call, + or a different value could be observed at runtime, then it must remain. + + + These rules serve as a good foundational intuition about when casts should be kept and when + they should be removable. However, they are not entirely complete. There are cases when we + can weaken some of the above rules if it would not be observable at runtime. For example, + if it can be proven that calling through an interface method would lead to the exact same + call at runtime to a specific implementation of that interface method, then it can be legal to + remove such a cast as at runtime this would not be observable. This does in effect mean that + the emitted IL will be different, but this matches the user expectation that the *end* behavior + of their code remains the same. + + + + + Represents a syntax reference that doesn't actually hold onto the + referenced node. Instead, enough data is held onto so that the node + can be recovered and returned if necessary. + + + + + Represents a syntax reference that was passed a null + reference to a node. In this case, we just hold onto the + weak tree reference and throw if any invalid properties + are accessed. + + + + + Represents a syntax reference that doesn't actually hold onto the + referenced node. Instead, enough data is held onto so that the node + can be recovered and returned if necessary. + + + + + Represents a syntax tree that only has a weak reference to its + underlying data. This way it can be passed around without forcing + the underlying full tree to stay alive. Think of it more as a + key that can be used to identify a tree rather than the tree itself. + + + + + Corresponds to Microsoft.CodeAnalysis.CSharp.LanguageVersionFacts.CSharpNext. + + + + + this help finding a range of tokens to format based on given ending token + + + + + Helper class to analyze the semantic effects of a speculated syntax node replacement on the parenting nodes. + Given an expression node from a syntax tree and a new expression from a different syntax tree, + it replaces the expression with the new expression to create a speculated syntax tree. + It uses the original tree's semantic model to create a speculative semantic model and verifies that + the syntax replacement doesn't break the semantics of any parenting nodes of the original expression. + + + + + Creates a semantic analyzer for speculative syntax replacement. + + Original expression to be replaced. + New expression to replace the original expression. + Semantic model of node's syntax tree. + Cancellation token. + + True if semantic analysis should be skipped for the replaced node and performed starting from parent of the original and replaced nodes. + This could be the case when custom verifications are required to be done by the caller or + semantics of the replaced expression are different from the original expression. + + + True if semantic analysis should fail when any of the invocation expression ancestors of in original code has overload resolution failures. + + + + + Determines whether performing the syntax replacement in one of the sibling nodes of the given lambda expressions will change the lambda binding semantics. + This is done by first determining the lambda parameters whose type differs in the replaced lambda node. + For each of these parameters, we find the descendant identifier name nodes in the lambda body and check if semantics of any of the parenting nodes of these + identifier nodes have changed in the replaced lambda. + + + + + Checks if the conversion might change the resultant boxed type. + Similar boxing checks are performed elsewhere, but in this case we need to perform the check on the entire conditional expression. + This will make sure the resultant cast is proper for the type of the conditional expression. + + + + + Whether or not converting would transition the code to the style the user prefers. i.e. if the user likes + var for everything, and you have int i = 0 then will be + . However, if the user likes var for everything and you have var i = 0, + then it's still possible to convert that, it would just be for + because it goes against the user's preferences. + + + In general, most features should only convert the type if is + . The one exception is the refactoring, which is explicitly there to still let people + convert things quickly, even if it's going against their stated style. + + + + + Returns true if type information could be gleaned by simply looking at the given statement. + This typically means that the type name occurs in right hand side of an assignment. + + + + + checks if the type represented by the given symbol is one of the + simple types defined in the compiler. + + + From the IDE perspective, we also include object and string to be simplified + to var. considers string + and object but the compiler's implementation of IsIntrinsicType does not. + + + + + Returns true for type that are arrays/nullable/pointer types of special types + + + + + Analyzes the assignment expression and rejects a given declaration if it is unsuitable for explicit typing. + + + false, if explicit typing cannot be used. + true, otherwise. + + + + + Analyzes the assignment expression and rejects a given declaration if it is unsuitable for implicit typing. + + + false, if implicit typing cannot be used. + true, otherwise. + + + + No available location found to add statements to. + + + Namespace can not be added in this destination. + + + Node does not descend from root. + + + Node not in parent's child list + + + Trivia is not associated with token + + + Cannot retrieve the Span of a null syntax reference. + + + Only attributes, constructor initializers, expressions or statements can be made explicit + + + Implement Interface + + + Indentation preferences + + + Space preferences + + + Wrapping preferences + + + R&emove and Sort Usings + + + &Sort Usings + + + var preferences + + + Expression-bodied members + + + Pattern matching preferences + + + Null-checking preferences + + + Code-block preferences + + + 'using' directive preferences + + + Expected string or char literal + + + '{0}.{1}' is not supported in this version + + + Remove this value when another is added. + + + + Defines the known values for . + + + + + Braces are allowed, but not preferred. + + + The value 0 is important for serialization compatibility in + . Prior to the use of this enum, the serialized value + was the value . + + + + + Braces are preferred where allowed except in the following limited situations: + + + Braces are not required for the embedded statement of an else clause when the embedded statement is an if statement. + In a sequence of consecutive using statements, only the last statement requires braces. + In a sequence of consecutive lock statements, only the last statement requires braces. + In a sequence of consecutive fixed statements, only the last statement requires braces. + + + + The value 1 is important for serialization compatibility in + . Prior to the use of this enum, the serialized value + was the value . + + + + + Braces are always allowed, and generally preferred except in limited situations involving single-line + statements and expressions: + + + Braces may be omitted in the cases described for . + Braces may be omitted when the entire statement is placed on one line. + For a statement that contains one or more embedded statements, braces may be omitted when + every embedded statement fits on one line, and the part preceding the embedded statement is placed on one + line. If any embedded statement uses braces, braces are preferred for all embedded statements of the same + parent statement. For the purposes of evaluating this rule, if the embedded statement following an + else keyword is an if statement, the embedded statements of the nested if statement are treated as + children of the parent statement of the else keyword. + + + + + diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..ee9bdc3 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..be75f70 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..526c59e Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..32ee029 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..14e9f3c Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..f38b3de Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..3e058ad Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..4bf3d04 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..771d007 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..4060e94 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..6b7e15e Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..3162d98 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll new file mode 100644 index 0000000..e77ecc1 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.CSharp.Workspaces.4.1.0/lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Scripting.4.1.0/.signature.p7s b/packages/Microsoft.CodeAnalysis.Scripting.4.1.0/.signature.p7s new file mode 100644 index 0000000..cb9f56e Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Scripting.4.1.0/.signature.p7s differ diff --git a/packages/Microsoft.CodeAnalysis.Scripting.4.1.0/Icon.png b/packages/Microsoft.CodeAnalysis.Scripting.4.1.0/Icon.png new file mode 100644 index 0000000..a0f1fdb Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Scripting.4.1.0/Icon.png differ diff --git a/packages/Microsoft.CodeAnalysis.Scripting.4.1.0/Microsoft.CodeAnalysis.Scripting.4.1.0.nupkg b/packages/Microsoft.CodeAnalysis.Scripting.4.1.0/Microsoft.CodeAnalysis.Scripting.4.1.0.nupkg new file mode 100644 index 0000000..8fca85c Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Scripting.4.1.0/Microsoft.CodeAnalysis.Scripting.4.1.0.nupkg differ diff --git a/packages/Microsoft.CodeAnalysis.Scripting.4.1.0/ThirdPartyNotices.rtf b/packages/Microsoft.CodeAnalysis.Scripting.4.1.0/ThirdPartyNotices.rtf new file mode 100644 index 0000000..1e4323d Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Scripting.4.1.0/ThirdPartyNotices.rtf differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/.signature.p7s b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/.signature.p7s new file mode 100644 index 0000000..79c5ac1 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/.signature.p7s differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/Icon.png b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/Icon.png new file mode 100644 index 0000000..a0f1fdb Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/Icon.png differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/Microsoft.CodeAnalysis.VisualBasic.4.1.0.nupkg b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/Microsoft.CodeAnalysis.VisualBasic.4.1.0.nupkg new file mode 100644 index 0000000..a927a19 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/Microsoft.CodeAnalysis.VisualBasic.4.1.0.nupkg differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/ThirdPartyNotices.rtf b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/ThirdPartyNotices.rtf new file mode 100644 index 0000000..1e4323d Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/ThirdPartyNotices.rtf differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.dll new file mode 100644 index 0000000..6599902 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.pdb b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.pdb new file mode 100644 index 0000000..c578657 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.pdb differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.xml b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.xml new file mode 100644 index 0000000..24535b1 --- /dev/null +++ b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.xml @@ -0,0 +1,81514 @@ + + + + +Microsoft.CodeAnalysis.VisualBasic + + + + + + Analyzes method body for error conditions such as definite assignments, unreachable code etc... + + This analysis is done when doing the full compile or when responding to GetCompileDiagnostics. + This method assume that the trees are already bound and will not do any rewriting/lowering + It is possible and common for this analysis to be done in the presence of errors. + + + + + Mutate 'self' flow analysis state to reflect the fact that there is a control-flow + convergence with the 'other' flow analysis state. Return true if and only if the + state has changed as a result of the Join. + + + + + Mutate 'self' flow analysis state to reflect the fact that there is a control-flow + sequence with the 'other' flow analysis state - in other words, this occurs and then + the other. + + + + + Produce a duplicate of this flow analysis state. + + + + + + + BlockLevel is used to keep track of the lexical nesting level of label and goto statements. + The other most block has a path of {} + + + + + + The state associated with a label includes the statement itself, the local state and the nesting. + + + + + + A pending branch. There are created for a return, break, continue, or goto statement. The + idea is that we don't know if the branch will eventually reach its destination because of an + intervening finally block that cannot complete normally. So we store them up and handle them + as we complete processing each construct. At the end of a block, if there are any pending + branches to a label in that block we process the branch. Otherwise we relay it up to the + enclosing construct as a pending branch of the enclosing construct. + + + + Start of the region being analyzed, or Nothing if it is not a region based analysis + + + End of the region being analyzed, or Nothing if it is not a region based analysis + + + Current region span, valid only for region based analysis + + + Tells whether we are analyzing the position before, during, or after the region + + + + A cache of the state at the backward branch point of each loop. This is not needed + during normal flow analysis, but is needed for region analysis. + + + + Checks if the text span passed is inside the region + + + + Subclasses may override EnterRegion to perform any actions at the entry to the region. + + + + + Subclasses may override LeaveRegion to perform any action at the end of the region. + + + + + If invalid region is dynamically detected this string contains text description of the reason. + + Currently only the following case can cause the region to be invalidated: + + - We have declaration of several variables using 'As New' having object + initializer with implicit receiver; if region included such a receiver, + it should include the whole declaration. Example: + Dim a, b As New Clazz(...) With { .X = [| .Y |] } + + - Part of With statement expression which was not captured into locals and + was not evaluated during With statement body execution. Example: + initializer with implicit receiver; if region included such a receiver, + it should include the whole declaration. Example: + Dim sArray() As StructType = ... + With sArray([| 0 |]) + End With + + + + + + The compilation in which the analysis is taking place. This is needed to determine which + conditional methods will be compiled and which will be omitted. + + + + + The symbol of method whose body is being analyzed or field or property whose + initializer is being analyzed + + + + + The bound code of the method or initializer being analyzed + + + + + The flow analysis state at each label, computed by merging the state from branches to + that label with the state when we fall into the label. Entries are created when the + label is encountered. One case deserves special attention: when the destination of the + branch is a label earlier in the code, it is possible (though rarely occurs in practice) + that we are changing the state at a label that we've already analyzed. In that case we + run another pass of the analysis to allow those changes to propagate. This repeats until + no further changes to the state of these labels occurs. This can result in quadratic + performance in unlikely but possible code such as this: "int x; if (cond) goto l1; x = + 3; l5: print x; l4: goto l5; l3: goto l4; l2: goto l3; l1: goto l2;" + + + + All of the labels seen so far in this forward scan of the body + + + + Set to true after an analysis scan if the analysis was incomplete due to a backward + "goto" branch changing some analysis result. In this case the caller scans again (until + this is false). Since the analysis proceeds by monotonically changing the state computed + at each label, this must terminate. + + + + Actual storage for PendingBranches + + + The definite assignment and/or reachability state at the point currently being analyzed. + + + + 'Me' parameter, relevant for methods, fields, properties, otherwise Nothing + + + + + Used only in the data flows out walker, we track unassignments as well as assignments + + + + + The current lexical nesting in the BoundTree. + + + + + + Where all diagnostics are deposited. + + + + Indicates whether or not support of constant expressions (boolean and nothing) + is enabled in this analyzer. In general, constant expressions support is enabled in analysis + exposed to public API consumer and disabled when used from command-line compiler. + + + + Construct an object for outside-region analysis + + + + + Construct an object for region-aware analysis + + + + Set conditional state + + + Set unconditional state + + + Split state + + + Intersect and unsplit state + + + + Pending escapes generated in the current scope (or more deeply nested scopes). When jump + statements (goto, break, continue, return) are processed, they are placed in the + Me._pendingBranches buffer to be processed later by the code handling the destination + statement. As a special case, the processing of try-finally statements might modify the + contents of the Me._pendingBranches buffer to take into account the behavior of + "intervening" finally clauses. + + + + + Perform a single pass of flow analysis. Note that after this pass, + this.backwardBranchChanged indicates if a further pass is required. + + False if the region is invalid + + + False if the region is invalid + + + + If analysis is being performed in a context of a method returns method's parameters, + otherwise returns an empty array + + + + + Specifies whether or not method's ByRef parameters should be analyzed. If there's more than one location in + the method being analyzed, then the method is partial and we prefer to report an out parameter in partial + method error. + Note: VB doesn't support "out" so it doesn't warn for unassigned parameters. However, check variables passed + byref are assigned so that data flow analysis detects parameters flowing out. + + true if the out parameters of the method should be analyzed + + + + Method symbol or nothing + TODO: Need to try and get rid of this property + + + + + If analysis is being performed in a context of a method returns method's return type, + otherwise returns Nothing + + + + + Return the flow analysis state associated with a label. + + + + + + + + Set the current state to one that indicates that it is unreachable. + + + + + Called at the point in a loop where the backwards branch would go to. + + + + + + + Called at the point in a loop where the backward branch is placed. + + + + + + + Used to resolve exit statements in each statement form that has an Exit statement + (loops, switch). + + + + + Used to resolve continue statements in each statement form that supports it. + + + + + + Subclasses override this if they want to take special actions on processing a goto + statement, when both the jump and the label have been located. + + + + + To handle a label, we resolve all pending forward references to branches to that label. Returns true if the state of + the label changes as a result. + + + + + + + When branching into constructs that don't support jumps into/out of (i.e. lambdas), + we save the pending branches when visiting more nested constructs. + + + + + We use this to restore the old set of pending branches and labels after visiting a construct that contains nested statements. + + The old pending branches/labels, which are to be merged with the current ones + + + + We look at all pending branches and attempt to resolve the branches with labels if the nesting of the + block is the nearest common parent to the branch and the label. Because the code is evaluated recursively + outward we only need to check if the current nesting is a prefix of both the branch and the label nesting. + + + + + Report an unimplemented language construct. + + + + + + + + Visit a node. + + + + + Visit a node, process + + + + + Visit a boolean condition expression. + + + + + Visit a general expression, where we will only need to determine if variables are + assigned (or not). That is, we will not be needing AssignedWhenTrue and + AssignedWhenFalse. + + + + + Since each language construct must be handled according to the rules of the language specification, + the default visitor reports that the construct for the node is not implemented in the compiler. + + + + Bound field access passed may require tracking if it is an access to a non-shared structure field + + + + If a receiver is included in cases where the receiver will not be + evaluated (an instance for a shared method for instance), we + still want to visit the receiver but treat it as unreachable code. + + + + + A region analysis walker that computes the set of variables that are always assigned a value in the region. + A variable is "always assigned" in a region if an analysis of the + region that starts with the variable unassigned ends with the variable + assigned. + + + + + This class implements the region control flow analysis operations. Region control flow analysis provides + information about statements which enter and leave a region. The analysis done lazily. When created, it performs + no analysis, but simply caches the arguments. Then, the first time one of the analysis results is used it + computes that one result and caches it. Each result is computed using a custom algorithm. + + + + + A collection of statements outside the region that jump into the region. + + + + + A collection of statements inside the region that jump to locations outside the region. + + + + + Returns true if and only if the last statement in the region can complete normally or the region contains no + statements. + + + + + A collection of return, exit sub, exit function, exit operator and exit property statements found within the region that return to the enclosing method. + + + + Produce a duplicate of this flow analysis state. + + + + Perform control flow analysis, reporting all necessary diagnostics. Returns true if the end of + the body might be reachable.. + + + + + + + Intersect bit arrays taking into account 'all bits set' flag + + receiver will be changed as a result + + + + Union bit arrays taking into account 'all bits set' flag + + receiver will be changed as a result + + + + Produce a duplicate of this flow analysis state. + + + + + + Collection of 0, 1 or more slots. Allows returning of several slots by some + DataFlowPass methods to handle cases where implicit receiver represents + several variables, like in: + Dim a, b, c As New C(...) With {...} + + Because such constructions are very rare in real user code, the collection only + allocates an array builder for storing several values if there are indeed more + than one slot to be stored. Because the collection may optionally create an + array builder, collection's Free() method must be called when appropriate. + + Note that the collection is mutable, so one can add or modify the values. + If some collection elements get replaced with 'SlotKind.NotTracked' collection + does NOT "shrink", i.e. once allocated the array builder is not freed even if + all the elements are set to 'SlotKind.NotTracked'. + + Collection cannot store 'SlotKind.Unreachable' (0) which has a special meaning. + + + + + AmbiguousLocalsPseudoSymbol is a pseudo-symbol used in flow analysis representing + a symbol of the implicit receiver in case Dim statement defines more than one variable, + but uses the same object initializer for all of them, like: + Dim a,b As New C() With { .X = .Y } + + + + Represents variable symbol combined with the containing variable slot + + + + Special slot for untracked variables + + + + + Special slot for tracking whether code is reachable + + + + + Special slot for tracking the implicit local for the function return value + + + + + The first available slot for variables + + + + + + Some variables that should be considered initially assigned. Used for region analysis. + + + + + Defines whether or not fields of intrinsic type should be tracked. Such fields should + not be tracked for error reporting purposes, but should be tracked for region flow analysis + + + + + Variables that were used anywhere, in the sense required to suppress warnings about unused variables. + + + + + Variables that were initialized or written anywhere. + + + + + A mapping from local variables to the index of their slot in a flow analysis local state. + WARNING: if variable identifier maps into SlotKind.NotTracked, it may mean that VariableIdentifier + is a structure without traceable fields. This mapping is created in MakeSlotImpl(...) + + + + + A mapping from the local variable slot to the symbol for the local variable itself. This is used in the + implementation of region analysis (support for extract method) to compute the set of variables "always + assigned" in a region of code. + + + + + Variable slots are allocated to local variables sequentially and never reused. This is + the index of the next slot number to use. + + + + + Tracks variables for which we have already reported a definite assignment error. This + allows us to report at most one such error per variable. + + + + + Did we see [On Error] or [Resume] statement? Used to suppress some diagnostics. + + + + + Perform data flow analysis, reporting all necessary diagnostics. + + + + + Locals are given slots when their declarations are encountered. We only need give slots to local variables, and + the "Me" variable of a structure constructs. Other variables are not given slots, and are therefore not tracked + by the analysis. This returns SlotKind.NotTracked for a variable that is not tracked, for fields of structs + that have the same assigned status as the container, and for structs that (recursively) contain no data members. + We do not need to track references to variables that occur before the variable is declared, as those are reported + in an earlier phase as "use before declaration". That allows us to avoid giving slots to local variables before + processing their declarations. + + + + + Return the slot for a variable, or SlotKind.NotTracked if it is not tracked (because, for example, it is an empty struct). + + + + + Force a variable to have a slot. + + + + + + + Descends through Rest fields of a tuple if "symbol" is an extended field + As a result the "symbol" will be adjusted to be the field of the innermost tuple + and a corresponding containingSlot is returned. + Return value -1 indicates a failure which could happen for the following reasons + a) Rest field does not exist, which could happen in rare error scenarios involving broken ValueTuple types + b) Rest is not tracked already and forceSlotsToExist is false (otherwise we create slots on demand) + + + + Calculates the flag of being already reported; for structure types + the slot may be reported if ALL the children are reported + + + Marks slot as reported, propagates 'reported' flag to the children if necessary + + + Unassign a slot for a regular variable + + + Assign a slot for a regular variable in a given state. + + + Assign a slot for a regular variable. + + + Hash structure fields as we may query them many times + + + + Check that the given variable is definitely assigned. If not, produce an error. + + + + Version of CheckAssigned for bound field access + + + Check node for being assigned, return the value of unassigned slot in unassignedSlot + + + + Property controls Roslyn data flow analysis features which are disabled in command-line + compiler mode to maintain backward compatibility (mostly diagnostics not reported by Dev11), + but *enabled* in flow analysis API + + + + + Specifies if the analysis should process compiler generated locals. + + Note that data flow API should never report compiler generated variables + as well as those should not generate any diagnostics (like being unassigned, etc...). + + But when the analysis is used for iterators or async captures it should process + compiler generated locals as well... + + + + + Report a given variable as not definitely assigned. Once a variable has been so + reported, we suppress further reports of that variable. + + + + + Mark a variable as assigned (or unassigned). + + + + + A variable declared with As New can be considered assigned before the initializer is executed in case the variable + is a value type. The reason is that in this case the initialization happens in place (not in a temporary) and + the variable already got the object creation expression assigned. + + + + + A region analysis walker that computes the set of variables whose values flow into (are used in) + the region. + A variable assigned outside is used inside if an analysis + that leaves the variable unassigned on entry to the region would cause the + generation of "unassigned" errors within the region. + + + + + A region analysis walker that computes the set of variables for + which their assigned values flow out of the region. + A variable assigned inside is used outside if an analysis that + treats assignments in the region as un-assigning the variable would + cause "unassigned" errors outside the region. + + + + + A region analysis walker that computes the set of variables that are definitely assigned + when a region is entered. + + + + + A region analysis walker that records jumps into the region. Works by overriding NoteBranch, which is + invoked by a superclass when the two endpoints of a jump have been identified. + + + + + + A region analysis walker that records jumps out of the region. + + + + + Region being analyzed: start node + + + Region being analyzed: end node + + + Region itself + + + + The flow analysis pass. This pass reports required diagnostics for unreachable + statements and uninitialized variables (through the call to FlowAnalysisWalker.Analyze). + + the method to be analyzed + the method's body + the receiver of the reported diagnostics + + + + A region analysis walker that records reads and writes of all variables, both inside and outside the region. + + + + + Represents analysis context attributes such as compilation, region, etc... + + + + Current compilation + + + Method, field or property symbol + + + Bound node defining the root of the bound subtree to be analyzed + + + Region being analyzed: start node + + + Region being analyzed: end node + + + Region itself + + + True if the input was bad, such as no first and last nodes + + + + Construct context from model and region + + 'boundNode' defines a bound sub-tree to be analyzed and is being used in + both region-based and not region based analysis processes. + + The last three parameters define a region. In most cases firstInRegion and lastInRegion + are being used for identifying when we should enter or leave the region. + + Text span is also being passed to define the region which is used in few places. Those + places can be rewritten to use first/last bound nodes, but simple [region.Contains(...)] + check simplifies the code significantly. (Note, C# implementation uses the same logic, + but calculates the region's text span based on first/last node; in VB to perform such + calculation would have to traverse bound subtree under first/last nodes to detect + region boundaries; we avoid this additional cost by passing the original text span as + a separate parameter because we do have it anyways) + + + + + Construct context with Failed flag + + + + + A region analysis walker that computes whether or not the region completes normally. It does this by determining + if the point at which the region ends is reachable. + + + + + An analysis that computes the set of variables that may be used + before being assigned anywhere within a method. + + + + + + A region analysis walker that records declared variables. + + + + + This class implements the region data flow analysis operations. Region data flow analysis provides information + how data flows into and out of a region. The analysis is done lazily. When created, it performs no analysis, but + simply caches the arguments. Then, the first time one of the analysis results is used it computes that one + result and caches it. Each result is computed using a custom algorithm. + + + + + A collection of the local variables that are declared within the region. Note that the region must be + bounded by a method's body or a field's initializer, so parameter symbols are never included in the result. + + + + + A collection of the local variables for which a value assigned outside the region may be used inside the region. + + + + + A collection of the local variables for which a value assigned inside the region may be used outside the region. + + + + + A collection of the local variables for which a value is always assigned inside the region. + + + + + A collection of the local variables that are read inside the region. + + + + + A collection of local variables that are written inside the region. + + + + + A collection of the local variables that are read outside the region. + + + + + A collection of local variables that are written inside the region. + + + + + A collection of the local variables that have been referenced in anonymous functions + and therefore must be moved to a field of a frame class. + + + + + A BoundForLoopStatement node has a list of control variables (from the attached next statement). + When binding the control variable of a for/for each loop that is nested in another for/for each loop, it must be + checked that the control variable has not been used by a containing for/for each loop. Because bound nodes do not + know their parents and we try to avoid passing around a stack of variables, we just walk the bound tree after the + initial binding to report this error. + In addition, it must be checked that the control variables of the next statement match the loop. Because the inner + most loop contains the next with control variables from outer binders, checking this here is also convenient. + + There are two diagnostics reported by this walker: + 1. BC30069: For loop control variable '{0}' already in use by an enclosing For loop. + 2. BC30070: Next control variable does not match For loop control variable '{0}'. + + + + + Checks if the control variable was already used in an enclosing for loop + + + + + Checks if the control variables from the next statement match the control variable of the enclosing + for loop. + Some loops may contain a next with multiple variables. + + + + + Gets the referenced symbol of the bound expression. + Used for matching variables between For and Next statements. + + The bound expression. + + + + Turns the bound initializers into a list of bound assignment statements + + + + + Builds a constructor body. + + + Lowers initializers to fields assignments if not lowered yet and the first statement of the body isn't + a call to another constructor of the containing class. + + + Bound block including + - call to a base constructor + - field initializers and top-level code + - remaining constructor statements (empty for a submission) + + + + + Rewrites GlobalStatementInitializers to ExpressionStatements and gets the initializers for fields and properties. + + + Initializers for fields and properties cannot be rewritten to their final form at this place because they might need + to be rewritten to replace their placeholder expressions to the final locals or temporaries (e.g. in case of a field + declaration with "AsNew" and multiple variable names. The final rewriting will during local rewriting. + The statement list returned by this function can be copied into the initializer without reprocessing it. + + + + + Determines if this constructor calls another constructor of the constructor's containing class. + + + + + A walker that computes the set of local variables of an iterator + method that must be moved to fields of the generated class. + + + + + Binder used for attributes + + + + Root syntax node + + + Field or property declaration statement syntax node + + + + Some nodes have special binder's for their contents + + + + + Binding info for attribute syntax and expressions that are part of a attribute. + + + + + Creates an AttributeSemanticModel that allows asking semantic questions about an attribute node. + + + + + Creates a speculative AttributeSemanticModel that allows asking semantic questions about an attribute node that did not appear in the original source code. + + + + + Backstop that forms the end of the binder chain. Does nothing, and should never actually get hit. Provides + asserts that methods never get called. + + + + + Returns true if the node is in a position where an unbound type + such as (C(of)) is allowed. + + + + + Causes lookups to assume that the given set of classes are having their + bases being resolved, so lookups should not check for base classes. + + + + + A Binder object represents a general location from where binding is happening, and provides + virtual methods for looking up unqualified names, reporting errors, and also other + operations that need to know about where binding happened from (accessibility checking, + etc.) It also contains most of the methods related to general binding of constructs, + although some large sections are factored into their own classes. + + Yes, Binder is a big grab bag of features. The reason for this is that binders are threaded + through essentially ALL binding functions. So, basically Binder has all the features that + need to be threaded through binding. + + Binder objects form a linked list and each binder links to its containing binder. Each + binder only handles operations that it knows how to handles, and passes on other calls to + its containing binder. This maintains separation of concerns and allows binders to be strung + together in various configurations to enable different binding scenarios (e.g., debugger + expression evaluator). + + In general, binder objects should be constructed via the BinderBuilder class. + + Binder class has GetBinder methods that return binders for scopes nested into the current + binder scope. One should not expect to get a binder from the functions unless a syntax that + originates a scope is passed as the argument. Also, the functions do not cross lambda + boundaries, if binder's scope contains a lambda expression, binder will not return any + binders for nodes contained in the lambda body. In order to get them, the lambda must be + bound to BoundLambda node, which exposes LambdaBinder, which can be asked for binders in the + lambda body (but it will not descend into nested lambdas). Currently, only + , + and have special implementation of GetBinder functions, + the rest just delegate to containing binder. + + + + + If the binding context requires specific binding options, then modify the given + lookup options accordingly. + + + + + Lookup the given name in the binder and containing binders. + Returns the result of the lookup. See the definition of LookupResult for details. + + + This method is virtual, but usually there is no need to override it. It + calls the virtual LookupInSingleBinder, which should be overridden instead, + for each binder in turn, and merges the results. + Overriding this method is needed only in limited scenarios, for example for + a binder that binds query [Into] clause and has implicit qualifier. + + + + + Lookup in just a single binder, without delegating to containing binder. The original + binder passed in is used for accessibility checking and so forth. + + + + + Collect extension methods with the given name that are in scope in this binder. + The passed in ArrayBuilder must be empty. Extension methods from the same containing type + must be grouped together. + + + + + Lookup all names of extension methods that are available from a single binder, without delegating + to containing binder. The original binder passed in is used for accessibility checking + and so forth. + Names that are available are inserted into "nameSet". This is a hashSet that accumulates + names, and should be created with the VB identifierComparer. + + + + + Lookups labels by label names, returns a label or Nothing + + + + + Lookup all names that are available from a single binder, without delegating + to containing binder. The original binder passed in is used for accessibility checking + and so forth. + Names that are available are inserted into "nameSet". This is a hashSet that accumulates + names, and should be created with the VB identifierComparer. + + + + + Determine if "sym" is accessible from the location represented by this binder. For protected + access, use the qualifier type "accessThroughType" if not Nothing (if Nothing just check protected + access with no qualifier). + + + Overriding methods should consider . + + + + + Determine if "sym" is accessible from the location represented by this binder. For protected + access, use the qualifier type "accessThroughType" if not Nothing (if Nothing just check protected + access with no qualifier). + + + + + Some nodes have special binder's for their contents + + + + + Some nodes have special binder's for their contents + + + + + The member containing the binding context + + + + + Additional members associated with the binding context + Currently, this field is only used for multiple field/property symbols initialized by an AsNew initializer, e.g. "Dim x, y As New Integer" or "WithEvents x, y as New Object" + + + + + Tells whether binding is happening in a query context. + + + + + Tells whether binding is happening in a lambda context. + + + + + Returns true if the node is in a position where an unbound type + such as (C(of)) is allowed. + + + + + The type containing the binding context + + + + + Returns true if the binder is binding top-level script code. + + + + + The namespace or type containing the binding context + + + + + Get the built-in MSCORLIB type identified. If it's not available (an error type), then report the + error with the given syntax and diagnostic bag. If the node and diagBag are Nothing, then don't report the error (not recommended). + + Type to get + Where to report the error, if any. + + + + This is a layer on top of the Compilation version that generates a diagnostic if the well-known + type isn't found. + + + + + WARN: Retrieves the symbol but does not check its viability (accessibility, etc). + + + + + This is a layer on top of the assembly version that generates a diagnostic if the well-known + member isn't found. + + + + + This is a layer on top of the Compilation version that generates a diagnostic if the well-known + member isn't found. + + + + + Get the source module. + + + + + Get the compilation. + + + + + Get an error symbol. + + + + + Get the Location associated with a given TextSpan. + + + + + Get a SyntaxReference associated with a given syntax node. + + + + + Returns the syntax tree. + + + + + Called in member lookup right before going into the base class of a type. Results a set of named types whose + bases classes are currently in the process of being resolved, so we shouldn't look into their bases + again to prevent/detect circular references. + + Nothing if no bases being resolved, otherwise the set of bases being resolved. + + + + Called during member lookup before going into the base class of a type. If returns + true, the base class is ignored. Primarily used for binding Imports. + + + + + Current Option Strict mode. + + + + + True if Option Infer On is in effect. False if Option Infer Off is in effect. + + + + + True if Option Explicit On is in effect. False if Option Explicit Off is in effect. + Note that even if Option Explicit Off is in effect, there are places (field initializers) + where implicit variable declaration is not permitted. See the ImplicitVariablesDeclarationAllowedHere + property also. + + + + + True if Option Compare Text is in effect. False if Option Compare Binary is in effect. + + + + + True if integer overflow checking is On. + + + + + True if implicit variable declaration is available within this binder, and the binder + has already finished binding all possible implicit declarations inside (and is not accepting) + any more. + + + + + True if implicit variable declaration is allow by the language here. Differs from OptionExplicit + in that it is only try if this binder is associated with a region that allows implicit variable + declaration (field initializers and attributes don't, for example). + + + + + Declare an implicit local variable. The type of the local is determined + by the type character (if any) on the variable. + + + + + Get all implicitly declared variables that were declared in this method body. + + + + + Disallow additional local variable declaration and report delayed shadowing diagnostics. + + + + + + Get the label that a Exit XXX statement should branch to, or Nothing if we are + not inside a context that would be exited by that kind of statement. The passed in kind + is the SyntaxKind for the exit statement that would target the label (e.g. SyntaxKind.ExitDoStatement). + + + + + Get the label that a Continue XXX statement should branch to, or Nothing if we are + not inside a context that would be exited by that kind of statement. The passed in kind + is the SyntaxKind for the exit statement that would target the label (e.g. SyntaxKind.ContinueDoStatement). + + + + + Get the label that a Return statement should branch to, or Nothing if we are + not inside a context that would be exited by that kind of statement. This method + is equivalent to calling with the appropriate exit + . + + + + + Get the special local symbol with the same name as the enclosing function. + + + + + Create a diagnostic at a particular syntax node and place it in a diagnostic bag. + + + + + Issue an error or warning for a symbol if it is Obsolete. If there is not enough + information to report diagnostics, then store the symbols so that diagnostics + can be reported at a later stage. + Also, check runtime/language support for the symbol. + + + + + Returns the type of construct being bound (BaseTypes, MethodSignature, + etc.) to allow the Binder to provide different behavior in certain cases. + Currently, this property is only used by ShouldCheckConstraints. + + + + + Returns true if the binder is performing early decoding of a + (well-known) attribute. + + + + + Return True if type constraints should be checked when binding. + + + + + Returns True if the binder, or any containing binder, has xmlns Imports. + + + + + Add { prefix, namespace } pairs from the explicitly declared namespaces in the + XmlElement hierarchy. The order of the pairs is the order the xmlns attributes + are declared on each element, and from innermost to outermost element. + + + + + This method reports use site errors if a required attribute constructor is missing. + Some attributes are considered to be optional (e.g. the CompilerGeneratedAttribute). In this case the use site + errors will be ignored. + + + + + This method reports use site errors if a required attribute constructor is missing. + Some attributes are considered to be optional (e.g. the CompilerGeneratedAttribute). In this case the use site + errors will be ignored. + + + + + Returns a placeholder substitute for a With statement placeholder specified or Nothing if not found + + Note: 'placeholder' is needed to make sure the binder can check that the placeholder is + associated with the statement. + + + + + Indicates that this binder is being used to answer SemanticModel questions (i.e. not + for batch compilation). + + + Imports touched by a binder with this flag set are not consider "used". + + + + + Binder to be used for binding New With { ... } expressions. + + + + + If set, the state of the binder shouldn't be modified by subsequent binding operations, + which could be performed by SemanticModel in context of this binder. + + + + + Having this binder, which is created for each field initializer within AnonymousObjectCreationExpressionSyntax + gives us the following advantages: + - We no longer rely on transient state of AnonymousTypeField objects to detect out of order field references + within initializers. This way we can be sure that result of binding performed by SemanticModel is consistent + with result of initial binding of the entire node. + - AnonymousTypeCreationBinder overrides CreateAnonymousObjectCreationExpression in such a way that it mutates + its state. That overridden method shouldn't be called while we are binding each initializer (by queries, for example), + it should be called only by AnonymousTypeCreationBinder itself after all initializers are bound and we are producing + the resulting node. So having an extra binder in between takes care of that. + + + + + Gets but does not fully validate a symbol's attributes. Returns binding errors but not attribute usage and attribute specific errors. + + + + + Walk a custom attribute argument bound node and return a TypedConstant. Verify that the expression is a constant expression. + + + + + + This function must return a BoundConversion node in case of non-identity conversion. + + + + + This function must return a BoundConversion node in case of explicit or non-identity conversion. + + + + + This function must return a BoundConversion node in case of non-identity conversion. + + + + + Returns True if error or warning was reported. + + This function is invoked on the occasion of a Narrowing or NoConversion. + It looks at the conversion. If the conversion could have been helped by variance in + some way, it reports an error/warning message to that effect and returns true. This + message is a substitute for whatever other conversion-failed message might have been displayed. + + Note: these variance-related messages will NOT show auto-correct suggestion of using CType. That's + because, in these cases, it's more likely than not that CType will fail, so it would be a bad suggestion + + + + + Handle expression reclassification, if any applicable. + + If function returns True, the "argument" parameter has been replaced + with result of reclassification (possibly an error node) and appropriate + diagnostic, if any, has been reported. + + If function returns false, the "argument" parameter must be unchanged and no + diagnostic should be reported. + + conversionSemantics can be one of these: + SyntaxKind.CTypeKeyword, SyntaxKind.DirectCastKeyword, SyntaxKind.TryCastKeyword + + + + + Structure is used to store all information which is needed to construct and classify a Delegate creation + expression later on. + + + + + Binds the AddressOf expression. + + The AddressOf expression node. + The diagnostics. + + + + Binds the delegate creation expression. + This comes in form of e.g. + Dim del as new DelegateType(AddressOf methodName) + + Type of the delegate. + The argument list. + Syntax node to attach diagnostics to in case the argument list is nothing. + The diagnostics. + + + + Resolves the target method for the delegate and classifies the conversion + + The bound AddressOf expression itself. + The delegate type to assign the result of the AddressOf operator to. + + + + + Resolves the method for delegate invoke with all or relaxed arguments / return types. It also determines + the method conversion kind. + + The AddressOf expression. + The delegate invoke method. + Ignore method's return type for the purpose of calculating 'methodConversions'. + The diagnostics. + The resolved method if any. + + + + Resolves the method for delegate invoke with all or relaxed arguments / return types. It also determines + the method conversion kind. + + The AddressOf expression. + The delegate invoke method. + Ignore method's return type for the purpose of calculating 'methodConversions'. + The diagnostics. + if set to true use zero argument relaxation. + The resolved method if any. + + + + Determines the method conversion for delegates based on the arguments. + + The resolution result. + The delegate invoke method. + + + + Classifies the address of conversion. + + The bound AddressOf expression. + The target type to convert this AddressOf expression to. + + + + Checks if a parameter is a ParamArray and reports this as an error. + + The containing type. + The current parameter token. + The flags of this parameter. + The diagnostics. + + + + Reclassifies the bound address of operator into a delegate creation expression (if there is no delegate + relaxation required) or into a bound lambda expression (which gets a delegate creation expression later on) + + The AddressOf expression. + The delegate resolution result. + Type of the target. + The diagnostics. + + + + Build a lambda that has a shape of the [delegateInvoke] and calls + the only method from the [methodGroup] passing all parameters of the lambda + as arguments for the call. + Note, that usually the receiver of the [methodGroup] should be captured before entering the + relaxation lambda in order to prevent its reevaluation every time the lambda is invoked and + prevent its mutation. + + !!! Therefore, it is not common to call this overload directly. !!! + + + Location to use for various synthetic nodes and symbols. + The Invoke method to "implement". + The method group with the only method in it. + Delegate relaxation to store within the new BoundLambda node. + + + + + Report a diagnostic, and also produce an error expression with error type. + + + + + Report a diagnostic, and also produce an error expression with error type. + + + + + Report a diagnostic, and also produce an error expression with error type. + + + + + Report a diagnostic, and also produce an error expression with error type. + + + + + Report a diagnostic, and also produce an error expression with error type. + + + + + The dispatcher method that handles syntax nodes for all stand-alone expressions. + + + + + Create a BoundBadExpression node for the given syntax node. No symbols or bound nodes are associated with it. + + + + + Create a BoundBadExpression node for the given child-expression, which is preserved as a sub-expression. + No ResultKind is associated + + + + + Create a BoundBadExpression node for the given child-expression, which is preserved as a sub-expression. + A ResultKind explains why the node is bad. + + + + + Create a BoundBadExpression node for the given child expression, which is preserved as a sub-expression. Symbols + associated with the child node are not given a result kind. + + + + + Removes duplicate entries in and frees it if only nulls remain. + + + + + Returns the type to be used as a field type. + + + + + This function is only needed for SemanticModel to perform binding for erroneous cases. + + + + + BindValue evaluates the node and returns a BoundExpression. BindValue snaps expressions to values. For now that means that method groups + become invocations. + + + + + Adjusts receiver of a call or a member access. + * will turn Unknown property access into Get property access + * will turn TypeOrValueExpression into a value expression + + + + + Adjusts receiver of a call or a member access if the receiver is an + ambiguous BoundTypeOrValueExpression. This can only happen if the + receiver is the LHS of a member access expression in which the + RHS cannot be resolved (i.e. the RHS is an error or a late-bound + invocation/access). + + + + + Adjusts receiver of a call or a member access if it is a value + * will turn Unknown property access into Get property access + + + + + BindRValue evaluates the node and returns a BoundExpression. + It ensures that the expression is a value that can be used on the right hand side of an assignment. + If not, it reports an error. + + Note that this function will reclassify all expressions to have their "default" type, i.e. + Anonymous Delegate for a lambda, default array type for an array literal, will report an error + for an AddressOf, etc. So, if you are in a context where there is a known target type for the + expression, do not use this function. Instead, use BindValue followed by + ApplyImplicitConversion/ApplyConversion. + + + + + Determine whether field access should be treated as LValue. + + + + + Return MethodKind corresponding to the method the code being interpreted is going to end up in. + + + + Process the result of dominant type inference, generate diagnostics + + + + True if inside in binding arguments of constructor + call with {'Me'/'MyClass'/'MyBase'}.New(...) from another constructor + + + + + Can we access MyBase in this location. If False is returned, + also returns the error id associated with that. + + + + + Can we access Me in this location. If False is returned, + also returns the error id associated with that. + + + + + Can we access MyClass in this location. If False is returned, + also returns the error id associated with that. + + + + + Second part of BindSimpleName. + It is a separate function so that it could be called directly + when we have already looked up for the name. + + + + + Method binds member access in case when we got hold + of a bound node representing the left expression + + + The method is protected, so that it can be called from other + binders overriding TryBindMemberAccessWithLeftOmitted + + + + + Returns a bound node for left part of member access node with omitted left syntax. + In particular it handles member access inside With statement. + + By default the method delegates the work to it's containing binder or returns Nothing. + + + Specifies the binder which requests an access to the bound node for omitted left. + + + NOTE: in some cases, like for binding inside anonymous object creation expression, this + method returns bound node for the whole expression rather than only for omitted left part. + + + + + Given a localSymbol and a syntaxNode where the symbol is used, safely return the symbol's type. + + The local symbol + The syntax node that references the symbol + diagnostic bag if errors are to be reported + Returns the symbol's type or an ErrorTypeSymbol if the local is referenced before its definition or if the symbol is still being bound. + This method safely returns a local symbol's type by checking for circular references or references before declaration. + + + + Report diagnostics relating to access shared/nonshared symbols. Returns true if an ERROR (but not a warning) + was reported. Also replaces receiver as a type with DefaultPropertyInstance when appropriate. + + + + + Returns a bound node for left part of dictionary access node with omitted left syntax. + In particular it handles dictionary access inside With statement. + + By default the method delegates the work to it's containing binder or returns Nothing. + + + + + Handle ArrayCreationExpressionSyntax + new integer(n)(,) {...} + new integer() {...} + + + + + Binds CollectionInitializeSyntax. i.e. { expr, ... } from an ArrayCreationExpressionSyntax + + The collection initializer syntax + The type of array. + This is in/out. It comes in with sizes from explicit bounds but will be updated based on the number of initializers for dimensions without bounds + Where to put errors + + + + Binds CollectionInitializeSyntax. i.e. { expr, ... } from an ArrayCreationExpressionSyntax + + The collection initializer syntax + This is in/out. It comes in with sizes from explicit bounds but will be updated based on the number of initializers for dimensions without bounds + When the inferred type is Object() indicates that the dominant type algorithm computed this type. + The number of candidates found during inference + The inferred element type + Where to put errors + + + + Bind the array bounds and return the sizes for each dimension. + + The bounds + Where to put the errors + The bounds if they are constants, if argument is not specified this info is not returned + + + + The Imports binder handles binding of Imports statements in files, and also the project-level imports. + + + + + Checks use site error and returns True in case it should be reported for the alias. + In current implementation checks for errors #36924 and #36925 + + + + + Used to store the bound field and property initializers and the associated list of + bound assignment statements because they are reused for multiple constructors + + + + + Indicate the fact that binding of initializers produced a tree with errors. + This property does not indicate whether or not a diagnostic was produced during the + binding of the initializers. + + + + + Binds all field initializers of a . + + The named type symbol where the field initializers are declared. + Script initializer or Nothing if not binding top-level statements. + The initializers itself. For each partial type declaration there is an array of + field initializers + The diagnostics. + + + + Bind an initializer for an implicitly allocated array field (for example: Private F(2) As Object). + + + + + Binds the field initializer. A bound field initializer contains the bound field access and bound init value. + + The field symbol. + The syntax node for the optional initialization. + The array of bound initializers to add the newly bound ones to. + The diagnostics. + + + + Checks for errors in the constant initialization of a field, and only returns a BoundFieldOrPropertyInitializer for + decimals and dates because they aren't compile time constant in CLR. Other data type end up directly in metadata and + do not cause a BoundFieldOrPropertyInitializer node. + + The field symbol. + The syntax node for the optional initialization. + The array of bound initializers to add the newly bound ones to. + + + + Binds constant initialization value of the field. + + The symbol. + The initialization syntax. + The diagnostics. + + + + Binds a constant local's value. + + The local symbol. + The local symbol's type. It is passed in because this method is called while the type is being resolved and before it is set. + + + + Binds a parameter's default value syntax + + + + + Returns if all the rules for a "Me.New" or "MyBase.New" constructor call are satisfied: + a) In instance constructor body + b) First statement of that constructor + c) "Me", "MyClass", or "MyBase" is the receiver. + + + + + Bind a Me.New(...), MyBase.New (...), MyClass.New(...) constructor call. + (NOT a normal constructor call like New Type(...)). + + + + + Bind an invocation expression representing an array access, + delegate invocation, or default member. + + + + + Returns a BoundPropertyGroup if the expression represents a valid + default property access. If there is a default property but the property + access is invalid, a BoundBadExpression is returned. If there is no + default property for the expression type, Nothing is returned. + + Note, that default Query Indexer may be a method, not a property. + + + + + Tests whether or not the method or property group should be bound without arguments. + In case of method group it may also update the group by filtering out all subs + + + + + Optimizes some runtime library calls through replacing them with a literal if possible. + VB Spec 11.2 defines the following runtime functions as being constant: + - Microsoft.VisualBasic.Strings.ChrW + - Microsoft.VisualBasic.Strings.Chr, if the constant value is between 0 and 128 + - Microsoft.VisualBasic.Strings.AscW, if the constant string is not empty + - Microsoft.VisualBasic.Strings.Asc, if the constant string is not empty + + The method. + The arguments of the method call. + The syntax node for report errors. + The diagnostics. + Set to true if there are conversion errors (e.g. Asc("")). Otherwise it's not written to. + The constant value that replaces this node, or nothing. + + + +Figure out the set of best candidates in the following preference order: + 1) Applicable + 2) ArgumentMismatch, GenericConstraintsViolated + 3) TypeInferenceFailed + 4) ArgumentCountMismatch + 5) BadGenericArity + 6) Ambiguous + 7) HasUseSiteError + 8) HasUnsupportedMetadata + + Also return the set of unique symbols behind the set. + + Returns type symbol for the common type, if any. + Otherwise returns ErrorTypeSymbol.UnknownResultType. + + + + + Should be kept in sync with OverloadResolution.MatchArguments. Anything that + OverloadResolution.MatchArguments flags as an error should be detected by + this function as well. + + + + + Should be in sync with OverloadResolution.MatchArgumentToByRefParameter + + + + + Should be in sync with OverloadResolution.MatchArgumentToByValParameter. + + + + + Should be kept in sync with OverloadResolution.MatchArguments, which populates + data this function operates on. + + + + + Return true if the node is an immediate child of a call statement. + + + + + If we are inside a lambda in a constructor and are passing ByRef a non-LValue field, which + would be an LValue field, if it were referred to in the constructor outside of a lambda, + we need to report an error because the operation will result in a simulated pass by + ref (through a temp, without a copy back), which might be not the intent. + + + + + Collects expressions that are effective return values of the lambda body. + In iterators those would be arguments of Yield statements. + + + + + Used by Add*LookupSymbolsInfo* to determine whether the symbol is of interest. + Distinguish from , which performs an analogous task for LookupSymbols*. + + + Does not consider - that is left to the caller. + + + + + This class handles binding of members of namespaces and types. + The key member is Lookup, which handles looking up a name + in a namespace or type, by name and arity, and produces a + lookup result. + + + + + Lookup a member name in a namespace or type, returning a LookupResult that + summarizes the results of the lookup. See LookupResult structure for a detailed + discussing of the meaning of the results. The supplied binder is used for accessibility + checked and base class suppression. + + + + + Lookup a member name in a namespace, returning a LookupResult that + summarizes the results of the lookup. See LookupResult structure for a detailed + discussing of the meaning of the results. The supplied binder is used for accessibility + checked and base class suppression. + + + + + Lookup an immediate (without descending into modules) member name in a namespace, + returning a LookupResult that summarizes the results of the lookup. + See LookupResult structure for a detailed discussion of the meaning of the results. + The supplied binder is used for accessibility checks and base class suppression. + + + + + Lookup a member name in modules of a namespace, + returning a LookupResult that summarizes the results of the lookup. + See LookupResult structure for a detailed discussion of the meaning of the results. + The supplied binder is used for accessibility checks and base class suppression. + + + + + Lookup a member name in a type, returning a LookupResult that + summarizes the results of the lookup. See LookupResult structure for a detailed + discussing of the meaning of the results. The supplied binder is used for accessibility + checked and base class suppression. + + + + + Lookup a member name in a module, class, struct, enum, or delegate, returning a LookupResult that + summarizes the results of the lookup. See LookupResult structure for a detailed + discussing of the meaning of the results. The supplied binder is used for accessibility + checks and base class suppression. + + + + + This function generalizes the idea of producing a set of non-conflicting + WinRT members of a given type based on the results of some arbitrary lookup + closure (which produces a LookupResult signifying success as IsGood). + + A non-conflicting WinRT member lookup looks for all members of projected + WinRT interfaces which are implemented by a given type, discarding any + which have equal signatures. + + If is true then + this function lookups up members with the given , + , and . Otherwise, it looks for default properties. + + + + + Lookup a member name in a submission chain. + + + We start with the current submission class and walk the submission chain back to the first submission. + The search has two phases + 1) We are looking for any symbol matching the given name, arity, and options. If we don't find any the search is over. + If we find an overloadable symbol(s) (a method or a property) we start looking for overloads of this kind + (lookingForOverloadsOfKind) of symbol in phase 2. + 2) If a visited submission contains a matching member of a kind different from lookingForOverloadsOfKind we stop + looking further. Otherwise, if we find viable overload(s) we add them into the result. Overloads modifier is ignored. + + + + + Include the InternalXmlHelper.Value extension property in the LookupResult + if the container implements IEnumerable(Of XElement), the name is "Value", + and the arity is 0. + + + + + Checks if two interfaces have a base-derived relationship + + + + + Merges two lookup results while eliminating symbols that are shadowed. + Note that the final result may contain unrelated and possibly conflicting symbols as + this helper is not intended to catch ambiguities. + + + If is not Nothing and False filters out all Event symbols, and if is not Nothing + and True filters out all non-Event symbols, nos not have any effect otherwise. + Is used for special handling of Events inside COM interfaces. + + + + + first.Where(t IsNot Nothing).Concat(second.Where(t IsNot Nothing)) + + + + + + + + + + if any symbol in the list Shadows. This implies that name is not visible through the base. + + + + + Lookup a member name in a type without considering inheritance, returning a LookupResult that + summarizes the results of the lookup. See LookupResult structure for a detailed + discussing of the meaning of the results. + + + + + Binds the object collection or member initializer from a object creation. + E.g. "new CollType() From {...}" or "new AType() With {...}" + + The type of the created object expression. + The object creation expression syntax. + The diagnostics. + + + + Bind the ObjectInitializer. + During the binding we basically bind the member access for each initializer, as well as the value that will be assigned. + The main information stored in the bound node is a list of assignment operators (that may contain placeholders), as + well as the information whether expression creates a temporary or not. + + + + + Binds a object collection initializer. + During the binding of this node we are binding calls to Add methods of the created object. Once the "collection" + type passed the requirements (same as for each collection requirements + must have accessible Add method), all + diagnostics are handled by the overload resolution. + The bound node contains a list of call expressions (that may contain placeholders). + + + + + Binds a call expression for a given top level object collection initializer. + + + + + Validate and apply appropriate conversion for the target argument of Is/IsNot expression. + + + + + This helper is used to wrap nullable argument into something that would return null string if argument is null. + + Unlike conversion to a string where nullable nulls result in an exception, + concatenation requires that nullable nulls are treated as null strings. + Note that conversion is treated as explicit conversion. + + + + + This function builds a bound tree representing an overloaded short circuiting expression + after determining that the necessary semantic conditions are met. + + An expression of the form: + + x AndAlso y (where the type of x is X and the type of y is Y) + + is an overloaded short circuit operation if X and Y are user-defined types and an + applicable operator And exists after applying normal operator resolution rules. + + Given an applicable And operator declared in type T, the following must be true: + + - The return type and parameter types must be T. + - T must contain a declaration of operator IsFalse. + + If these conditions are met, the expression "x AndAlso y" is translated into: + + !T.IsFalse(temp = x) ? T.And(temp, y) : temp + + The temporary is necessary for evaluating x only once. Similarly, "x OrElse y" is + translated into: + + !T.IsTrue(temp = x) ? T.Or(temp, y) : temp + + + + + Returns Symbol for String type. + + + + + Get symbol for a special type, reuse symbols for operand types to avoid type + lookups and construction of new instances of symbols. + + + + + Get symbol for a Nullable type of particular type, reuse symbols for operand types to avoid type + lookups and construction of new instances of symbols. + + + + + §11.12.2 Object Operands + The value Nothing is treated as the default value of the type of + the other operand in a binary operator expression. In a unary operator expression, + or if both operands are Nothing in a binary operator expression, + the type of the operation is Integer or the only result type of the operator, + if the operator does not result in Integer. + + + + + Bind a Query Expression. + This is the entry point. + + + + + Given a result of binding of initial set of collection range variables, the source, + bind the rest of the operators in the enumerator. + + There is a special method to bind an operator of each kind, the common thing among them is that + all of them take the result we have so far, the source, and return result of an application + of one or two following operators. + Some of the methods also take operators enumerator in order to be able to do a necessary look-ahead + and in some cases even to advance the enumerator themselves. + Join and From operators absorb following Select or Let, that is when the process of binding of + a single operator actually handles two and advances the enumerator. + + + + + Bind query expression that starts with From keyword, as opposed to the one that starts with Aggregate. + + From {collection range variables} [{other operators}] + + + + + Bind query expression that starts with Aggregate keyword, as opposed to the one that starts with From. + + Aggregate {collection range variables} [{other operators}] Into {aggregation range variables} + + If Into clause has one item, a single value is produced. If it has multiple items, values are + combined into an instance of an Anonymous Type. + + + + + Given result of binding preceding query operators, the source, bind the following Aggregate operator. + + {Preceding query operators} Aggregate {collection range variables} [{other operators}] Into {aggregation range variables} + + Depending on how many items we have in the INTO clause, + we will interpret Aggregate operator as follows: + + FROM a in AA FROM a in AA + AGGREGATE b in a.BB => LET count = (FROM b IN a.BB).Count() + INTO Count() + + FROM a in AA FROM a in AA + AGGREGATE b in a.BB => LET Group = (FROM b IN a.BB) + INTO Count(), Select a, Count=Group.Count(), Sum=Group.Sum(b=>b) + Sum(b) + + + + + + Apply implicit Select operator at the end of the query to + ensure that at least one query operator is called. + + Basically makes query like: + From a In AA + into: + From a In AA Select a + + + + + Given result of binding preceding query operators, the source, bind the following Select operator. + + {Preceding query operators} Select {expression range variables} + + From a In AA Select b ==> AA.Select(Function(a) b) + + From a In AA Select b, c ==> AA.Select(Function(a) New With {b, c}) + + + + + Given result of binding preceding query operators, the source, bind the following Let operator. + + {Preceding query operators} Let {expression range variables} + + Ex: From a In AA Let b ==> AA.Select(Function(a) New With {a, b}) + + Ex: From a In AA Let b, c ==> AA.Select(Function(a) New With {a, b}).Select(Function({a, b}) New With {a, b, c}) + + Note, that preceding Select operator can introduce unnamed range variable, which is dropped by the Let + + Ex: From a In AA Select a + 1 Let b ==> AA.Select(Function(a) a + 1).Select(Function(unnamed) b) + + Also, depending on the amount of expression range variables declared by the Let, and the following query operators, + translation can produce a nested, as opposed to flat, compound variable. + + Ex: From a In AA Let b, c, d ==> AA.Select(Function(a) New With {a, b}). + Select(Function({a, b}) New With {{a, b}, c}). + Select(Function({{a, b}, c}) New With {a, b, c, d}) + + + + + In some scenarios, it is safe to leave compound variable in nested form when there is an + operator down the road that does its own projection (Select, Group By, ...). + All following operators have to take an Anonymous Type in both cases and, since there is no way to + restrict the shape of the Anonymous Type in method's declaration, the operators should be + insensitive to the shape of the Anonymous Type. + + + + + In some scenarios, it is safe to leave compound variable in nested form when there is an + operator down the road that does its own projection (Select, Group By, ...). + All following operators have to take an Anonymous Type in both cases and, since there is no way to + restrict the shape of the Anonymous Type in method's declaration, the operators should be + insensitive to the shape of the Anonymous Type. + + + + + Given result of binding preceding query operators, if any, bind the following From operator. + + [{Preceding query operators}] From {collection range variables} + + Ex: From a In AA ==> AA + + Ex: From a In AA, b in BB ==> AA.SelectMany(Function(a) BB, Function(a, b) New With {a, b}) + + Ex: {source with range variable 'd'} From a In AA, b in BB ==> source.SelectMany(Function(d) AA, Function(d, a) New With {d, a}). + SelectMany(Function({d, a}) BB, + Function({d, a}, b) New With {d, a, b}) + + Note, that preceding Select operator can introduce unnamed range variable, which is dropped by the From + + Ex: From a In AA Select a + 1 From b in BB ==> AA.Select(Function(a) a + 1). + SelectMany(Function(unnamed) BB, + Function(unnamed, b) b) + + Also, depending on the amount of collection range variables declared by the From, and the following query operators, + translation can produce a nested, as opposed to flat, compound variable. + + Ex: From a In AA From b In BB, c In CC, d In DD ==> AA.SelectMany(Function(a) BB, Function(a, b) New With {a, b}). + SelectMany(Function({a, b}) CC, Function({a, b}, c) New With {{a, b}, c}). + SelectMany(Function({{a, b}, c}) DD, + Function({{a, b}, c}, d) New With {a, b, c, d}) + + If From operator translation results in a SelectMany call and the From is immediately followed by a Select or a Let operator, + they are absorbed by the From translation. When this happens, operatorsEnumerator is advanced appropriately. + + Ex: From a In AA From b In BB Select a + b ==> AA.SelectMany(Function(a) BB, Function(a, b) a + b) + + Ex: From a In AA From b In BB Let c ==> AA.SelectMany(Function(a) BB, Function(a, b) new With {a, b, c}) + + + + + + See comments for BindFromClause method, this method actually does all the work. + + + + + Given result of binding preceding query operators, the outer, bind the following Join operator. + + [{Preceding query operators}] Join {collection range variable} + [{additional joins}] + On {condition} + + Ex: From a In AA Join b in BB On Key(a) Equals Key(b) ==> AA.Join(BB, Function(a) Key(a), Function(b) Key(b), + Function(a, b) New With {a, b}) + + Ex: From a In AA AA.Join( + Join b in BB BB.Join(CC, Function(b) Key(b), Function(c) Key(c), + Join c in CC ==> Function(b, c) New With {b, c}), + On Key(c) Equals Key(b) Function(a) Key(a), Function({b, c}) Key(b), + On Key(a) Equals Key(b) Function(a, {b, c}) New With {a, b, c}) + + + Also, depending on the amount of collection range variables in scope, and the following query operators, + translation can produce a nested, as opposed to flat, compound variable. + + Ex: From a In AA AA.Join(BB, Function(a) Key(a), Function(b) Key(b), + Join b in BB Function(a, b) New With {a, b}). + On Key(a) Equals Key(b) Join(CC, Function({a, b}) Key(a, b), Function(c) Key(c), + Join c in CC ==> Function({a, b}, c) New With {{a, b}, c}). + On Key(c) Equals Key(a, b) Join(DD, Function({{a, b}, c}) Key(a, b, c), Function(d) Key(d), + Join d in DD Function({{a, b}, c}, d) New With {a, b, c, d}) + On Key(a, b, c) Equals Key(d) + + If Join is immediately followed by a Select or a Let operator, they are absorbed by the translation. + When this happens, operatorsEnumerator is advanced appropriately. + + Ex: From a In AA Join b in BB On Key(a) Equals Key(b) ==> AA.Join(BB, Function(a) Key(a), Function(b) Key(b), + Select a + b Function(a, b) a + b) + + Ex: From a In AA Join b in BB On Key(a) Equals Key(b) ==> AA.Join(BB, Function(a) Key(a), Function(b) Key(b), + Let c Function(a, b) New With {a, b, c}) + + + + + + Given result of binding preceding query operators, the outer, bind the following Group Join operator. + + [{Preceding query operators}] Group Join {collection range variable} + [{additional joins}] + On {condition} + Into {aggregation range variables} + + Ex: From a In AA Group Join b in BB AA.GroupJoin(BB, Function(a) Key(a), Function(b) Key(b), + On Key(a) Equals Key(b) ==> Function(a, group_b) New With {a, group_b.Count()}) + Into Count() + + Also, depending on the amount of collection range variables in scope, and the following query operators, + translation can produce a nested, as opposed to flat, compound variable (see BindInnerJoinClause for an example). + + Note, that type of the group must be inferred from the set of available GroupJoin operators in order to be able to + interpret the aggregation range variables. + + + + + Given result of binding preceding query operators, the source, bind the following Group By operator. + + [{Preceding query operators}] Group [{items expression range variables}] + By {keys expression range variables} + Into {aggregation range variables} + + Ex: From a In AA Group By Key(a) AA.GroupBy(Function(a) Key(a), + Into Count() ==> Function(key, group_a) New With {key, group_a.Count()}) + + Ex: From a In AA Group Item(a) AA.GroupBy(Function(a) Key(a), + By Key(a) ==> Function(a) Item(a), + Into Count() Function(key, group_a) New With {key, group_a.Count()}) + + Note, that type of the group must be inferred from the set of available GroupBy operators in order to be able to + interpret the aggregation range variables. + + + + + Returns Nothing if items were omitted. + + + + + Infer type of the group for a Group By operator from the set of available GroupBy methods. + + In short, given already bound itemsLambda and keysLambda, this method performs overload + resolution over the set of available GroupBy operator methods using fake Into lambda: + Function(key, group As typeToBeInferred) New With {group} + + If resolution succeeds, the type inferred for the best candidate is our result. + + + + + Infer type of the group for a Group Join operator from the set of available GroupJoin methods. + + In short, given already bound inner source and the join key lambdas, this method performs overload + resolution over the set of available GroupJoin operator methods using fake Into lambda: + Function(outerVar, group As typeToBeInferred) New With {group} + + If resolution succeeds, the type inferred for the best candidate is our result. + + + + + This is a helper method to create a BoundQueryLambda for an Into clause + of a Group By or a Group Join operator. + + + + + Given result of binding preceding query operators, the source, bind the following Where operator. + + {Preceding query operators} Where {expression} + + Ex: From a In AA Where a > 0 ==> AA.Where(Function(a) a > b) + + + + + + Given result of binding preceding query operators, the source, bind the following Skip While operator. + + {Preceding query operators} Skip While {expression} + + Ex: From a In AA Skip While a > 0 ==> AA.SkipWhile(Function(a) a > b) + + + + + + Given result of binding preceding query operators, the source, bind the following Take While operator. + + {Preceding query operators} Take While {expression} + + Ex: From a In AA Skip While a > 0 ==> AA.TakeWhile(Function(a) a > b) + + + + + + This helper method does all the work to bind Where, Take While and Skip While query operators. + + + + + Given result of binding preceding query operators, the source, bind the following Distinct operator. + + {Preceding query operators} Distinct + + Ex: From a In AA Distinct ==> AA.Distinct() + + + + + + Given result of binding preceding query operators, the source, bind the following Skip operator. + + {Preceding query operators} Skip {expression} + + Ex: From a In AA Skip 10 ==> AA.Skip(10) + + + + + + Given result of binding preceding query operators, the source, bind the following Take operator. + + {Preceding query operators} Take {expression} + + Ex: From a In AA Take 10 ==> AA.Take(10) + + + + + + This helper method does all the work to bind Take and Skip query operators. + + + + + Given result of binding preceding query operators, the source, bind the following Order By operator. + + {Preceding query operators} Order By {orderings} + + Ex: From a In AA Order By a ==> AA.OrderBy(Function(a) a) + + Ex: From a In AA Order By a.Key1, a.Key2 Descending ==> AA.OrderBy(Function(a) a.Key1).ThenByDescending(Function(a) a.Key2) + + + + + + This is a top level binder used to bind bodies of query lambdas. + It also contains a bunch of helper methods to bind bodies of a particular kind. + + + + + Bind body of a lambda representing Select operator selector in context of this binder. + + + + + Bind Select like selector based on the set of expression range variables in context of this binder. + + + + + Bind ExpressionRangeVariableSyntax in context of this binder. + + + + + Bind Let operator selector for a particular ExpressionRangeVariableSyntax. + Takes care of "carrying over" of previously declared range variables as well as introduction of the new one. + + + + + Bind body of a lambda representing first Select operator selector for an aggregate clause in context of this binder. + + + + + Bind Join/From selector that absorbs following Select/Let in context of this binder. + + + + + Bind Join/Let like and mixed selector in context of this binder. + + Join like selector: Function(a, b) New With {a, b} + + Let like selector: Function(a) New With {a, letExpressionRangeVariable} + + Mixed selector: Function(a, b) New With {a, b, letExpressionRangeVariable} + + + + + Bind key selectors for a Join/Group Join operator. + + + + + Helper visitor to determine what join sides are referenced by an expression. + + + + + Helper visitor to report query specific errors for an operand of an Equals expression. + + + + + Knows how to bind FunctionAggregationSyntax and GroupAggregationSyntax + within particular [Into] clause. + + Also implements Lookup/LookupNames methods to make sure that lookup without + container type, uses type of the group as the container type. + + + + + Given aggregationVariables, bind Into selector in context of this binder. + + + + + Bind AggregationRangeVariableSyntax in context of this binder. + + + + + Same as IntoClauseBinder, but disallows references to GroupAggregationSyntax. + + + + + Bind CollectionRangeVariableSyntax, applying AsQueryable/AsEnumerable/Cast(Of Object) calls and + Select with implicit type conversion as appropriate. + + + + + Apply "conversion" to the source based on the target AsClause Type of the CollectionRangeVariableSyntax. + Returns implicit BoundQueryClause or the source, in case of an early failure. + + + + + Convert source expression to queryable type by inferring control variable type + and applying AsQueryable/AsEnumerable or Cast(Of Object) calls. + + In case of success, returns possibly "converted" source and non-Nothing controlVariableType. + In case of failure, returns passed in source and Nothing as controlVariableType. + + + + + Given query operator source, infer control variable type from available + 'Select' methods. + + Returns inferred type or Nothing. + + + + + Given a set of 'Select' methods, infer control variable type. + + Returns inferred type or Nothing. + + + + + Given a method, infer control variable type. + + Returns inferred type or Nothing. + + + + + Return method group or Nothing in case nothing was found. + Note, returned group might have ResultKind = "Inaccessible". + + + + + [methodGroup] can be Nothing if lookup didn't find anything. + + + + + The dispatcher method that handles syntax nodes for all stand-alone statements. + + + + + Check presence of [On Error]/[Resume] statements and report diagnostics based on presence of other + "incompatible" statements. + Report Async/Await diagnostics, which depends on surrounding context. + + + + Defines max allowed rank of the array + Currently set to 32 because of COM+ array type limits + + + + Decodes a set of local declaration modifier flags and reports any errors with the flags. + + The syntax list of the modifiers. + returns True if any errors are reported + + + + Compute the type of a local symbol using the type character, as clause and equals value expression. + 1. Try to compute the type based on the identifier/modified identifier and as clause. If there is a type then we're done. + 2. If OptionInfer is on then evaluate the expression and use that to infer the type. + + ComputeVariableType will only bind the value if the symbol does not have an explicit type. + + The local symbol + The symbols modified identifier is there is one + The optional as clause + The optional initializing expression + The bound initializing expression + The bound as clause type + + + + Infer the type of a for-from-to control variable. + + + + + Infer the type of a for-each control variable. + + + + + Infer the type of a variable declared with an initializing expression. + + + + + Verifies that declaration of a local symbol does not cause name clashes. + + + + + Should be called on the binder, at which the check should begin. + + + + + Binds a list of statements and puts in a scope. + + + + + Binds a list of statements and puts in a scope. + + + + + Binds all the common part for ForTo and ForEach loops except the loop body and the next variables. + + The node. + The control variable syntax. + The declared or inferred local symbol. + The control variable. + The diagnostics. + true if there were errors; otherwise false + + + + Binds loop body and the next variables for ForTo and ForEach loops. + + + The binding of the loop body and the next variables cannot happen before the local type inference has + completed, which happens in the specialized binding functions for foreach and for loops. Otherwise we would + loose the diagnostics from the type inference. + + The loop body. + The next variables. + + + + Can return Nothing in case of failure. + + + + + Verifies for control variable declaration and outputs diagnostics as needed. + + The variable declarator. + The diagnostics. + + + + This function tries to bind the given controlVariableSyntax. + If it was an identifier of a valid target, the bound node is written to controlVariable and true is returned. + If something else was bound, that is not legal as a control variable (e.g. a property), a BoundBadNode is written + to controlVariable and false is returned. + If nothing declared was found, false is returned and controlVariable is set to nothing. In this case it's safe to + create a new local for the loop node. + + + + + If the control variable was bound to a non bad expression, this function checks if the + bound expression is a variable and reports diagnostics appropriately. + It reports the errors from 10.9.3 2.2 + + The control variable. + The diagnostics. + + + + Verifies that the collection is either a string, and array or matches the design pattern criteria and reports + diagnostics appropriately. + + The collection of the for each statement. + If the collection meets all criteria, currentType contains the type of the element from + the collection that get's returned by the current property. + Element type of the collection, could be different from . + For example, based on the pattern for an array is Object, but the + is the element type of the array. + if set to true, the collection is enumerable (matches design pattern, IEnumerable + or IEnumerable(Of T); otherwise (string or arrays) it's set to false. + The diagnostics. + The collection which might have been converted to IEnumerable or IEnumerable(Of T) if needed. + + + + Checks if the type of the collection matches the for each collection design pattern. + + + The rules are that the collection type must have an accessible GetEnumerator method that takes no parameters and + returns a type that has both: + - an accessible MoveNext method that takes no parameters and returns a Boolean + - an accessible Current property that takes no parameters and is not WriteOnly + + NOTE: this function ONLY checks for a function named "GetEnumerator" with the appropriate properties. + In the spec $10.9 it has these conditions: a type C is a "collection type" if one of + (1) it satisfies MatchesForEachCollectionDesignPattern (i.e. has a method named GetEnumerator() which + returns a type with MoveNext/Current); or + (2) it implements System.Collections.Generic.IEnumerable(Of T); or + (3) it implements System.Collections.IEnumerable. + + This function ONLY checks for part (1). Callers are expected to check for (2)/(3) themselves. The + scenario where something satisfies (2/3) but not (1) is + Class C + Implements IEnumerable + Function g1() as IEnumerator implements IEnumerable.GetEnumerator : End Function + + Clearly this class does not have a method _named_ GetEnumerator, but it does implement IEnumerable. + + The type of the for each collection. + The bound collection expression. + Return type of the property named "Current" if found. + A bound call to GetEnumerator on the collection if found. + A bound placeholder value for the collection local if GetEnumerator + was bound successful + A bound call to MoveNext on the instance returned by GetEnumerator if found. + A bound property access for "Current" on the instance returned by GetEnumerator if found. + A placeholder for the collection expression. + An empty diagnostic bag to capture diagnostics that have to be reported if the + collection matches the design pattern and that can be used instead of the generic error message in case non of the + for each collection criteria match. + If all required methods have been successfully looked up and bound, true is being returned; otherwise false. + + + + + Creates a BoundCall or BoundPropertyAccess from a MethodOrPropertyGroup. + + + This is not a general purpose helper! + + The syntax node. + The method or property group. + The diagnostics. + + + + Checks if a given symbol is a function that takes no parameters. + + + + + Checks if a given symbol is a property that is readable. + + + + + Returns the lookup result if at least one found symbol matches the requirements that are verified + by using the given symbolChecker. Extension methods will be considered in this check. + + The name of the method or property to look for. + The container to look in. + The symbol checker which performs additional checks. + + + + Determines whether derivedType is, inherits from or implements the given interface. + + The possible derived type. + Type of the interface. + + A list of matching interfaces. + + true if derivedType is, inherits from or implements the interface; otherwise, false. + + + + + Initially binding using blocks. + A Using statement names a resource that is supposed to be disposed on completion. + The resource can be an expression or a list of local variables with initializers. + the type of the resource must implement System.IDispose + A using statement of the form: + using Expression + list_of_statements + end using + + when the resource is a using locally declared variable no temporary is generated but the variable is read-only + A using statement of the form: + using v as new myDispose + list_of_statements + end using + It is also possible to use multiple variable resources: + using v1 as new myDispose, v2 as myDispose = new myDispose() + list_of_statements + end using + + + + Check the given type of and report WRN_MutableGenericStructureInUsing if needed. + This function should only be called for a type of a using variable. + + + + Binds a sync lock block. + A SyncLock come in the following form: + + SyncLock <expression> + <body> + End SyncLock + + The node. + The diagnostics. + + + + Bind a type name using the given binder. Returns a type symbol if the binding bound to something, + or an error symbol if the binding failed. In either case, errors may be reported via the + context. For example, if an inaccessible type or type with the wrong arity was found, the best possible + type is returned, but an error is also generated. + + The syntax to bind. + Place to put diagnostics. If no reasonable type was found, an undefined type + diagnostic is placed in here. Other diagnostics (both related to the type being bound, or + type arguments thereof) can be placed here also. + The best type that can be found, or and ErrorTypeSymbol if no reasonable type can be found. + + + + Bind a type or namespace using the given binder. + + The syntax to bind. + The best type or namespace that can be found, or and ErrorTypeSymbol if no reasonable type can be found. + + + + Apply generic type arguments, returning the constructed type. Produces errors for constraints + that aren't validated. If the wrong number of type arguments are supplied, the set of types + is silently truncated or extended with the type parameters. + + The type to construct from + The types to apply + The place to report errors for the generic type as a whole + The place to report errors for each generic type argument. + The diagnostics collection. + The constructed generic type. + + + + The type binder class handles binding of type names. + + + + + Bind a type name using the given binder. Returns a type symbol if the binding bound + to something, or an error symbol if the binding failed. In either case, errors may + be reported via the context. For example, if an inaccessible type or type with the + wrong arity was found, the best possible type is returned, but an error is also + generated. + + The syntax to bind. + The binder to bind within. This binder is used for looking up + unqualified names, accessibility checking, reporting errors, and probably other + stuff too. + The best type that can be found, or and ErrorTypeSymbol if no reasonable type can be found. + + + + If lookup failed for a qualified name, we don't know which part of the lookup failed. Therefore, we have + to check for a type forwarder for each prefix of the name. + + Starting assembly. + Full name of type that failed lookup. Shortened as different prefixes are checked. + GetBaseNamesForDiagnostic(typeSyntax) (basically dot-delimited list of names). Shortened as different prefixes are checked. + Set if some prefix matches a forwarded type. + Diagnostics bag (Nothing if errors should not be reported). + + + + Look for a type forwarder for the given type in the containing assembly and any referenced assemblies. + If one is found, search again in the target assembly. Return the last assembly in the chain. + + The assembly in which to look for the type forwarder. + The metadata name of the (potentially) forwarded type, including the arity (if non-zero). + The arity of the forwarded type. + The syntax to report types on (if any). + The diagnostics bag (Nothing if errors should not be reported). + + + Since this method is intended to be used for error reporting, it stops as soon as it finds + any type forwarder (or an error to report). It does not check other assemblies for consistency or better results. + + NOTE: unlike in C#, this method searches for type forwarders case-insensitively. + + + + + Bind a type or namespace using the given binder. + + The syntax to bind. + The binder to bind within. This binder is used for looking up + unqualified names, accessibility checking, reporting errors, and probably other stuff too. + The best type or namespace that can be found, or and ErrorTypeSymbol if no reasonable type can be found. + + + + Lookup a typeSyntax, confining the lookup to namespaces or types. Returns a LookupResult + that summarizes the results of the lookup, which might contain a Diagnostic associated with the lookup. + However, other diagnostics associated with parts of the binding process (i.e., binding type arguments) + will be emitted via the diagnostic bag. + + The LookupResult will always have at most one symbol in it, since types and namespaces are not overloadable symbols. + + + + + Check that the given symbol is a type. If it is a namespace, report an error into the diagnostic bag + and return an error symbol. + + + + + Bind a built in type name to the correct type symbol. + + + + + Bind array type syntax to the correct type symbol. + + + + + Bind Nullable (?) type syntax to the correct type symbol. + + + + + Bind a basic name to a type or namespace. + + + + + Bind a generic name to a type. + + + + + Bind a dotted name to a type or namespace. + + + + + Bind a generic dotted name to a type or namespace. + + + + + Bind to the global namespace. + + + + + Bind a list of type arguments to their types. + + + + + Given a type syntax, strip out ?, (), (of xxx) stuff and return a string of the form + x.y.z, for use in an error message. + + + + + If the identifier has a type character, report an error on it. + + + + + Given a list of keywords and a set of keywords kinds to search, return the first keyword + in the list, if any, that matches one of the keyword kinds. + + + + + Map syntax kind of a modifier keyword to SourceMemberFlags value + + + + + Decodes a set of modifier flags, reported any errors with the flags. + + The syntax list of the modifiers. + A bit-flag of the allowable modifiers. If a bit isn't set, an error occurs. + Error ID to report if a bad modifier is found. + The default accessibility. + Flags for the modifiers. + + + + Decode a list of parameter modifiers, and return the flags associated with it. + + + + + Create the Nullable version of a type. + + + + + Possible create the array version of type, given the element type and the array modifier syntax. + + + + + Possibly create the array version of type, given the element type and the array modifier syntax. + + + + + Create the array version of type, given the element type and the array modifier syntax. Throws if + there aren't any array modifiers and the result is not an array type. + + + + + Given an identifier and an As clause, return true if the identifier does not have a type + declared for it (e.g., no type character and no as clause). + + + + + Given an identifier and an As clause, return true if the identifier does not have a type + declared for it (e.g., no type character and no as clause). + + + + + Given an identifier, return true if the identifier declares an array. + (e.g., identifier specifies ()) + + + + + Flags to specify where the decoding of the modified identifier's type happens. + + + + + No context given (default). + + + + + Modified identifier appeared in a lambda declaration. + + + + + Modified identifier appeared in a local declaration. + + + + + Modified identifier appeared in a field declaration. + + + + + Modified identifier appeared in a parameter. + + + + + Modified identifier appeared in a query range variable declaration. + + + + + Combined flag to express that a modified identifier appeared in a local or field declaration. + + + + + Combined flag to express that a modified identifier appeared in a parameter of a lambda. + + + + + Given a modified identifier and a type, return the actual type to use. Applies the type character + and type modifiers to the given type. + + The modified identifier. + Bound type after the As or a type from the initializing value expression. Can be nothing if no type was supplied. + If specified then it is the syntax for the as clause and the type is the bound type from this syntax. + Delegate to get diagnostic info to generate if a required type is missing (Option Strict On/Custom) + The type, as modified by the type character, type modifiers. Uses Object as default if needed. + + + + + Given a modified identifier and a type syntax, return the actual type to use. Applies the type character + and type modifiers to the given type. + + The modified identifier. + As clause syntax. Can be nothing if no type was supplied. + Delegate to get diagnostic info to generate if a required type is missing (Option Strict On/Custom) + The type of the AsClauseOpt before applying any modifiers + The type, as modified by the type character, type modifiers. Uses Object as default if needed. + + + + Given a modified identifier and a type syntax, return the actual type to use. Applies the type character + and type modifiers to the given type. + + The modified identifier. + As clause syntax. Can be nothing if no type was supplied. + Delegate to get diagnostic info to generate if a required type is missing (Option Strict On/Custom) + The type, as modified by the type character, type modifiers. Uses Object as default if needed. + + + + Given a identifier and as clause syntax, return the actual type to use. Uses the type character or the type syntax. + + The identifier. + Syntax for optional as clause. Can be nothing if no type was supplied. + Delegate to get diagnostic info to generate if a required type is missing (Option Strict On/Custom) + The type, either from the type character or the as clause. Uses Object as default if needed. + + + + + Given a identifier and as clause syntax, return the actual type to use. Uses the type character or the type syntax. + + The identifier. + Syntax for optional as clause. Can be nothing if no type was supplied. + Delegate to get diagnostic info to generate if a required type is missing (Option Strict On/Custom) + The type, either from the type character or the as clause. Uses Object as default if needed. + + + + + Given a identifier and a type, return the actual type to use. Uses the type character or the given type. + + The identifier. + Bound type after the As. Can be nothing if no type was supplied. + Delegate to get diagnostic info to generate if a required type is missing (Option Strict On/Custom) + The type, either from the type character or the as clause type. Uses Object as default if needed. + + + + + Decode an option "On" or "Off" values into true or false. Not specified is considered true. + + + + + Decode an option "Text" or "Binary" value into true or false. The syntax is not optional. + + + + + Decode a parameter list from a delegate declaration into a list of parameter symbols. + + Containing method declaration. + Optional parameter list syntax + + + + Decode a parameter list into a list of parameter symbols. + + Containing method declaration. + Parameter is for a lambda expression rather than a regular method. + Optional parameter list syntax + DO NOT call this to get the parameters of a delegate declaration (DecodeParameterListOfDelegateDeclaration). + + + + Decode a parameter list into a list of parameter symbols. + + Containing property declaration. + Optional parameter list syntax + + + + Modifier validation code shared between properties and methods. + + + + + This function checks if the given expression is a constant from a language point of view and returns + constant value if it is. This is different from the fact that the bound node has a constant value. + This method also adds the required diagnostics for non const values. + + The bound expression. + The diagnostics. + ConstantValue if the bound expression is compile time constant and can be used + for const field/local initializations or enum member initializations. Nothing if not + + + isWinMd says whether to mangle the name for winmdobj output. See the param tag for details. + isWinMd is only necessary for set properties, so any MethodKind which is definitely not + a set property can safely set this value to False. + + + + Returns True if the xmlns { prefix, namespace } pair matches + an Imports declaration and there aren't any xmlns declarations + for the same prefix on any outer XElement scopes. + + + + + Bind the expression within the XmlEmbeddedExpressionSyntax, + and wrap in a BoundXmlEmbeddedExpression. + + + + + If the method or property group is not Nothing, bind as an invocation expression. + Otherwise return a BoundBadExpression containing the arguments. + + + + + Check if XML features are allowed. If not, report an error and return a + separate DiagnosticBag that can be used for binding sub-expressions. + + + + + Bind any xmlns declaration attributes and return the bound nodes plus a Dictionary + of { prefix, namespace } pairs that will be used for namespace lookup at and below + the containing XmlElement. Any xmlns declarations that are redundant with Imports + in scope (same prefix and namespace) are dropped, and instead, an entry is added + to the 'importedNamespaces' collection. When the root XmlElement is generated, + xmlns attributes will be added for all entries in importedNamespaces. Any attributes + other than xmlns are added to the 'otherAttributes' collection for binding by the caller. + + + + + If the attribute represents an xmlns declaration, populate 'prefix' and 'namespace', + and generate diagnostics and set hasErrors if there are errors. Returns True if this + is an xmlns declaration, even if there are errors. Unless this attribute is from an + Imports statement, generate the BoundExpression for the namespace as well. + (For Imports, binding is skipped, since a BoundNode is not needed, and in the + invalid case of "xmlns:p=<%= expr %>", expr may result in a cycle. + + + + + If name is "xmlns", set prefix to String.Empty and return True. + If name is "xmlns:p", set prefix to p and return True. + Otherwise return False. + + + + + State tracked for the root XmlElement while binding nodes within the + tree. This state is mutable since it includes the set of namespaces from + Imports referenced within the tree. Ideally, this state would be part of the + XmlRootElementBinder, but since this state is mutable, there would be + issues caching and reusing the Binder. Instead, the state is passed + explicitly as an argument to each binding method. + + + + + Makes it look like Option Strict is Off, all other operations + are delegated up the chain. + + + + + A BinderBuilder builds a linked list of Binder objects for various typical binders. + + Typically the binder chain looks something like this: + BackstopBinder + SourceModuleBinder + TypesOfImportedNamespacesMembersBinder (for modules of project-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for project-level imported namespaces and types) + ImportAliasesBinder (for project-level import aliases) + SourceFileBinder + TypesOfImportedNamespacesMembersBinder (for modules of file-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for file-level imported namespaces and types) + ImportAliasesBinder (for file-level import aliases) + NamespaceBinder... (for each namespace, starting at the global namespace) + TypeBinder... (for each type, and nested type) + (maybe more) + DiagnosticBagBinder + + Note: Binders are also built by the BinderCache class. Changes to how namespace and type Binders + are built may need changes there also. + + + + + Creates a binder for a binding global imports in a source file. This includes the following binders: + BackstopBinder + SourceModuleBinder + SourceFileBinder + NamespaceBinder (for the global namespace) + IgnoreBaseClassesBinder (so that base classes are ignore during binding) + + + + + Creates a binder for a binding project-level imports. This includes the following binders: + BackstopBinder + SourceModuleBinder + ProjectImportsBinder + NamespaceBinder (for the global namespace) + IgnoreBaseClassesBinder (so that base classes are ignore during binding) + + + + + Creates a binder for a source file. This includes the following binders: + BackstopBinder + SourceModuleBinder + TypesOfImportedNamespacesMembersBinder (for modules of project-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for project-level imported namespaces and types) + ImportAliasesBinder (for project-level import aliases) + SourceFileBinder + TypesOfImportedNamespacesMembersBinder (for modules of file-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for file-level imported namespaces and types) + ImportAliasesBinder (for file-level import aliases) + + + + + Creates a binder for a project level namespace declaration + This includes the following binders: + BackstopBinder + SourceModuleBinder + TypesOfImportedNamespacesMembersBinder (for modules of project-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for project-level imported namespaces and types) + SourceFileBinder + TypesOfImportedNamespacesMembersBinder (for modules of file-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for file-level imported namespaces and types) + ImportAliasesBinder (for file-level import aliases) + NamespaceBinder... (for each namespace, starting at the global namespace) + + + + + Creates a binder for a source namespace declaration (the part of a namespace + in a single namespace declaration). This includes the following binders: + BackstopBinder + SourceModuleBinder + TypesOfImportedNamespacesMembersBinder (for modules of project-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for project-level imported namespaces and types) + SourceFileBinder + TypesOfImportedNamespacesMembersBinder (for modules of file-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for file-level imported namespaces and types) + ImportAliasesBinder (for file-level import aliases) + NamespaceBinder... (for each namespace, starting at the global namespace) + + + + + Creates a binder for a source type declaration (the part of a type in a single + type declaration. For partial types this include just one part). This includes the following binders: + BackstopBinder + SourceModuleBinder + TypesOfImportedNamespacesMembersBinder (for modules of project-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for project-level imported namespaces and types) + SourceFileBinder + TypesOfImportedNamespacesMembersBinder (for modules of file-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for file-level imported namespaces and types) + ImportAliasesBinder (for file-level import aliases) + NamespaceBinder... (for each namespace, starting at the global namespace) + NamedTypeBinder... (for each type, and nested type) + + + + + Creates a binder for a source attribute block from the containing type or containing namespace. + This binder is used by the normal compilation code path for source attributes. In this case, no + containing binder exists. + + + + The symbol which is the target of the attribute. + + + + Creates a binder for a source attribute block when a containing binder is available. Used by semantic model. + + + + + Creates a binder for binding a source parameter's default value. + + + + + Creates a binder for binding for binding inside the interior of documentation comment + + + + + Create a binder for the source module. Includes the following: + BackstopBinder + SourceModuleBinder + + + + + The class finds the correct Binder to use for a node in a syntax + tree, down to method level. Within a method, the has a + cache of further binders within the method. + + The caches results so that binders are efficiently reused between queries. + + + + + A helper to bind conditional access. + + + + + Data for Binder.BindImportClause that exposes dictionaries of + the members and aliases that have been bound during the + execution of BindImportClause. It is the responsibility of derived + classes to update the dictionaries in AddMember and AddAlias. + + + + + Provides context for binding body of a Lambda. + + + + + Special binder for binding ObjectInitializers. + This binder stores a reference to the receiver of the initialization, because fields in an object initializer can be + referenced with an omitted left expression in a member access expression (e.g. .Fieldname = .OtherFieldname). + + + + + Use the receiver of the ObjectCreationExpression as the omitted left of a member access. + + + + + Use the receiver of the ObjectCreationExpression to as the omitted left of a dictionary access. + + + + + Holds information about a member in a compact form. Used for all non-type members for simplicity + + + + + + These are the flags that are found in the syntax. They must correspond to the modifiers list. + + + + + + These are flags that are implied or computed + + + + + + Binder used to bind statements inside With blocks. + + + + Reference to a With statement syntax this binder is created for + + + Reference to an expression from With statement + + + + Holds information needed by With block to properly bind + references to With block expression placeholder + + + + + True if there were references to the With statement expression + placeholder which prevent ByRef local from being used + + + + + With statement expression placeholder is a bound node being used in initial binding + to represent with statement expression. In lowering it is to be replaced with + the lowered expression which will actually be emitted. + + + + + A draft version of initializers which will be used in this With statement. + Initializers are expressions which are used to capture expression in the current + With statement; they can be empty in some cases like if the expression is a local + variable of value type. + + Note, the initializers returned by this property are 'draft' because they are + generated based on initial bound tree, the real initializers will be generated + in lowering based on lowered expression form. + + + + + A draft version of placeholder substitute which will be used in this With statement. + + Note, the placeholder substitute returned by this property is 'draft' because it is + generated based on initial bound tree, the real substitute will be generated in lowering + based on lowered expression form. + + + + Holds information needed by With block to properly bind + references to With block expression, placeholder, etc... + + + Original bound expression from With statement + + + Bound placeholder expression if used, otherwise Nothing + + + Diagnostics produced while binding the expression + + + + Draft initializers for With statement, is based on initial binding tree + and is only to be used for warnings generation as well as for flow analysis + and semantic API; real initializers will be re-calculated in lowering + + + + + Draft substitute for With expression placeholder, is based on initial + binding tree and is only to be used for warnings generation as well as + for flow analysis and semantic API; real substitute will be re-calculated + in lowering + + + + + If With statement expression is being used from nested lambda there are some restrictions + to the usage of Me reference in this expression. As these restrictions are only to be checked + in few scenarios, this flag is being calculated lazily. + + + + Create a new instance of With statement binder for a statement syntax provided + + + + A bound tree walker which search for a bound Me and MyClass references of value type. + Is being only used for calculating the value of 'ExpressionHasByRefMeReference' + + + + Asserts that the node is NOT from With statement expression + + + + Binding state used by the rewriter for XContainer derived types. + + + + + A binder to expose namespaces from Imports<xmlns:...> statements. + + + + + A binder for XmlElement declarations. + + + + + An extension property in reduced form, with first parameter + removed and exposed as an explicit receiver type. + + + + + A specific location for binding. + + + + + Binder used to bind Catch blocks. + It hosts the control variable (if one is declared) + and inherits BlockBaseBinder since there are no Exit/Continue for catch blocks. + + + + + This is used while computing the values of constant fields. Since they can depend on each + other, we need to keep track of which ones we are currently computing in order to avoid (and + report) cycles. + + + + + This binder keeps track of the set of constant fields that are currently being evaluated + so that the set can be passed into the next call to SourceFieldSymbol.ConstantValue (and + its callers). + + + + + Binder used for field, auto property initializations and parameter default values. + + + + + Backing field for the ContainingMember property + + + + + Backing field for the AdditionalContainingMembers property + + + + Root syntax node + + + + Initializes a new instance of the class. + + The field, property or parameter symbol with an initializer or default value. + Additional field for property symbols initialized with the initializer. + The next binder. + Root syntax node + + + + The member containing the binding context. + This property is the main reason for this binder, because the binding context for an initialization + needs to be the field or property symbol. + + + + + Additional members associated with the binding context + Currently, this field is only used for multiple field/property symbols initialized by an AsNew initializer, e.g. "Dim x, y As New Integer" or "WithEvents x, y as New Object" + + + + Field or property declaration statement syntax node + + + + This binder keeps track of the set of parameters that are currently being evaluated + so that the set can be passed into the next call to ParameterSymbol.DefaultConstantValue (and + its callers). + + + + + This binder keeps track of the set of symbols that are currently being evaluated + so that the set can be passed to methods to support breaking infinite recursion + cycles. + + + + + Provides a way to obtain binders for descendant scopes in method or lambda body. + Factory for a method body does not create binders for scopes inside a lambda, + contained by the method. A dedicated factory must be created for each lambda body. + + + + + Binder used for interiors of documentation comment + + + + + Assuming there is one, the containing member of the binder is the commented symbol if and only if + the commented symbol is a non-delegate named type. (Otherwise, it is the containing type or namespace of the commented symbol.) + + + Delegates don't have user-defined members, so it makes more sense to treat + them like methods. + + + + + Symbol commented with the documentation comment handled by this binder. In general, + all name lookup is being performed in context of this symbol's containing symbol. + We still need this symbol, though, to be able to find type parameters or parameters + referenced from 'param', 'paramref', 'typeparam' and 'typeparamref' tags. + + + + + Removes from symbol collection overridden methods or properties + + + + + Binder used for interiors of documentation comment for binding 'cref' attribute value + + + + + Binder used for interiors of documentation comment for binding 'name' attribute + value of 'param' and 'paramref' documentation comment tags + + + + + Binder used for interiors of documentation comment for binding 'name' attribute + value of 'typeparam' documentation comment tag + + + + + Binder used for interiors of documentation comment for binding 'name' attribute + value of 'typeparamref' documentation comment tag + + + + + This is a binder for use when early decoding of well known attributes. The binder will only bind expressions that can appear in an attribute. + Its purpose is to allow a symbol to safely decode any attribute without the possibility of any attribute related infinite recursion during binding. + If an attribute and its arguments are valid then this binder returns a BoundAttributeExpression otherwise it returns a BadExpression. + + + + + Check that the syntax can appear in an attribute argument. + + + + + A ExecutableCodeBinder provides context for looking up labels within a context represented by a syntax node, + and also implementation of GetBinder. + + + + + Binder for Finally blocks. + Its purpose is to hide exit try label of the enclosing try binder. + + + + + Holds all information needed to rewrite a bound for each node. + + + + + A bound call to the GetEnumerator method. + + + + + + A bound call to the MoveNext method. + + + + + + A bound access to the Current property. + + + + + + Element type of the collection. + + + + + + True is the enumerator needs or may need (in case of IEnumerator) to be disposed. + + + + + + True if the enumerator is, inherits from or implements IDisposable. + + + + + + The condition that is used to determine whether to call Dispose or not (contains a placeholder). + + + + + + The conversion of the enumerator to the target type on which Dispose is called + (contains a placeholder). + + + + + + The conversion of the return value of the current call to the type of the control variable + (contains a placeholder). + + + + + + Placeholder for the bound enumerator local. + + + + + + Placeholder for the bound call to the get_Current method. + + + + + + Placeholder for the collection; used only when the collection's type + is not an one dimensional array or string. + + + + + + Initializes a new instance of the class. + + A bound call to the GetEnumerator method. + A bound call to the MoveNext method. + A bound access to the Current property. + An element type. + if set to true the enumerator needs to be disposed. + if set to true the enumerator is or inherits from or implements IDisposable. + The condition whether to call dispose or not. + The conversion of the enumerator to call Dispose on. + The conversion from Current return type to the type of the controlVariable. + The placeholder for the bound enumerator local. + The placeholder for the expression that get's the current value. + The placeholder for the collection expression. + + + + Binder used to bind For and ForEach blocks. + It hosts the control variable (if one is declared) + and inherits ExitableStatementBinder to provide Continue/Exit labels if needed. + + + + + This binder is for binding the argument to GetType. It traverses + the syntax marking each open type ("unbound generic type" in the + VB spec) as either allowed or not allowed, so that BindType can + appropriately return either the corresponding type symbol or an + error type. + + + + + This visitor walks over a type expression looking for open types. + Open types are allowed if an only if: + 1) There is no constructed generic type elsewhere in the visited syntax; and + 2) The open type is not used as a type argument or array/nullable + element type. + + + + The argument to typeof. + + Keys are GenericNameSyntax nodes representing unbound generic types. + Values are false if the node should result in an error and true otherwise. + + True if no constructed generic type was encountered. + + + + Causes lookups to ignore base classes. Used for binding + Imports statements. + + + + + If Option Explicit is Off for this source file, then implicit variable declaration will be allowed + in this binder. "containerOfLocals" is the container for implicitly declared variables. + + + + + Disallow additional local variable declaration (make binder frozen) + and report delayed shadowing diagnostics. + + + + + + True if implicit variable declaration is done (binder is frozen and doesn't + allow additional implicit variable declaration) + + + + + True if we are in a place that allows implicit variable declaration. This binder + implies that. + + + + + Get all implicitly declared variables that were declared in this method body. The binder + must be frozen before this can be obtained. + + + + + Declare an implicit local variable. The type of the local is determined + by the type character (if any) on the variable. + + + + + A tricky problem is reporting the "Variable 'x' hides a variable in an enclosing block" message if the variable in + an enclosing block is an implicit variable that hasn't been declared yet. We handle this by remembering any variable + declarations in enclosed blocks, and then report the error when the implicit variable is declared. + + + + + A ImportAliasesBinder provides lookup for looking up import aliases (A = Goo.Bar), + either at file level or project level. + + + + + Provides lookup in imported namespaces and types (not the alias kind), + either at file level or project level. + + + + + Collect extension methods with the given name that are in scope in this binder. + The passed in ArrayBuilder must be empty. Extension methods from the same containing type + must be grouped together. + + + + + Creates an InitializerSemanticModel that allows asking semantic questions about an initializer node. + + + + + Creates a speculative InitializerSemanticModel that allows asking semantic questions about an initializer node that did not appear in the original source code. + + + + + The is used to build up the map of all s within a method body, and the associated + . To do so it traverses all the statements, handling blocks and other + statements that create scopes. For efficiency reasons, it does not traverse into + expressions. This means that blocks within lambdas and queries are not created. + Blocks within lambdas are bound by their own when they are + analyzed. + + For reasons of lifetime management, this type is distinct from the + which also creates a map from to . That type owns it's binders + and that type's lifetime is that of the compilation. Therefore we do not store + binders local to method bodies in that type's cache. + + + + + Creates binders for top-level executable statements. + + + + + This binder is for binding the initializer of an implicitly typed + local variable. While binding an implicitly typed local variable + this binder is used to break cycles. + + + + + A simple Binder that wraps another Binder and reports a specific + binding location, but otherwise delegates to the other Binder. + + + + + Options that can be used to modify the symbol lookup mechanism. Multiple options can be combined together. + + + + + Consider all symbols, using normal accessibility rules. + + + + + Consider only namespaces and types. + + + + + Consider only labels. If this is not set, labels are not considered at all. + + + + + Do not consider symbols that are shared members. + + + + + Do not consider symbols that are instance members. + + + + + Do not consider the return value local variable. + This is similar to the C# LookupOption.MustBeInvocableMember. + + The only non-invocable member in Visual Basic is the function return variable + (see language specification 10.1.1). If this flag is set, lookup will not + return the function return variable, but instead return the containing function or property, + and any overloads thereof. + + + + + Do not do lookup in base classes (similar to how types in Imports are bound). + + + + + + Ignore accessibility checking when determining if a symbol is a viable match. + + + + + Consider methods of any arity (but still consider arity for other types of symbols). + + + + + Do not look for extension methods. + + + + + Ensures that lookup eagerly looks for extension methods and merges them with + instance methods, if any. + + If this flag is not set and lookup found viable instance method, it will not look + for extension methods that might be in scope. + + It is not an error to combine this flag with LookupOptions.IgnoreExtensionMethods, + the LookupOptions.IgnoreExtensionMethods takes precedence. + + + + + Consider only methods. Used by Query Expressions. + + 11.21.2 Queryable Types + When binding well-known method names, non-methods are ignored for the purpose of + multiple inheritance in interfaces and extension method binding, although shadowing + semantics still apply. + + + + + Ignore 'throughType' in accessibility checking. Used in checking accessibility of symbols accessed via 'MyBase'. + + + + + Do not consider locals or parameters during lookup. + + + + + Consider only events. Used to indicate that lookup searches for events only. Is used + to change lookup semantic for searching inside interfaces having CoClass attribute defined. + + Essentially this is a special casing for searching events (and non-event symbols) in + COM interfaces, see the following example from Dev11 code: + + Performing a lookup in a CoClass interface affects how we treat ambiguities between events and other members. + In COM, events are separated into their own binding space, thus it is possible for an event and member to have + the same name. This is not possible in the .NET world, but for backwards compatibility, especially with Office, + the compiler will ignore ambiguities when performing a lookup in a CoClass interface. Example: + + Interface _Goo + Sub Quit + + Interface GooSource + Event Quit + + < System.Runtime.InteropServices.CoClass(GetType(GooClass)) > + Interface Goo : Inherits _Goo, GooSource + + Class GooClass : Implements Goo + Event Quit Implements Goo.Quit + Sub Quit Implements Goo.Quit + + + + + + When performing a lookup in interface do NOT lookup in System.Object + + + + + Handle a case of being able to refer to System.Int32 through System.Integer. + Same for other intrinsic types with intrinsic name different from emitted name. + + + + + Represents a result of lookup operation over a 0 or 1 symbol (as opposed to a scope). + The typical use is to represent that a particular symbol is good/bad/unavailable. + +For more explanation of Kind, Symbol, Error - see LookupResult. + + + + + A LookupResult summarizes the result of a name lookup, and allows combining name lookups + from different scopes in an easy way. + + A LookupResult can be ONE OF: + empty - nothing found. + a non-accessible result - this kind of result means that search continues into further scopes of lower priority for + a viable result. An error is attached with the inaccessibility errors. Non-accessible results take priority over + non-viable results. + a non-viable result - a result that means that the search continues into further scopes of lower priority for + a viable or non-accessible result. An error is attached with the error that indicates + why the result is non-viable. + a bad symbol that stops further lookup - this kind of result prevents lookup into further scopes of lower priority. + a diagnostic is attached explaining why the symbol is bad. + ambiguous symbols.- In this case, an AmbiguousSymbolDiagnostic diagnostic has the other symbols. + a good symbol, or set of good overloaded symbols - no diagnostic is attached in this case + + Occasionally, good or ambiguous results are referred to as "viable" results. + + Multiple symbols can be represented in a single LookupResult. Multiple symbols are ONLY USED for overloadable + entities, such as methods or properties, and represent all the symbols that overload resolution needs to consider. + When ambiguous symbols are encountered, a single representative symbols is returned, with an attached AmbiguousSymbolDiagnostic + from which all the ambiguous symbols can be retrieved. This implies that Lookup operations that are restricted to namespaces + and/or types always create a LookupResult with 0 or 1 symbol. + + Note that the class is poolable so its instances can be obtained from a pool via GetInstance. + Also it is a good idea to call Free on instances after they no longer needed. + + The typical pattern is "caller allocates / caller frees" - + + Dim result = LookupResult.GetInstance() + + scope.Lookup(result, "goo") + ... use result ... + + result.Clear() + anotherScope.Lookup(result, "moo") + ... use result ... + + result.Free() 'result and its content is invalid after this + + + + + Set current result according to another + + + + + Set current result according to another + + + + + Set current result according to a given symbol + + + + + + + Merge two results, returning the best. If there are + multiple viable results, either produce a result with both symbols if they + can overload each other, or use the current. + + Other result. + + If the checkIfCurrentHasOverloads is True, then we only overload if every symbol in + our current result has "Overloads" modifier; otherwise we overload + regardless of the modifier. + + + + + + Returns: negative value - when first lost, 0 - when neither lost, > 0 - when second lost. + + + + + Returns: negative value - when current lost, 0 - when neither lost, > 0 - when other lost. + + + + + Returns: negative value - when first lost, 0 - when neither lost, > 0 - when second lost. + + + + + Returns: negative value - when namespace lost, 0 - when neither lost, > 0 - when type lost. + + + + + Replace the symbol replaced with a new one, but the kind + and diagnostics retained from the current result. Typically used when constructing + a type from a symbols and type arguments. + + + + + Binding info for expressions and statements that are part of a member declaration. + + + + + Field specific to non-speculative MemberSemanticModel + + + + + Get the highest bound node in the tree associated with a particular syntax node. + + + + + Get the lowest bound node in the tree associated with a particular syntax node. Lowest is defined as last + in a pre-order traversal of the bound tree. + + + + + If node has an immediate parent that is an expression or statement or attribute, return + that (making sure it can be bound on its own). Otherwise return Nothing. + + + + + Get a summary of the bound nodes associated with a particular syntax nodes, + and its parent. This is what the rest of the semantic model uses to determine + what to return back. + + + + + Gets a summary of the bound nodes associated with an underlying + bound call node for a raiseevent statement. + + + + + if "node" argument is a BoundRaiseEvent, returns its underlying boundcall instead. + Otherwise returns "node" unchanged. + + + + + Return True if the statement can be bound by a Binder on its own. + For example Catch statement cannot be bound on its own, only + as part of Try block. Similarly, Next statement cannot be bound on its own, + only as part of For statement. + + Only handles statements that are in executable code. + + + + + Get all of the syntax errors within the syntax tree associated with this + object. Does not get errors involving declarations or compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + + + + Get all the syntax and declaration errors within the syntax tree associated with this object. Does not get + errors involving compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the process of obtaining the + diagnostics. + The declaration errors for a syntax tree are cached. The first time this method is called, a ll + declarations are analyzed for diagnostics. Calling this a second time will return the cached diagnostics. + + + + + Get all the syntax and declaration errors within the syntax tree associated with this object. Does not get + errors involving compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the process of obtaining the + diagnostics. + The declaration errors for a syntax tree are cached. The first time this method is called, a ll + declarations are analyzed for diagnostics. Calling this a second time will return the cached diagnostics. + + + + + Get all the errors within the syntax tree associated with this object. Includes errors involving compiling + method bodies or initializers, in addition to the errors returned by GetDeclarationDiagnostics. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the process of obtaining the + diagnostics. + + Because this method must semantically all method bodies and initializers to check for diagnostics, it may + take a significant amount of time. Unlike GetDeclarationDiagnostics, diagnostics for method bodies and + initializers are not cached, the any semantic information used to obtain the diagnostics is discarded. + + + + + Given a type declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The type symbol that was declared. + + + + Given a enum declaration, get the corresponding type symbol. + + The syntax node that declares an enum. + The type symbol that was declared. + + + + Given a namespace declaration, get the corresponding type symbol. + + The syntax node that declares a namespace. + The namespace symbol that was declared. + + + + Given a method, property, or event declaration, get the corresponding symbol. + + The syntax node that declares a method, property, or event. + The method, property, or event symbol that was declared. + + + + Given a parameter declaration, get the corresponding parameter symbol. + + The syntax node that declares a parameter. + The parameter symbol that was declared. + + + + Given an import clause get the corresponding symbol for the import alias that was introduced. + + The import statement syntax node. + The alias symbol that was declared or Nothing if no alias symbol was declared. + + + + Given a type parameter declaration, get the corresponding type parameter symbol. + + The syntax node that declares a type parameter. + The type parameter symbol that was declared. + + + + Gets the semantic information of a for each statement. + + The for each syntax node. + + + + The SyntaxTree that is bound + + + + + Get the correct enclosing binder for the given position, taking into account + block constructs and lambdas. + + Binder for the method body, lambda body, or field initializer. The + returned binder will be nested inside the binder, or be this binder. + Syntax node that is the root of the construct associated with "memberBinder". + Syntax node that position is in. + Position we are finding the enclosing binder for. + The enclosing binder within "memberBinder" for the given position. + + WARN WARN WARN: The result is not guaranteed to have IsSemanticModelBinder set. + + + + + If answer is True, the binder is returned via [binder] parameter. + + + + + If answer is True, the binder is returned via [binder] parameter. + + + + + Get all bound nodes associated with a node, ordered from highest to lowest in the bound tree. + Strictly speaking, the order is that of a pre-order traversal of the bound tree. + As a side effect, caches nodes and binders. + + + + + A collection initializer syntax node is not always treated as a VB expression syntax node + in case it's part of a CollectionInitializer (outer most or top level initializer). + + The syntax node to check. + True if the syntax node represents an expression syntax, but it's not + an expression from the VB language point of view; otherwise False. + + + + Incrementally bind bindingRoot (which is always a non-lambda enclosed statement, or the + root of this model). Side effect is to store nodes into the guarded node map. + + + + + In order that any expression level special binders are used, lambdas are fully resolved, + and that any other binding context is correctly handled, we only use the binder to create bound + nodes for: + a) The root syntax of this semantic model (because there's nothing more outer to bind) + b) A stand-alone statement is that is not inside a lambda. + + + + + The incremental binder is used when binding statements. Whenever a statement + is bound, it checks the bound node cache to see if that statement was bound, + and returns it instead of rebinding it. + + FOr example, we might have: + While x > goo() + y = y * x + z = z + y + End While + + We might first get semantic info about "z", and thus bind just the statement + "z = z + y". Later, we might bind the entire While block. While binding the while + block, we can reuse the binding we did of "z = z + y". + + + + + We override GetBinder so that the BindStatement override is still + in effect on nested binders. + + + + + We override GetBinder so that the BindStatement override is still + in effect on nested binders. + + + + + Traverse a tree of bound nodes, and update the following maps inside the SemanticModel: + + guardedNodeMap - a map from syntax node to bound nodes. Bound nodes are added in the order they are bound + traversing the tree, so they will be in order from upper to lower node. + + guardedQueryBindersMap - a map from query-specific syntax node to an array of binders used to + bind various children of the node. + + guardedAnonymousTypeBinderMap - a map from Anonymous Type initializer's FieldInitializerSyntax to + Binder.AnonymousTypeFieldInitializerBinder used to bind its expression. + + + + + Should we record bound node mapping for this node? Generally, we ignore compiler generated, but optionally can + allow. + + + + + Provides context for binding body of a MethodSymbol. + + + + + Create binder for binding the body of a method. + + + + + Creates a MethodBodySemanticModel that allows asking semantic questions about an attribute node. + + + + + Creates a speculative MethodBodySemanticModel that allows asking semantic questions about an attribute node that did not appear in the original source code. + + + + + A MethodTypeParametersBinder provides the context for looking up type parameters on a method. + It is split out since binding of type in the parameters and return value need to happen with a context + that includes the type parameters, but we don't have a fully complete method symbol yet. + + + + + Looks up the name in the type parameters + a) type parameters in this type (but not outer or base types) + Returns all members of that name, or empty list if none. + + + + + A NamedTypeBinder provides the context for a type symbol; e.g., looking up names + inside the type. + + + + + Some nodes have special binder's for their contents + + + + + Gets all symbols of the particular name as + a) members of this type + b) members of base types + c) type parameters in this type (but not outer or base types) + In that order. + + Note, that section "11.4.4 Simple Name Expression" of VB Language spec + implies that type parameters are examined first, and only then members + of the type are examined. But this is inconsistent with Dev10 behavior. + + Returns all members of that name, or empty list if none. + + + + + Collect extension methods with the given name that are in scope in this binder. + The passed in ArrayBuilder must be empty. Extension methods from the same containing type + must be grouped together. + + + + + A namespace binder provides the context for a namespace symbol; e.g., looking up names + inside the namespace. + + + + + Collect extension methods with the given name that are in scope in this binder. + The passed in ArrayBuilder must be empty. Extension methods from the same containing type + must be grouped together. + + + + + A ProjectImportsBinder provides the equivalent of a SourceFileBinder, but for the project-level + imports, which don't live in any file. + It primarily provides the services of getting locations of nodes, since it holds onto a SyntaxTree, although + that tree isn't technically a source tree. + + + + + Returns True for + + + + + A SourceFileBinder provides the context associated with a give source file, not including the + Imports statements (which have their own binders). It primarily provides the services of getting + locations of node, since it holds onto a SyntaxTree. + + + + + A source module binder provides the context associated with a source module. + + + + + Binder used for speculatively binding. + + + + + Allows asking semantic questions about a TypeSyntax or RangeArgumentSyntax node within a member, that did not appear in the original source code. + Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. + + + + + Creates a speculative SemanticModel for a TypeSyntax or a RangeArgumentSyntax node at a position within an existing MemberSemanticModel. + + + + + Provides context for binding statements in speculative code. + + + + + Create binder for binding statements in speculative code. + + + + + A SubOrFunctionBodyBinder provides context for looking up parameters/labels in a body of an executable entity (a method, lambda, or top-level script code), + and also for the implementation of ContainingMember, GetLocalForFunctionValue and GetBinder. + + + + + This is used while computing the values of constant symbols. Since they can depend on each other, + we need to keep track of which ones we are currently computing in order to avoid (and report) cycles. + + + + + Manages anonymous types and delegates created on module level. All requests + for anonymous type/delegate symbols go via the instance of this class. + + Manager also is in charge of creating implementation types which are used in + emit phase to substitute anonymous type/delegate public symbols. + + + + + Builds a condition in the following form: + + [preaction: localMyFieldBoxed = DirectCast(Me.field, System.Object)] + [preaction: localOtherFieldBoxed = DirectCast(Other.field, System.Object)] + IF(localMyFieldBoxed IsNot Nothing AndAlso localOtherFieldBoxed IsNot Nothing, + localMyFieldBoxed.Equals(localOtherFieldBoxed), + localMyFieldBoxed Is localOtherFieldBoxed + ) + + + + Source module + + + Owning compilationSource module + + + + Given anonymous type descriptor provided construct an anonymous type symbol + + + + + Given anonymous delegate descriptor provided, construct an anonymous delegate symbol + + + + Cache of created anonymous types + + + Cache of created anonymous delegates + + + + Given anonymous type public symbol construct an anonymous type symbol to be used + in emit; the type symbol is created based on generic type generated for each + 'unique' anonymous type structure. + + + + + Given anonymous delegate public symbol construct an anonymous type symbol to be + used in emit; the type symbol may be created based on generic type generated for + each 'unique' anonymous delegate structure OR if the delegate's signature is + 'Sub()' it will be an instance of NonGenericAnonymousDelegateSymbol type. + + + + + Resets numbering in anonymous type names and compiles the + anonymous type methods. Also seals the collection of templates. + + + + + Translates anonymous type public symbol into an implementation type symbol to be used in emit. + + + + + Translates anonymous type method symbol into an implementation method symbol to be used in emit. + + + + Returns all templates owned by this type manager + + + + Checks if all special and well-known symbols required for emitting anonymous types + provided exist, if not reports errors and returns True. + + + + + Force all declaration errors to be generated. + + + + + Map an anonymous type or delegate public symbol to an implementation symbol to be + used in emit. + + NOTE: All anonymous types/delegated (except for delegate with signature 'Sub()') with the + same set of fields/parameters (field names and IsKey flags are taken into account) are + generated based on the same generic type template. + + + + + Map an anonymous type or delegate's method symbol to an implementation method symbol to be used in emit + + + + + Map an anonymous type or delegate's method symbol to a substituted method symbol. + + + + Index of the property in the containing anonymous type + + + + This is a symbol to represent Anonymous Delegate for a lambda + like: + Sub() ... + + This delegate type doesn't have generic parameters. Unlike generic anonymous types, + for which we are constructing new instance of substituted symbol for each use site + with reference to the location, we are creating new instance of this symbol with its + own location for each use site. But all of them are representing the same delegate + type and are going to be equal to each other. + + + + + The name used to emit definition of the type. Will be set when the type's + metadata is ready to be emitted, Name property will throw exception if this field + is queried before that moment because the name is not defined yet. + + + + + The key of the anonymous type descriptor used for this type template + + + + Describes the type descriptor location and property/parameter names associated with this location + + + + In emit phase every time a created anonymous type is referenced we try to adjust name of + template's fields as well as store the lowest location of the template. The last one will + be used for ordering templates and assigning emitted type names. + + + + + Force all declaration errors to be generated. + + + + Index of the property in the containing anonymous type + + + + This class represents a compiler generated parameterless constructor + + + + + Initializes a new instance of the class. + + + The containing type for the synthesized constructor. + if set to true if this is a shared constructor. + if set to true if this constructor will include debuggable initializers. + Binder to be used for error reporting, or Nothing. + Diagnostic bag, or Nothing. + + + + The parameters forming part of this signature. + + + + + This class represents a simple customizable hash method to hash the string constants + corresponding to the case clause string constants. + If we have at least one string type select case statement in a module that needs a + hash table based jump table, we generate a single public string hash synthesized + method (SynthesizedStringSwitchHashMethod) that is shared across the module. + We must emit this function into the compiler generated PrivateImplementationDetails class. + + + + + Compute the hashcode of a sub string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + This method should be kept consistent with MethodBodySynthesizer.ConstructStringSwitchHashFunctionBody + The control flow in this method mimics lowered "for" loop. It is exactly what we want to emit + to ensure that JIT can do range check hoisting. + + + + + Construct a body for String Switch Hash Function + + + This method should be kept consistent with ComputeStringHash + + + + + The parameters forming part of this signature. + + + + + A Declaration summarizes the declaration structure of a source file. Each entity declaration + in the program that is a container (specifically namespaces, classes, interfaces, structs, + and delegate declarations) is represented by a node in this tree. At the top level, the + compilation unit is treated as a declaration of the unnamed namespace. + + Special treatment is required for namespace declarations, because a single namespace + declaration can declare more than one namespace. For example, in the declaration + +namespace A.B.C {} + +we see that namespaces A and B and C are declared. This declaration is represented as three + declarations. All three of these ContainerDeclaration objects contain a reference to the + syntax tree for the declaration. + + A "single" declaration represents a specific namespace or type declaration at a point in + source code. A "root" declaration is a special single declaration which summarizes the + contents of an entire file's types and namespaces. Each source file is represented as a tree + of single declarations. + + A "merged" declaration merges together one or more declarations for the same symbol. For + example, the root namespace has multiple single declarations (one in each source file) but + there is a single merged declaration for them all. Similarly partial classes may have + multiple declarations, grouped together under the umbrella of a merged declaration. In the + common trivial case, a merged declaration for a single declaration contains only that single + declaration. The whole program, consisting of the set of all declarations in all of the + source files, is represented by a tree of merged declarations.''' + + + + + A declaration table is a device which keeps track of type and namespace declarations from + parse trees. It is optimized for the case where there is one set of declarations that stays + constant, and a specific root namespace declaration corresponding to the currently edited + file which is being added and removed repeatedly. It maintains a cache of information for + "merging" the root declarations into one big summary declaration; this cache is efficiently + re-used provided that the pattern of adds and removes is as we expect. + + + + + A wrapper around RootSingleNamespaceDeclaration. The namespace declaration + is evaluated lazily to avoid evaluating the namespace and associated SyntaxTree + for embedded syntax trees before we can determine whether the syntax tree is needed. + + + + + Pool of builders used to create our member name sets. Importantly, these use + so that name lookup happens in an + appropriate manner for VB identifiers. This allows fast member name O(log(n)) even if + the casing doesn't match. + + + + + Represents global namespace. Namespace's name is always empty + + + + + + This function is used to determine the best name of a type or namespace when there are multiple declarations that + have the same name but with different spellings. + If this declaration is part of the rootnamespace (specified by /rootnamespace:<nsname> this is considered the best name. + Otherwise the best name of a type or namespace is the one that String.Compare considers to be less using a Ordinal. + In practice this prefers uppercased or camelcased identifiers. + + + The single declarations. + Set to true if there were multiple distinct spellings. + + + + This function is used to determine the best name of a type or namespace when there are multiple declarations that + have the same name but with different spellings. + If this declaration is part of the rootnamespace (specified by /rootnamespace:<nsname> this is considered the best name. + Otherwise the best name of a type or namespace is the one that String.Compare considers to be less using a Ordinal. + In practice this prefers uppercased or camelcased identifiers. + + + The single declarations. + Set to true if there were multiple distinct spellings. + + + + An ArrayTypeSymbol represents an array type, such as Integer() or Object(,). + + + + + Create a new ArrayTypeSymbol. + + + + + Create a new ArrayTypeSymbol. + + + + + Returns the list of custom modifiers, if any, associated with the array. + + + + + Returns the number of dimensions of this array. A regular single-dimensional array + has rank 1, a two-dimensional array has rank 2, etc. + + + + + Is this a zero-based one-dimensional array, i.e. SZArray in CLR terms. + + + + + Specified sizes for dimensions, by position. The length can be less than , + meaning that some trailing dimensions don't have the size specified. + The most common case is none of the dimensions have the size specified - an empty array is returned. + + + + + Specified lower bounds for dimensions, by position. The length can be less than , + meaning that some trailing dimensions don't have the lower bound specified. + The most common case is all dimensions are zero bound - a default (Nothing) array is returned in this case. + + + + + Note, equality should be checked separately!!! + + + + + Normally VB arrays have default sizes and lower bounds - sizes are not specified and all dimensions are zero bound. + This property should return false for any deviations. + + + + + Returns the type of the elements that are stored in this array. + + + + + Returns true if this type is known to be a reference type. It is never the case + that and both return true. However, for an unconstrained + type parameter, and will both return false. + + True + + + + Returns true if this type is known to be a value type. It is never the case + that and both return true. However, for an unconstrained + type parameter, and will both return false. + + False + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types that have a particular name, and any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types that have a particular name and arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns Nothing. + + + + Returns of the symbol. + + + + + + Returns of the symbol. + + + + + + Get the symbol that logically contains this symbol. + + Nothing + + + + Gets the locations where this symbol was originally defined, either in source + or metadata. Some symbols (for example, partial classes) may be defined in more + than one location. + + + + + Get the syntax node(s) where this symbol was declared in source. + + + An empty read-only array. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Represents SZARRAY - zero-based one-dimensional array + + + + + Represents MDARRAY - multi-dimensional array (possibly of rank 1) + + + + + Represents an attribute applied to a Symbol. + + + + + Gets the attribute class being applied. + + + + + Gets the constructor used in this application of the attribute. + + + + + Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. + + + + + Gets the list of constructor arguments specified by this application of the attribute. This list contains both positional arguments + and named arguments that are formal parameters to the constructor. + + + + + Gets the list of named field or property value arguments specified by this application of the attribute. + + + + + Compares the namespace and type name with the attribute's namespace and type name. Returns true if they are the same. + + + + + Checks if an applied attribute with the given attributeType matches the namespace name and type name of the given early attribute's description + and the attribute description has a signature with parameter count equal to the given attribute syntax's argument list count. + NOTE: We don't allow early decoded attributes to have optional parameters. + + + + + Returns the that represents the current AttributeData. + + A that represents the current AttributeData. + + + + Gets the attribute class being applied as an + + + + + Gets the constructor used in this application of the attribute as an . + + + + + Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. + + + + + Decodes PermissionSetAttribute applied in source to determine if it needs any fixup during codegen. + + + PermissionSetAttribute needs fixup when it contains an assignment to the 'File' property as a single named attribute argument. + Fixup performed is ported from SecurityAttributes::FixUpPermissionSetAttribute. + It involves following steps: + 1) Verifying that the specified file name resolves to a valid path. + 2) Reading the contents of the file into a byte array. + 3) Convert each byte in the file content into two bytes containing hexa-decimal characters. + 4) Replacing the 'File = fileName' named argument with 'Hex = hexFileContent' argument, where hexFileContent is the converted output from step 3) above. + + Step 1) is performed in this method, i.e. during binding. + Remaining steps are performed during serialization as we want to avoid retaining the entire file contents throughout the binding/codegen pass. + See for remaining fixup steps. + + String containing the resolved file path if PermissionSetAttribute needs fixup during codegen, null otherwise. + + + + This method determines if an applied attribute must be emitted. + Some attributes appear in symbol model to reflect the source code, but should not be emitted. + + + + + Represents a custom modifier (modopt/modreq). + + + + + A type used as a tag that indicates which type of modification applies. + + + + + Represents an event. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + True if the event itself Is excluded from code coverage instrumentation. + True for source events marked with . + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Gets the attributes on event's associated field, if any. + + Returns an array of or an empty array if there are no attributes. + + + + Backing field of the event, or Nothing if the event doesn't have any. + + + Events imported from metadata return Nothing. + + + + + Gets the parameters of this event. If this event has no parameters, returns + an empty list. + + + + + Gets the return type of the event (typically System.Void). + + + + + Can be null in error cases. + + + + + Implements visitor pattern. + + + + + Is this an event of a tuple type? + + + + + If this is an event of a tuple type, return corresponding underlying event from the + tuple underlying type. Otherwise, Nothing. + + + + + Represents a member variable -- a variable declared as a member of a Class or Structure. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Gets the type of this variable. + + + + + Gets a value indicating whether this instance has declared type. This means a field was declared with an AsClause + or in case of const fields with an AsClause whose type is not System.Object + + + true if this instance has declared type; otherwise, false. + + + + + The list of custom modifiers, if any, associated with the member variable. + + + + + If this variable serves as a backing variable for an automatically generated + property or event, returns that property or event. + Otherwise returns Nothing. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns true if this variable was declared as ReadOnly + + + + + Returns true if this field was declared as "const" (i.e. is a constant declaration), or + is an Enum member. + + + + + Gets a value indicating whether this instance is metadata constant. A field is considered to be + metadata constant if the field value is a valid default value for a field. + + + true if this instance is metadata constant; otherwise, false. + + + + + Gets a value indicating whether this instance is const, but not metadata constant. A field is considered to be + const but not metadata constant if the const field's type is either Date or Decimal. + + + true if this instance is metadata constant; otherwise, false. + + + + + Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + If IsConst returns true, then returns the value of the constant or Enum member. + If IsConst return false, then returns Nothing. + + + + + Gets the constant value. + + Used to detect dependencies between constant field values. + + + + Const fields do not (always) have to be declared with a given type. To get the inferred type determined from + the initialization this method should be called instead of "Type". For non const field this method returns the + declared type. + + Used to detect dependencies between constant field values. + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + True if RuntimeSpecialName metadata flag is set for this symbol. + + + + + True if NotSerialized metadata flag is set for this symbol. + + + + + Describes how the field is marshalled when passed to native code. + Null if no specific marshalling information is available for the field. + + PE symbols don't provide this information and always return Nothing. + + + + Returns the marshalling type of this field, or 0 if marshalling information isn't available. + + + By default this information is extracted from if available. + Since the compiler does only need to know the marshalling type of symbols that aren't emitted + PE symbols just decode the type from metadata and don't provide full marshalling information. + + + + + Offset assigned to the field when the containing type is laid out by the VM. + Nothing if unspecified. + + + + + Get the "this" parameter for this field. This is only valid for source fields. + + + + + Returns true when field is a backing field for a captured frame pointer (typically "Me"). + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Is this a field of a tuple type? + + + + + Returns True when field symbol is not mapped directly to a field in the underlying tuple struct. + + + + + Returns true if this is a field representing a Default element like Item1, Item2... + + + + + If this is a field of a tuple type, return corresponding underlying field from the + tuple underlying type. Otherwise, Nothing. In case of a malformed underlying type + the corresponding underlying field might be missing, return Nothing in this case too. + + + + + If this field represents a tuple element, returns a corresponding default element field. + Otherwise returns Nothing + + + + + If this is a field representing a tuple element, + returns the index of the element (zero-based). + Otherwise returns -1 + + + + + This method indicates whether or not the runtime will regard the method + as newslot (as indicated by the presence of the "newslot" modifier in the + signature). + WARN WARN WARN: We won't have a final value for this until declaration + diagnostics have been computed for all s, + so pass ignoringInterfaceImplementationChanges: True if you need a value sooner + and aren't concerned about tweaks made to satisfy interface implementation + requirements. + NOTE: Not ignoring changes can only result in a value that is more true. + + + + + Gets what kind of method this is. There are several different kinds of things in the + VB language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + True, if the method kind was determined by examining a syntax node (i.e. for source methods - + including substituted and retargeted ones); false, otherwise. + + + + + Returns whether this method is using VARARG calling convention. + + + + + Returns whether this built-in operator checks for integer overflow. + + + + + Returns whether this method is generic; i.e., does it have any type parameters? + + + + + Returns the arity of this method, or the number of type parameters it takes. + A non-generic method has zero arity. + + + + + Get the type parameters on this method. If the method has not generic, + returns an empty list. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Returns the method symbol that this method was constructed from. This method symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Always returns false because the 'readonly members' feature is not available in VB. + + + + + Returns true if this method has no return type; i.e., is a Sub instead of a Function. + + + + + Source: Returns whether this method is async; i.e., does it have the Async modifier? + Metadata: Returns False; methods from metadata cannot be async. + + + + + Source: Returns whether this method is an iterator; i.e., does it have the Iterator modifier? + Metadata: Returns False; methods from metadata cannot be an iterator. + + + + + Indicates whether the accessor is marked with the 'init' modifier. + + + + + Source: Returns False; methods from source cannot return by reference. + Metadata: Returns whether or not this method returns by reference. + + + + + Gets the return type of the method. If the method is a Sub, returns + the same type symbol as is returned by Compilation.VoidType. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. + + + + + Custom modifiers associated with the ref modifier, or an empty array if there are none. + + + + + Returns the list of attributes, if any, associated with the return type. + + + + + Build and add synthesized return type attributes for this method symbol. + + + + + Optimization: in many cases, the parameter count (fast) is sufficient and we + don't need the actual parameter symbols (slow). + + + The default implementation is always correct, but may be unnecessarily slow. + + + + + Gets the parameters of this method. If this method has no parameters, returns + an empty list. + + + + + Should return syntax node that originated the method. + + + + + Returns true if calls to this method are omitted in the given syntax tree at the given syntax node location. + Calls are omitted when the called method is a partial method with no implementation part, or when the + called method is a conditional method whose condition is not true at the given syntax node location in the source file + corresponding to the given syntax tree. + + + + + Calls are conditionally omitted if all the following requirements are true: + (a) Me.IsSub == True. + (b) Containing type is not an interface type. + (c) Me.IsConditional == True, i.e. it has at least one applied conditional attribute. + (d) This method is not the Property Set method. + (e) None of conditional symbols corresponding to these conditional attributes are true at the given syntax node location. + + + Forces binding and decoding of attributes. + + + + + Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. + + + + + Returns a flag indicating whether this symbol has at least one applied conditional attribute. + + + Forces binding and decoding of attributes. + NOTE: Conditional symbols on the overridden method must be inherited by the overriding method, but the native VB compiler doesn't do so. We maintain compatibility. + + + + + True if the method itself Is excluded from code coverage instrumentation. + True for source methods marked with . + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + This is set for methods with special semantics such as constructors or accessors + as well as in special synthetic methods such as lambdas. + Also set for methods marked with System.Runtime.CompilerServices.SpecialNameAttribute. + + + + + If this method has MethodKind of MethodKind.PropertyGet or MethodKind.PropertySet, + returns the property that this method is the getter or setter for. + If this method has MethodKind of MethodKind.EventAdd or MethodKind.EventRemove, + returns the event that this method is the adder or remover for. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + If this method is a Lambda method (MethodKind = MethodKind.LambdaMethod) and + there is an anonymous delegate associated with it, returns this delegate. + + Returns Nothing if the symbol is not a lambda or if it does not have an + anonymous delegate associated with it. + + + + + If this method overrides another method (because it both had the Overrides modifier + and there correctly was a method to override), returns the overridden method. + + + + + Returns interface methods explicitly implemented by this method. + + + + + Returns true if this method is not implemented in IL of the assembly it is defined in. + + + External methods are + 1) Declare Subs and Declare Functions, + 2) methods marked by , + 3) methods marked by + with or + flags. + 4) Synthesized constructors of ComImport types + + + + + Returns platform invocation information for this method if it is a PlatformInvoke method, otherwise returns Nothing. + + + + + Marshalling information for return value (FieldMarshal in metadata). + + + + + Misc implementation metadata flags (ImplFlags in metadata). + + + + + Declaration security information associated with this method, or null if there is none. + + + + + True if the method has declarative security information (HasSecurity flags). + + + + + Returns true if this method is an extension method from the VB language perspective; + i.e., declared with an Extension attribute and meets other language requirements. + + + + + Returns true if this method might be a reducible extension method. This method may return true + even if the method is not an extension method, but if it returns false, it must be the + case that this is not an extension method. + + Allows checking extension methods from source in a quicker manner than fully binding attributes. + + + + + Returns true if this method hides a base method by name and signature. + The equivalent of the "hidebysig" flag in metadata. + + + This property should not be confused with general method overloading in Visual Basic, and is not directly related. + This property will only return true if this method hides a base method by name and signature (Overloads keyword). + + + + + True if the implementation of this method is supplied by the runtime. + + + implies . + + + + + Determines whether this method is a candidate for a default + assembly entry point. Any method called "Main" is. + + True if the method can be used as an entry point. + + + + Entry point is considered accessible if it is not private and none of the containing types is private (they all might be Family or Friend). + + + + + Checks if the method has an entry point compatible signature, i.e. + - the return type is either void or int + - has either no parameter or a single parameter of type string[] + + + + Checks for validity of Construct(...) on this method with these type arguments. + + + + Call and throw if it returns false. + + + + + + True if this type supports retrieving the Me parameter + and false otherwise. Note that a return value of true does not guarantee a non-Nothing + (e.g. fails for shared methods). + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + If this method is a reduced extension method, gets the extension method definition that + this method was reduced from. Otherwise, returns Nothing. + + + + + Is this a reduced extension method? + + + + + If this method is a reduced extension method, gets the extension method (possibly constructed) that + should be used at call site during ILGen. Otherwise, returns Nothing. + + + + + If this method can be applied to an object, returns the type of object it is applied to. + + + + + If this method is a reduced extension method, returns a type inferred during reduction process for the type parameter. + + Type parameter of the corresponding method. + Inferred type or Nothing if nothing was inferred. + If this is not a reduced extension method. + If is Nothing. + If doesn't belong to the corresponding method. + + + + Fixed type parameters for a reduced extension method or empty. + + + + + If this is an extension method that can be applied to a instance of the given type, + returns the reduced method symbol thus formed. Otherwise, returns Nothing. + + Name lookup should use this method in order to capture proximity, which affects + overload resolution. + + + + + If this is an extension method that can be applied to a instance of the given type, + returns the reduced method symbol thus formed. Otherwise, returns Nothing. + + + + + Proximity level of a reduced extension method. + + + + + Returns bound block representing method's body. This method is called + by 'method compiler' when it is ready to emit IL code for the method. + + The bound method body is typically a high-level tree - it may contain + lambdas, foreach etc... which will be processed in CompileMethod(...) + + Enables synthesized methods to create instances. + Optionally returns a binder, OUT parameter! + + The method MAY return a binder used for binding so it can be reused later in method compiler + + + + + True iff the method contains user code. + + + + + Calculates a syntax offset for a local (user-defined or long-lived synthesized) declared at . + Must be implemented by all methods that may contain user code. + + + Syntax offset is a unique identifier for the local within the emitted method body. + It's based on position of the local declarator. In single-part method bodies it's simply the distance + from the start of the method body syntax span. If a method body has multiple parts (such as a constructor + comprising of code for member initializers and constructor initializer calls) the offset is calculated + as if all source these parts were concatenated together and prepended to the constructor body. + The resulting syntax offset is then negative for locals defined outside of the constructor body. + + + + + Specifies whether existing, "unused" locals (corresponding to proxies) are preserved during lambda rewriting. + + + This value will be checked by the and is needed so that existing locals aren't + omitted in the EE (method symbols in the EE will override this property to return True). + + + + + Is this a method of a tuple type? + + + + + If this is a method of a tuple type, return corresponding underlying method from the + tuple underlying type. Otherwise, Nothing. + + + + + Returns true if this symbol is defined outside of the compilation. + For instance if the method is Declare Sub. + + + + + If this is a partial method declaration without a body, and the method also + has a part that implements it with a body, returns that implementing + definition. Otherwise null. + + + + + If this is a partial method with a body, returns the corresponding + definition part (without a body). Otherwise null. + + + + + Represents a type other than an array, a type parameter. + + + + + Should return Nothing if there are none. + + + + + Returns the arity of this type, or the number of type parameters it takes. + A non-generic type has zero arity. + + + + + Returns the type parameters that this type has. If this is a non-generic type, + returns an empty ImmutableArray. + + + + + Returns custom modifiers for the type argument that has been substituted for the type parameter. + The modifiers correspond to the type argument at the same ordinal within the + array. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Returns the type symbol that this type was constructed from. This type symbol + has the same containing type, but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + For implicitly declared delegate types returns the EventSymbol that caused this + delegate type to be generated. + For all other types returns null. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns True for one of the types from a set of Structure types if + that set represents a cycle. This property is intended for flow + analysis only since it is only implemented for source types, + and only returns True for one of the types within a cycle, not all. + + + + + Is this a NoPia local type explicitly declared in source, i.e. + top level type with a TypeIdentifier attribute on it? + + + + + Returns true and a string from the first GuidAttribute on the type, + the string might be null or an invalid guid representation. False, + if there is no GuidAttribute with string argument. + + + + + True if the type itself Is excluded from code coverage instrumentation. + True for source types marked with . + + + + + Should the name returned by Name property be mangled with [`arity] suffix in order to get metadata name. + Must return False for a type with Arity == 0. + + + Default implementation to force consideration of appropriate implementation for each new subclass + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + True if this type is considered serializable (metadata flag Serializable is set). + + + + + Type layout information (ClassLayout metadata and layout kind flags). + + + + + The default charset used for type marshalling. + Can be changed via applied on the containing module. + + + + + Marshalling charset of string data fields within the type (string formatting flags in metadata). + + + + + For delegate types, gets the delegate's invoke method. Returns null on + all other kinds of types. Note that it is possible to have an ill-formed + delegate type imported from metadata which does not have an Invoke method. + Such a type will be classified as a delegate but its DelegateInvokeMethod + would be null. + + + + + Returns true if this type was declared as requiring a derived class; + i.e., declared with the "MustInherit" modifier. Always true for interfaces. + + + + + Returns true if this type does not allow derived types; i.e., declared + with the NotInheritable modifier, or else declared as a Module, Structure, + Enum, or Delegate. + + + + + If this property returns false, it is certain that there are no extension + methods inside this type. If this property returns true, it is highly likely + (but not certain) that this type contains extension methods. This property allows + the search for extension methods to be narrowed much more quickly. + + !!! Note that this property can mutate during lifetime of the symbol !!! + !!! from True to False, as we learn more about the type. !!! + + + + + Returns True if the type is marked by 'Microsoft.CodeAnalysis.Embedded' attribute. + + + + + Returns True if the type is marked by 'Microsoft.VisualBasic.Embedded' attribute. + + + + + A Named type is an extensible interface if both the following are true: + (a) It is an interface type and + (b) It is either marked with 'TypeLibTypeAttribute( flags w/o TypeLibTypeFlags.FNonExtensible )' attribute OR + is marked with 'InterfaceTypeAttribute( flags with ComInterfaceType.InterfaceIsIDispatch )' attribute OR + inherits from an extensible interface type. + Member resolution for Extensible interfaces is late bound, i.e. members are resolved at run time by looking up the identifier on the actual run-time type of the expression. + + + + + This method is an entry point for the Binder to collect extension methods with the given name + declared within this named type. Overridden by RetargetingNamedTypeSymbol. + + + + + This method is called for a type within a namespace when we are building a map of extension methods + for the whole (compilation merged or module level) namespace. + + The 'appendThrough' parameter allows RetargetingNamespaceSymbol to delegate majority of the work + to the underlying named type symbols, but still add RetargetingMethodSymbols to the map. + + + + + This is an entry point for the Binder. Its purpose is to add names of viable extension methods declared + in this type to nameSet parameter. + + + + + Add names of viable extension methods declared in this type to nameSet parameter. + + The 'appendThrough' parameter allows RetargetingNamedTypeSymbol to delegate majority of the work + to the underlying named type symbol, but still perform viability check on RetargetingMethodSymbol. + + + + + Get the instance constructors for this type. + + + + + Get the shared constructors for this type. + + + + + Get the instance and shared constructors for this type. + + + + + Returns true if this type is known to be a reference type. It is never the case + that IsReferenceType and IsValueType both return true. However, for an unconstrained + type parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case + that IsReferenceType and IsValueType both return true. However, for an unconstrained + type parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns True if this types has Arity >= 1 and Construct can be called. This is primarily useful + when deal with error cases. + + + + + Returns a constructed type given its type arguments. + + + + + Returns a constructed type given its type arguments. + + + + + Construct a new type from this type, substituting the given type arguments for the + type parameters. This method should only be called if this named type does not have + any substitutions applied for its own type arguments with exception of alpha-rename + substitution (although it's container might have substitutions applied). + + A set of type arguments to be applied. Must have the same length + as the number of type parameters that this type has. + + + Checks for validity of Construct(...) on this type with these type arguments. + + + + Construct a new type from this type definition, substituting the given type arguments for the + type parameters. This method should only be called on the OriginalDefinition. Unlike previous + Construct method, this overload supports type parameter substitution on this type and any number + of its containing types. See comments for TypeSubstitution type for more information. + + + + + Returns an unbound generic type of this generic named type. + + + + + Returns Default property name for the type. + If there is no default property name, then Nothing is returned. + + + + + If this is a generic type instantiation or a nested type of a generic type instantiation, + return TypeSubstitution for this construction. Nothing otherwise. + Returned TypeSubstitution should target OriginalDefinition of the symbol. + + + + + Gets the name of this symbol. + + + + + Collection of names of members declared within this type. + + + + + Returns true if the type is a Script class. + It might be an interactive submission class or a Script class in a csx file. + + + + + Returns true if the type is a submission class. + + + + + Returns true if the type is the implicit class that holds onto invalid global members (like methods or + statements in a non script file). + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types that have a particular name, and any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types that have a particular name and arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get this accessibility that was declared on this symbol. For symbols that do + not have accessibility declared on them, returns NotApplicable. + + + + + Supports visitor pattern. + + + + + Gets the kind of this symbol. + + + + + Returns a flag indicating whether this symbol is ComImport. + + + A type can me marked as a ComImport type in source by applying the + + + + + If CoClassAttribute was applied to the type returns the type symbol for the argument. + Type symbol may be an error type if the type was not found. Otherwise returns Nothing + + + + + Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. + + + + + Returns a flag indicating whether this symbol has at least one applied conditional attribute. + + + Forces binding and decoding of attributes. + NOTE: Conditional symbols on base type must be inherited by derived type, but the native VB compiler doesn't do so. We maintain compatibility. + + + + + Gets the associated for an attribute type. + + + + + Declaration security information associated with this type, or null if there is none. + + + + + True if the type has declarative security information (HasSecurity flags). + + + + + NamedTypeSymbol calls derived implementations of this method when declared base type + is needed for the first time. + + basesBeingResolved are passed if there are any types already have their bases resolved + so that the derived implementation could avoid infinite recursion + + + + + NamedTypeSymbol calls derived implementations of this method when declared interfaces + are needed for the first time. + + basesBeingResolved are passed if there are any types already have their bases resolved + so that the derived implementation could avoid infinite recursion + + + + + Base type as "declared". + Declared base type may contain circularities. + + If DeclaredBase must be accessed while other DeclaredBases are being resolved, + the bases that are being resolved must be specified here to prevent potential infinite recursion. + + + + + Interfaces as "declared". + Declared interfaces may contain circularities. + + If DeclaredInterfaces must be accessed while other DeclaredInterfaces are being resolved, + the bases that are being resolved must be specified here to prevent potential infinite recursion. + + + + + NamedTypeSymbol calls derived implementations of this method when acyclic base type + is needed for the first time. + This method typically calls GetDeclaredBase, filters for + illegal cycles and other conditions before returning result as acyclic. + + + + + NamedTypeSymbol calls derived implementations of this method when acyclic base interfaces + are needed for the first time. + This method typically calls GetDeclaredInterfaces, filters for + illegal cycles and other conditions before returning result as acyclic. + + + + + Base type. + Could be Nothing for Interfaces or Object. + + + + + Interfaces that are implemented or inherited (if current type is interface itself). + + + + + Returns declared base type or actual base type if already known + This is only used by cycle detection code so that it can observe when cycles are broken + while not forcing actual Base to be realized. + + + + + Returns declared interfaces or actual Interfaces if already known + This is only used by cycle detection code so that it can observe when cycles are broken + while not forcing actual Interfaces to be realized. + + + + + True if and only if this type or some containing type has type parameters. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Should return full emitted namespace name for a top level type if the name + might be different in case from containing namespace symbol full name, Nothing otherwise. + + + + + Does this type implement all the members of the given interface. Does not include members + of interfaces that iface inherits, only direct members. + + + + + True if this is a reference to an unbound generic type. These occur only + within a GetType expression. A generic type is considered unbound + if all of the type argument lists in its fully qualified name are empty. + Note that the type arguments of an unbound generic type will be returned as error + types because they do not really have type arguments. An unbound generic type + yields null for its BaseType and an empty result for its Interfaces. + + + + + Force all declaration errors to be generated. + + + + + Return compiler generated nested types that are created at Declare phase, but not exposed through GetMembers and the like APIs. + Should return Nothing if there are no such types. + + + + + True if the type is a Windows runtime type. + + + A type can me marked as a Windows runtime type in source by applying the WindowsRuntimeImportAttribute. + WindowsRuntimeImportAttribute is a pseudo custom attribute defined as an internal class in System.Runtime.InteropServices.WindowsRuntime namespace. + This is needed to mark Windows runtime types which are redefined in mscorlib.dll and System.Runtime.WindowsRuntime.dll. + These two assemblies are special as they implement the CLR's support for WinRT. + + + + + True if the type should have its WinRT interfaces projected onto .NET types and + have missing .NET interface members added to the type. + + + + + Requires less computation than == . + + + Metadata types need to compute their base types in order to know their TypeKinds, And that can lead + to cycles if base types are already being computed. + + True if this Is an interface type. + + + + Get synthesized WithEvents overrides that aren't returned by + + + + + Verify if the given type can be used to back a tuple type + and return cardinality of that tuple type in . + + If method returns true, contains cardinality of the compatible tuple type. + + + + + Represents a namespace. + + + + + Get all the members of this symbol that are namespaces. + + An ImmutableArray containing all the namespaces that are members of this symbol. If this symbol has no namespace members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are modules. + + An ImmutableArray containing all the types that are members of this namespace. If this namespace has no module members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are modules that have a particular name + + An ImmutableArray containing all the modules that are members of this namespace with the given name. + If this symbol has no modules with this name, + returns an empty ImmutableArray. Never returns Nothing. + + + + Returns whether this namespace is the unnamed, global namespace that is + at the root of all namespaces. + + + + + The kind of namespace: Module, Assembly or Compilation. + Module namespaces contain only members from the containing module that share the same namespace name. + Assembly namespaces contain members for all modules in the containing assembly that share the same namespace name. + Compilation namespaces contain all members, from source or referenced metadata (assemblies and modules) that share the same namespace name. + + + + + The containing compilation for compilation namespaces. + + + + + If a namespace has Assembly or Compilation extent, it may be composed of multiple + namespaces that are merged together. If so, ConstituentNamespaces returns + all the namespaces that were merged. If this namespace was not merged, returns + an array containing only this namespace. + + + + + Containing assembly. + + + + + Containing module. + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Get this accessibility that was declared on this symbol. For symbols that do + not have accessibility declared on them, returns NotApplicable. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns declared accessibility of most accessible type within this namespace or within a containing namespace recursively. + Valid return values: + Friend, + Public, + NotApplicable - if there are no types. + + + + + Calculate declared accessibility of most accessible type within this namespace or within a containing namespace recursively. + Expected to be called at most once per namespace symbol, unless there is a race condition. + + Valid return values: + Friend, + Public, + NotApplicable - if there are no types. + + + + + Returns true if namespace contains types accessible from the target assembly. + + + + + Returns true if this symbol is "shared"; i.e., declared with the "Shared" + modifier or implicitly always shared. + + + + + Lookup a nested namespace. + + + Sequence of names for nested child namespaces. + + + Symbol for the most nested namespace, if found. Nothing + if namespace or any part of it can not be found. + + + + + + Lookup an immediately nested type referenced from metadata, names should be + compared case-sensitively. + + + Full type name possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + This is an entry point for the Binder to collect extension methods with the given name + declared within this (compilation merged or module level) namespace, so that methods + from the same type are grouped together. + + + + + This is an entry point for the Binder. Its purpose is to add names of viable extension methods declared + in this (compilation merged or module level) namespace to nameSet parameter. + + + + + Add names of viable extension methods declared in this (compilation merged or module level) + namespace to nameSet parameter. + + The 'appendThrough' parameter allows RetargetingNamespaceSymbol to delegate majority of the work + to the underlying namespace symbol, but still perform viability check on RetargetingMethodSymbol. + + + + + Populate the map with all probable extension methods declared within this namespace, so that methods from + the same type were grouped together within each bucket. + + + + + Gets all extension methods in this namespace given a method's name. + + + + + Return the set of types that should be checked for presence of extension methods in order to build + a map of extension methods for the namespace. + + + + + Populate the map with all probable extension methods in membersByName parameter. + + Returns True if an extension method was appended, False otherwise. + + + + + This method is overridden by RetargetingNamespaceSymbol and allows it to delegate majority of the work + to the underlying namespace symbol, but still retarget method symbols before they are added to the map + of extension methods. + + + + + Represents a parameter of a method or property. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Is this ByRef parameter. + + + + + Is parameter explicitly declared ByRef. Can be different from IsByRef only for + String parameters of Declare methods. + + + + + Is this Out parameter (metadata flag In is set). + + + + + Is this In parameter (metadata flag Out is set). + + + + + True if the parameter flows data out of the method. + + + + + Describes how the parameter is marshalled when passed to native code. + Null if no specific marshalling information is available for the parameter. + + PE symbols don't provide this information and always return Nothing. + + + + Returns the marshalling type of this field, or 0 if marshalling information isn't available. + + + By default this information is extracted from if available. + Since the compiler does only need to know the marshalling type of symbols that aren't emitted + PE symbols just decode the type from metadata and don't provide full marshalling information. + + + + + Gets the type of this parameter. + + + + + The list of custom modifiers, if any, associated with the parameter type. + + + + + Custom modifiers associated with the ref modifier, or an empty array if there are none. + + + + + Gets the ordinal order of this parameter. The first type parameter has ordinal zero. + + + + + Returns true if this parameter was declared as a ParamArray. + + + + + Returns true if this parameter was declared as Optional. + + + + + Returns true if the parameter explicitly specifies a default value to be passed + when no value is provided as an argument to a call. + + + True if the parameter has a default value defined in source via an optional parameter syntax, + or the parameter is from metadata and HasDefault and Optional metadata flags are set, + or the parameter is from metadata, has Optional flag set and + or is specified. + + The default value can be obtained with the property. + + + + + Returns the default value of this parameter. If + returns false, then this property throws an InvalidOperationException. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns the default value of this parameter as a ConstantValue. + Return nothing if there isn't a default value. + + + + + Create a new ParameterSymbol with everything the same except the owner. Used for property + accessor methods, for example. + + + Note: This is only implemented for those subclasses (e.g., SourceParameterSymbol) for which it + is required. Thus, the base implementation throws an exception instead of being MustOverride. + + + + + The index of the parameter which CallerArgumentExpressionAttribute points to. + + + Returns -1 if there is no valid CallerArgumentExpressionAttribute. + The situation is different for reduced extension method parameters, where a value + of -2 is returned for no valid attribute, -1 for 'Me' parameter, and the reduced index (i.e, the original index minus 1) otherwise. + + + + + Represents a property. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Source: Returns False; properties from source cannot return by reference. + Metadata: Returns whether or not this property returns by reference. + + + + + Gets the type of the property. + + + + + Returns the list of custom modifiers, if any, associated with the type of the property. + + + + + Custom modifiers associated with the ref modifier, or an empty array if there are none. + + + + + Gets the parameters of this property. If this property has no parameters, returns + an empty list. + + + + + Optimization: in many cases, the parameter count (fast) is sufficient and we + don't need the actual parameter symbols (slow). + + + The default implementation is always correct, but may be unnecessarily slow. + + + + + True if the property itself Is excluded from code coverage instrumentation. + True for source properties marked with . + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Returns true if this property is a default property. + + + + + Returns true if this is a read-only property; i.e., has no set accessor. + + + + + Indicates if the property can be read, which means this + type overrides OR inherits a getter for this property. + + + + + Returns true if this is a write-only property; i.e., has no get accessor. + + + + + Indicates if the property has a Set accessor. + + + + + Indicates if the property can be written into, which means this + property has a setter or it is a getter only autoproperty accessed + in a corresponding constructor or initializer. + If the setter is init-only, we also check that it is accessed in a constructor + on Me/MyBase/MyClass or is a target of a member initializer in an object member + initializer. + + + + + Gets the associated "get" method for this property. If this property + has no get accessor, returns Nothing. + + + + + Retrieves Get method for this property or 'most derived' Get method from closest + overridden property if such property exists. + + NOTE: It is not possible in VB, but possible in other languages (for example in C#) to + override read-write property and provide override only for setter, thus inheriting + getter's implementation. This method will find the Get method from the most-derived + overridden property in this case + + + + + Gets the associated "set" method for this property. If this property + has no set accessor, returns Nothing. + + + + + Retrieves Set method for this property or 'most derived' Set method from closest + overridden property if such property exists. + + NOTE: It is not possible in VB, but possible in other languages (for example in C#) to + override read-write property and provide override only for getter, thus inheriting + setter's implementation. This method will find the Set method from the most-derived + overridden property in this case + + + + + Backing field of the property, or Nothing if the property doesn't have any. + + + Properties imported from metadata return Nothing. + + + + + Gets the attributes on event's associated field, if any. + + Returns an array of or an empty array if there are no attributes. + + Only WithEvent property may have any attributes applied on its backing field. + + + + + Returns true if this property hides a base property by name and signature. + The equivalent of the "hidebysig" flag in metadata. + + + This property should not be confused with general property overloading in Visual Basic, and is not directly related. + This property will only return true if this method hides a base property by name and signature (Overloads keyword). + + + + + If this property overrides another property (because it both had the Overrides modifier + and there correctly was a property to override), returns the overridden property. + + + + + Helper method for accessors to get the overridden accessor methods. Should only be called by the + accessor method symbols. + + True to get overridden getters, False to get overridden setters + All the accessors of the given kind implemented by this property. + + + + Returns interface properties explicitly implemented by this property. + + + + + Get the "this" parameter for this property. This is only valid for source fields. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Returns true if this property is an auto-created WithEvents property that + takes place of a field member when the field is marked as WithEvents. + + + + + Is this a property of a tuple type? + + + + + If this is a property of a tuple type, return corresponding underlying property from the + tuple underlying type. Otherwise, Nothing. + + + + + Clone the property parameters for the accessor method. The + parameters are cloned (rather than referenced from the property) + since the ContainingSymbol needs to be set to the accessor. + + + + + Is this an auto-generated property of a group class? + + + + + Represents an assembly built by compiler. + + + + + + A Compilation the assembly is created for. + + + + + + Assembly's identity. + + + + + + A list of modules the assembly consists of. + The first (index=0) module is a SourceModuleSymbol, which is a primary module, the rest are net-modules. + + + + + Indices of duplicate assembly attributes, i.e. attributes that bind to the same constructor and have identical arguments, that must not be emitted. + + + These indices correspond to the merged assembly attributes from source and added net modules, i.e. attributes returned by method. + + + + + This override is essential - it's a base case of the recursive definition. + + + + + Gets unique source assembly attributes that should be emitted, + i.e. filters out attributes with errors and duplicate attributes. + + + + + Returns true if the assembly attribute at the given index is a duplicate assembly attribute that must not be emitted. + Duplicate assembly attributes are attributes that bind to the same constructor and have identical arguments. + + + This method must be invoked only after all the assembly attributes have been bound. + + + + + Returns a bag of netmodule assembly attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a NotOverridable method. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from source assembly attributes or null if there are none. + + + Forces binding and decoding of attributes. + TODO: We should replace methods GetSourceDecodedWellKnownAttributeData and GetNetModuleDecodedWellKnownAttributeData with + a single method GetDecodedWellKnownAttributeData, which merges DecodedWellKnownAttributeData from source and netmodule attributes. + + + + + + This represents what the user claimed in source through the AssemblyFlagsAttribute. + It may be modified as emitted due to presence or absence of the public key. + + + + + Get assembly level declaration errors. + + + + + True if internals are exposed at all. + + + Forces binding and decoding of attributes. + This property shouldn't be accessed during binding as it can lead to attribute binding cycle. + + + + + We may synthesize some well-known attributes for this assembly symbol. However, at synthesis time, it is + too late to report diagnostics or cancel the emit. Instead, we check for use site errors on the types and members + we know we'll need at synthesis time. + + + + + Represents a compiler generated field used to implement static locals. + There are two kind of fields: the one, that holds the value, and the one, that holds initialization "flag". + + + + + Represents a type parameter in a generic type or generic method. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Gets the ordinal order of this type parameter. The first type parameter has ordinal zero. + + + + + Get the types that were directly specified as constraints on this type parameter. + Duplicates and cycles are removed, although the collection may include redundant + constraints where one constraint is a base type of another. + + + + + Returns whether the parameterless constructor constraint was specified. + + + + + The method that declares this type parameter + + + + + The type that declares this type parameter + + + + + Called by ConstraintTypes and Interfaces + to allow derived classes to ensure constraints within the containing + type or method are resolved in a consistent order, regardless of the + order the callers query individual type parameters. + + + + + Helper method to force type parameter constraints to be resolved. + + + + + Get all constraints, with optional source location for each. This method + is provided for constraint checking only, and should only be invoked + for SourceTypeParameterSymbol or ErrorTypeParameterSymbol directly. + There is currently no need to invoke this method for PETypeParameterSymbol. + + + + + Resolve constraints, binding and checking for conflicts as necessary. This is an + internal method for resolving dependent sets of constraints and handling cycles. + It will be called indirectly for core implementations (SourceTypeParameterSymbol and + PETypeParameterSymbol) as a result of accessing constraint properties on this class. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + If this is a type parameter of a reduced extension method, gets the type parameter definition that + this type parameter was reduced from. Otherwise, returns Nothing. + + + + + Return an array of substituted type parameters with duplicates removed. + + + + + Symbol representing a using alias appearing in a compilation unit. + Generally speaking, these symbols do not appear in the set of symbols reachable + from the unnamed namespace declaration. In other words, when a using alias is used in a + program, it acts as a transparent alias, and the symbol to which it is an alias is used in + the symbol table. For example, in the source code +
+ Imports o = System.Object
+ Namespace NS
+     partial class C : Inherits o : End Class
+     partial class C : Inherits Object : End Class
+     partial class C : Inherits System.Object : End Class
+ End Namespace
+ 
+ 
+ all three declarations for class C are equivalent and result in the same symbol table object for C. + However, these alias symbols do appear in the results of certain SemanticModel APIs. + Specifically, for the base clause of the first of C's class declarations, the + following APIs may produce a result that contains an AliasSymbol: +
+     SemanticInfo SemanticModel.GetSemanticInfo(ExpressionSyntax expression);
+     SemanticInfo SemanticModel.BindExpression(SyntaxNode location, ExpressionSyntax expression);
+     SemanticInfo SemanticModel.BindType(SyntaxNode location, ExpressionSyntax type);
+     SemanticInfo SemanticModel.BindNamespaceOrType(SyntaxNode location, ExpressionSyntax type);
+ 
+ Also, the following are affected if container=Nothing (and, for the latter, when container=Nothing or arity=0): +
+     Public Function LookupNames(position As Integer, Optional container As NamespaceOrTypeSymbol = Nothing, Optional options As LookupOptions = LookupOptions.Default, Optional results As List(Of String) = Nothing) As IList(Of String)
+     Public Function LookupSymbols(position As Integer,
+                                  Optional container As NamespaceOrTypeSymbol = Nothing,
+                                  Optional name As String = Nothing,
+                                  Optional arity As Integer? = Nothing,
+                                  Optional options As LookupOptions = LookupOptions.Default,
+                                  Optional results As List(Of Symbol) = Nothing) As IList(Of Symbol)
+ 
+
+
+ + + The alias name. + + + + + Gets the kind of this symbol. + + + + + + Gets the for the + namespace or type referenced by the alias. + + + + + Gets the locations where this symbol was originally defined. + + + + + Get the syntax node(s) where this symbol was declared in source. + + + The syntax node(s) that declared the symbol. + + + To go the opposite direction (from syntax node to symbol), see . + + + + + Returns true if this symbol was declared to override a base class members and was + also restricted from further overriding; i.e., declared with the "NotOverridable" + modifier. Never returns true for types. + + False + + + + Returns true if this symbol was declared as requiring an override; i.e., declared + with the "MustOverride" modifier. Never returns true for types. + + False + + + + Returns true if this symbol was declared to override a base class members; i.e., declared + with the "Overrides" modifier. Still returns true if the members was declared + to override something, but (erroneously) no member to override exists. + + False + + + + Returns true if this member is overridable, has an implementation, + and does not override a base class member; i.e., declared with the "Overridable" + modifier. Does not return true for members declared as MustOverride or Overrides. + + False + + + + Returns true if this symbol is "shared"; i.e., declared with the "Shared" + modifier or implicitly always shared. + + False + + + + Get this accessibility that was declared on this symbol. For symbols that do + not have accessibility declared on them, returns NotApplicable. + + + + + + Get the symbol that logically contains this symbol. + + + Using aliases in VB are always at the top + level within a compilation unit, within the [Global] namespace declaration. We + return that as the "containing" symbol, even though the alias isn't a member of the + namespace as such. + + + + + Determines whether the specified object is equal to the current object. + + + The object to compare with the current object. + + + + + Returns a hash code for the current object. + + + + + Describes anonymous type/delegate in terms of fields/parameters + + + + Anonymous type/delegate location + + + Anonymous type fields + + + + Anonymous type descriptor Key + + The key is being used to separate anonymous type templates, for example in an anonymous type + symbol cache. The type descriptors with the same keys are supposed to map to 'the same' anonymous + type template in terms of the same generic type being used for their implementation. + + + + Anonymous type is implicitly declared + + + Anonymous delegate parameters, including one for return type + + + + This is ONLY used for debugging purpose + + + + + Performs internal substitution of types in anonymous type descriptor fields and returns True + if any of the fields was changed, in which case a new descriptor is returned in newDescriptor + + + + + Describes anonymous type field in terms of its name, type and other attributes. + Or describes anonymous delegate parameter, including "return" parameter, in terms + of its name, type and other attributes. + + + + Anonymous type field/parameter name, not nothing and not empty + + + Location of the field + + + Anonymous type field/parameter type, must be not nothing when + the field is passed to anonymous type descriptor + + + + Anonymous type field/parameter type, may be nothing when field descriptor is created, + must be assigned before passing the descriptor to anonymous type descriptor. + Once assigned, is considered to be 'sealed'. + + + + Anonymous type field is declared as a 'Key' field + + + + Does this describe a ByRef parameter of an Anonymous Delegate type + + + + + This is ONLY used for debugging purpose + + + + + Module implements Dev11 class CRC32 used in anonymous type GetHashCode implementation + See [...\Language\Shared\crc32.cpp] for details + + + + + This is actually calculating the reverse CRC + computing the reverse CRC of 0 gives the table entry above + + + + + Represents a .NET assembly. An assembly consists of one or more modules. + + + + + The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. + The value is provided by ReferenceManager and must not be modified. For SourceAssemblySymbol, non-missing + coreLibrary must match one of the referenced assemblies returned by GetReferencedAssemblySymbols() method of + the main module. If there is no existing assembly that can be used as a source for the primitive types, + the value is a Compilation.MissingCorLibrary. + + + + + The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. + The value is a MissingAssemblySymbol if none of the referenced assemblies can be used as a source for the + primitive types and the owning assembly cannot be used as the source too. Otherwise, it is one of + the referenced assemblies returned by GetReferencedAssemblySymbols() method or the owning assembly. + + + + + A helper method for ReferenceManager to set the system assembly, which provides primitive + types like Object, String, etc., e.g. mscorlib.dll. + + + + + + Simple name of the assembly. + + + This is equivalent to ., but may be + much faster to retrieve for source code assemblies, since it does not require binding the assembly-level + attributes that contain the version number and other assembly information. + + + + + True if the assembly contains interactive code. + + + + + If this symbol represents a metadata assembly returns the underlying . + + Otherwise, this returns . + + + + + Get the name of this assembly. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + + Gets a read-only list of all the modules in this assembly. (There must be at least one.) The first one is the main module + that holds the assembly manifest. + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Given a namespace symbol, returns the corresponding assembly specific namespace symbol + + + + + Does this symbol represent a missing assembly. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name with generic name mangling. + + + Take forwarded types into account. + + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. Detect cycles during lookup. + + + Full type name, possibly with generic name mangling. + + + List of assemblies lookup has already visited (since type forwarding can introduce cycles). + + + Take forwarded types into account. + + + + + Returns the type symbol for a forwarded type based its canonical CLR metadata name. + The name should refer to a non-nested type. If type with this name Is Not forwarded, + null Is returned. + + + + + Look up the given metadata type, if it Is forwarded. + + + + + Look up the given metadata type, if it is forwarded. + + + + + Lookup declaration for predefined CorLib type in this Assembly. Only valid if this + assembly is the Cor Library + + + + + + + + Register declaration of predefined CorLib type in this Assembly. + + + + + + Continue looking for declaration of predefined CorLib type in this Assembly + while symbols for new type declarations are constructed. + + + + + Figure out if the target runtime supports default interface implementation. + + + + + Return an array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by previous compilation referencing this assembly. + + + + + + Return an array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Returns true and a string from the first GuidAttribute on the assembly, + the string might be null or an invalid guid representation. False, + if there is no GuidAttribute with string argument. + + + + + An empty list means there was no IVT attribute with matching . + An IVT attribute without a public key setting is represented by an entry that is empty in the returned list + + + + + + + + Get symbol for predefined type from Cor Library used by this assembly. + + + The symbol for the pre-defined type or Nothing if the type is not defined in the core library + + + + + The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of + Error if there was no COR Library in a compilation using the assembly. + + + + + Get symbol for predefined type from Cor Library used by this assembly. + + + + + + + + Lookup a type within the assembly using its canonical CLR metadata name (names are compared case-sensitively). + + + + + Symbol for the type or null if type cannot be found or is ambiguous. + + + + + Lookup a type within the assembly using its canonical CLR metadata name (names are compared case-sensitively). + + + + If search within assembly fails, lookup in assemblies referenced by the primary module. + For source assembly, this is equivalent to all assembly references given to compilation. + + + Extra restrictions apply when searching for a well-known type. In particular, the type must be public. + + + While resolving the name, consider only types following CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). + I.e. arity is inferred from the name and matching type must have the same emitted name and arity. + + + When set, any duplicate coming from corlib is ignored. + + + In cases a type could not be found because of ambiguity, we return two of the candidates that caused the ambiguity. + + + + + + Lookup a top level type within the assembly or one of the assemblies referenced by the primary module, + names are compared case-sensitively. In case of ambiguity, type from this assembly wins, + otherwise Nothing is returned. + + + Symbol for the type or Nothing if type cannot be found or ambiguous. + + + + + If this property returns false, it is certain that there are no extension + methods (from language perspective) inside this assembly. If this property returns true, + it is highly likely (but not certain) that this type contains extension methods. + This property allows the search for extension methods to be narrowed much more quickly. + + !!! Note that this property can mutate during lifetime of the symbol !!! + !!! from True to False, as we learn more about the assembly. !!! + + + + + Lookup member declaration in predefined CorLib type used by this Assembly. + + + + + Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this + assembly is the Cor Library + + + + + Class to represent custom attributes attached to symbols. + + + + + The attribute class. + + + + + The constructor on the attribute class. + + + + + Constructor arguments on the attribute. + + + + + Named (property value) arguments on the attribute. + + + + + Matches an attribute by metadata namespace, metadata type name. Does not load the type symbol for + the attribute. + + + + True if the attribute data matches. + + + + Matches an attribute by metadata namespace, metadata type name and metadata signature. Does not load the + type symbol for the attribute. + + Attribute to match. + + An index of the target constructor signature in signatures array, + -1 if this is not the target attribute. + + Matching an attribute by name does not load the attribute class. + + + + This subclass of MetadataDecoder is specifically for finding + method symbols corresponding to method MemberRefs. The parent + implementation is unsuitable because it requires a PEMethodSymbol + for context when decoding method type parameters and no such + context is available because it is precisely what we are trying + to find. Since we know in advance that there will be no context + and that signatures decoded with this class will only be used + for comparison (when searching through the methods of a known + TypeSymbol), we can return indexed type parameters instead. + + + + + We know that we'll never have a method context because that's what we're + trying to find. Instead, just return an indexed type parameter that will + make comparison easier. + + + + + + + This override can handle non-PE types. + + + + + Search through the members of the type symbol to find the method that matches a particular signature. + + A MemberRef handle that can be used to obtain the name and signature of the method + True to only return a method. + The matching method symbol, or null if the inputs do not correspond to a valid method. + + + + Helper class to resolve metadata tokens and signatures. + + + + + Type context for resolving generic type arguments. + + + + + Method context for resolving generic method type arguments. + + + + + Lookup a type defined in referenced assembly. + + + + + Lookup a type defined in a module of a multi-module assembly. + + + + + Lookup a type defined in this module. + This method will be called only if the type we are + looking for hasn't been loaded yet. Otherwise, MetadataDecoder + would have found the type in TypeDefRowIdToTypeMap based on its + TypeDef row id. + + + + + Perform a check whether the type or at least one of its generic arguments + is defined in the specified assemblies. The check is performed recursively. + + + + + Find canonical type for NoPia embedded type. + + + Symbol for the canonical type or an ErrorTypeSymbol. Never returns null. + + + + + Represents an assembly imported from a PE. + + + + + + An Assembly object providing metadata for the assembly. + + + + + + A MetadataDocumentationProvider providing XML documentation for this assembly. + + + + + The list of contained PEModuleSymbol objects. + The list doesn't use type ReadOnlyCollection(Of PEModuleSymbol) so that we + can return it from Modules property as is. + + + + + + An array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by a compilation referencing this assembly. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + An array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Look up the assemblies to which the given metadata type Is forwarded. + + + Pass true to look up fullName case-insensitively. WARNING: more expensive. + Returns the actual casing of the matching name. + + The assemblies to which the given type Is forwarded Or null, if there isn't one. + + + The returned assemblies may also forward the type. + + + + + This is for perf, not for correctness. + + + + + The class to represent all events imported from a PE/module. + + + + + This is for perf, not for correctness. + + + + + The class to represent all fields imported from a PE/module. + + + + + This is for perf, not for correctness. + + + + + The module containing the namespace. + + + + + + This is for perf, not for correctness. + + + + + The class to represent all methods imported from a PE/module. + + + + + A single field to hold optional auxiliary data. + In many scenarios it is possible to avoid allocating this, thus saving total space in . + Even for lazily-computed values, it may be possible to avoid allocating if + the computed value is a well-known "empty" value. In this case, bits in are used + to indicate that the lazy values have been computed and, if is null, then + the "empty" value should be inferred. + + + + + Holds infrequently accessed fields. See for an explanation. + + + + + Associate the method with a particular property. Returns + false if the method is already associated with a property or event. + + + + + Associate the method with a particular event. Returns + false if the method is already associated with a property or event. + + + + + This is for perf, not for correctness. + + + + + Represents a net-module imported from a PE. Can be a primary module of an assembly. + + + + + + Owning AssemblySymbol. This can be a PEAssemblySymbol or a SourceAssemblySymbol. + + + + + + A Module object providing metadata. + + + + + + Global namespace. + + + + + + Cache the symbol for well-known type System.Type because we use it frequently + (for attributes). + + + + + The same value as ConcurrentDictionary.DEFAULT_CAPACITY + + + + + This is a map from TypeDef handle to the target . + It is used by to speed up type reference resolution + for metadata coming from this module. The map is lazily populated + as we load types from the module. + + + + + This is a map from TypeRef row id to the target . + It is used by to speed-up type reference resolution + for metadata coming from this module. The map is lazily populated + by as we resolve TypeRefs from the module. + + + + + This is for perf, not for correctness. + + + + + Returns a tuple of the assemblies this module forwards the given type to. + + Type to look up. + Pass true to look up fullName case-insensitively. WARNING: more expensive. + Returns the actual casing of the matching name. + A tuple of the forwarded to assemblies. + + The returned assemblies may also forward the type. + + + + + The class to represent all types imported from a PE/module. + + + + + + A map of types immediately contained within this type + grouped by their name (case-insensitively). + + + + + A set of all the names of the members in this type. + + + + + A map of members immediately contained within this type + grouped by their name (case-insensitively). + + + + + + Lazily initialized by TypeKind property. + Using Integer type to make sure read/write operations are atomic. + + + + + + Some simple sanity checks if a property can actually be a withevents property + + + + + Return true if the type parameters specified on the nested type (Me), + that represent the corresponding type parameters on the containing + types, in fact match the actual type parameters on the containing types. + + + + + Force all declaration errors to be generated. + + + + + This is for perf, not for correctness. + + + + + Returns the index of the first member of the specific kind. + Returns the number of members if not found. + + + + + Returns all members of the specific kind, starting at the optional offset. + Members of the same kind are assumed to be contiguous. + + + + + The class to represent top level types imported from a PE/module. + + + + + The base class to represent a namespace imported from a PE/module. + Namespaces that differ only by casing in name are merged. + + + + + A map of namespaces immediately contained within this namespace + grouped by their name (case-insensitively). + + + + + A map of types immediately contained within this namespace + grouped by their name (case-insensitively). + + + + + A map of NoPia local types immediately contained in this assembly. + Maps fully-qualified type name to the row id. + + + + + Returns PEModuleSymbol containing the namespace. + + PEModuleSymbol containing the namespace. + + + + Initializes m_Namespaces and m_Types maps with information about + namespaces and types immediately contained within this namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids must be grouped by the + fully-qualified namespace name in case-sensitive manner. There could be multiple groups + for each fully-qualified namespace name. The groups must be sorted by their key in + case-insensitive manner. Empty string must be used as namespace name for types + immediately contained within Global namespace. Therefore, all types in THIS namespace, + if any, must be in several first IGroupings. + + + + + Create symbols for nested namespaces and initialize m_Namespaces map. + + + + + Create symbols for nested types and initialize m_Types map. + + + + + For test purposes only. + + + + + Return the set of types that should be checked for presence of extension methods in order to build + a map of extension methods for the namespace. + + + + + The class to represent all, but Global, namespaces imported from a PE/module. + Namespaces that differ only by casing in name are merged. + + + + + + The parent namespace. There is always one, Global namespace contains all + top level namespaces. + + + + + + The name of the namespace. + + + + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids are grouped by the + fully-qualified namespace name in case-sensitive manner. There could be multiple groups + for each fully-qualified namespace name. The groups are sorted by their key + in case-insensitive manner. Empty string is used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + will be in several first IGroupings. + + This member is initialized by constructor and is cleared in EnsureAllMembersLoaded + as soon as symbols for children are created. + + + + + + Constructor. + + + Name of the namespace, must be not empty. + + + Containing namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids are grouped by the + fully-qualified namespace name in case-sensitive manner. There could be multiple groups + for each fully-qualified namespace name. The groups are sorted by their key + in case-insensitive manner. Empty string is used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + will be in several first IGroupings. + + + + + + Calculate declared accessibility of most accessible type within this namespace or within a containing namespace recursively. + Expected to be called at most once per namespace symbol, unless there is a race condition. + + Valid return values: + Friend, + Public, + NotApplicable - if there are no types. + + + + + This is for perf, not for correctness. + + + + + The class to represent all types imported from a PE/module. + + + + + + The index of a CallerArgumentExpression. The value means uninitialized, -1 means + Not found. Otherwise, the index of the CallerArgumentExpression. + + + + + Attributes filtered out from m_lazyCustomAttributes, ParamArray, etc. + + + + + This is for perf, not for correctness. + + + + + The class to represent all properties imported from a PE/module. + + + + + Marks property as definitely IsWithEvents or not. + The effects of this change cannot be undone. + Will have no effect if someone already asked if property is IsWithEvents (and will assert since it is not supposed to happen). + + + + + For the property to be considered valid, accessor signatures must be consistent + with each other, and accessor signatures must be consistent with the property + signature ignoring ByRef. These requirements are stricter than Dev11 which + allows many inconsistencies including different numbers of parameters. + + + + + This is for perf, not for correctness. + + + + + The class to represent all generic type parameters imported from a PE/module. + + + + + + First error calculating bounds. + + + + + This is for perf, not for correctness. + + + + + Tuples can be represented using tuple syntax and be given + names. However, the underlying representation for tuples unifies + to a single underlying tuple type, System.ValueTuple. Since the + names aren't part of the underlying tuple type they have to be + recorded somewhere else. + + Roslyn records tuple names in an attribute: the + TupleElementNamesAttribute. The attribute contains a single string + array which records the names of the tuple elements in a pre-order + depth-first traversal. If the type contains nested parameters, + they are also recorded in a pre-order depth-first traversal. + + can be used to extract tuple names and types from metadata and create + a with attached names. + + + For instance, a method returning a tuple + + + Function M() As (x As Integer, y As Integer) + + + will be encoded using an attribute on the return type as follows + + + < return: TupleElementNamesAttribute({ "x", "y" }) > + Function M() As System.ValueTuple(Of Integer, Integer) + + + + + For nested type parameters, we expand the tuple names in a pre-order + traversal: + + + Class C + Inherits BaseType(Of (e3 As (e1 As Integer, e2 As Integer), e4 As Integer)) + + + becomes + + + < TupleElementNamesAttribute({ "e3", "e4", "e1", "e2" }) > + Class C + Inherits BaseType(of System.ValueTuple(of System.ValueTuple(Of Integer, Integer), Integer) + + + + + + + Represents a retargeting custom attribute + + + + + Gets the retargeted System.Type type symbol. + + Target symbol on which this attribute is applied. + Retargeted System.Type type symbol. + + + + Essentially this is a wrapper around another AssemblySymbol that is responsible for retargeting + symbols from one assembly to another. It can retarget symbols for multiple assemblies at the same time. + + For example, compilation C1 references v1 of Lib.dll and compilation C2 references C1 and v2 of Lib.dll. + In this case, in context of C2, all types from v1 of Lib.dll leaking through C1 (through method + signatures, etc.) must be retargeted to the types from v2 of Lib.dll. This is what + RetargetingAssemblySymbol is responsible for. In the example above, modules in C2 do not + reference C1.m_AssemblySymbol, but reference a special RetargetingAssemblySymbol created for + C1 by ReferenceManager. + + Here is how retargeting is implemented in general: + - Symbols from underlying assembly are substituted with retargeting symbols. + - Symbols from referenced assemblies that can be reused as is (i.e. doesn't have to be retargeted) are + used as is. + - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. + + + + + The underlying AssemblySymbol, it leaks symbols that should be retargeted. + This cannot be an instance of RetargetingAssemblySymbol. + + + + + The list of contained ModuleSymbol objects. First item in the list + is RetargetingModuleSymbol that wraps corresponding SourceModuleSymbol + from m_UnderlyingAssembly.Modules list, the rest are PEModuleSymbols for + added modules. + + + + + An array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by a compilation referencing this assembly. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + An array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + A map from a local NoPia type to corresponding canonical type. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Retargeted custom attributes + + + + + + Constructor. + + + The underlying AssemblySymbol, cannot be an instance of RetargetingAssemblySymbol. + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + The underlying AssemblySymbol. + This cannot be an instance of RetargetingAssemblySymbol. + + + + + + + + Lookup declaration for FX type in this Assembly. + + + + + + + + This is for perf, not for correctness. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying EventSymbol, cannot be another RetargetingEventSymbol. + + + + + Retargeted custom attributes + + + + + + This is for perf, not for correctness. + + + + + Represents a field in a RetargetingModuleSymbol. Essentially this is a wrapper around + another FieldSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying FieldSymbol, cannot be another RetargetingFieldSymbol. + + + + + Retargeted custom attributes + + + + + + This is for perf, not for correctness. + + + + + Represents a method in a RetargetingModuleSymbol. Essentially this is a wrapper around + another MethodSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying MethodSymbol, cannot be another RetargetingMethodSymbol. + + + + + Retargeted custom attributes + + + + + + Retargeted return type attributes + + + + + + This is for perf, not for correctness. + + + + + Represents a primary module of a . Essentially this is a wrapper around + another that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + Here is how retargeting is implemented in general: + - Symbols from underlying module are substituted with retargeting symbols. + - Symbols from referenced assemblies that can be reused as is (i.e. don't have to be retargeted) are + used as is. + - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. + + + + + Owning . + + + + + The underlying , cannot be another . + + + + + The map that captures information about what assembly should be retargeted + to what assembly. Key is the referenced by the underlying module, + value is the corresponding referenced by this module, and corresponding + retargeting map for symbols. + + + + + Retargeted custom attributes + + + + + Constructor. + + + Owning assembly. + + + Underlying , cannot be another . + + + + + + The underlying , cannot be another . + + + + + A helper method for ReferenceManager to set AssemblySymbols for assemblies + referenced by this module. + + + + + This is for perf, not for correctness. + + + + + Retargeting map from underlying module to this one. + + + + + Retargeting map from underlying module to the retargeting module. + + + + + RetargetingAssemblySymbol owning retargeting module. + + + + + The map that captures information about what assembly should be retargeted + to what assembly. Key is the AssemblySymbol referenced by the underlying module, + value is the corresponding AssemblySymbol referenced by the retargeting module, + and corresponding retargeting map for symbols. + + + + + The underlying ModuleSymbol for the retargeting module. + + + + + Perform a check whether the type or at least one of its generic arguments + is an explicitly defined local type. The check is performed recursively. + + + + + Represents a type of a RetargetingModuleSymbol. Essentially this is a wrapper around + another NamedTypeSymbol that is responsible for retargeting referenced symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying NamedTypeSymbol, cannot be another RetargetingNamedTypeSymbol. + + + + + Retargeted custom attributes + + + + + This method is called directly by a Binder when it uses this type. + + + + + This method is called directly by a Binder when it uses this type. + + + + + Make sure we retarget methods when underlying type checks their viability. + + + + + Force all declaration errors to be generated. + + + + + This is for perf, not for correctness. + + + + + Represents a namespace of a RetargetingModuleSymbol. Essentially this is a wrapper around + another NamespaceSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying NamespaceSymbol, cannot be another RetargetingNamespaceSymbol. + + + + + Calculate declared accessibility of most accessible type within this namespace or within a containing namespace recursively. + Expected to be called at most once per namespace symbol, unless there is a race condition. + + Valid return values: + Friend, + Public, + NotApplicable - if there are no types. + + + + + This method is called directly by a Binder when it uses this module level namespace. + + + + + This method is called when this namespace is part of a merged namespace and we are trying to build + a map of extension methods for the whole merged namespace. + + + + + Make sure we retarget methods when types of the underlying namespace add them to the map. + + + + + This method is called directly by a Binder when it uses this module level namespace. + + + + + Make sure we retarget methods when underlying namespace checks their viability. + + + + + This is for perf, not for correctness. + + + + + Represents a parameter of a RetargetingMethodSymbol. Essentially this is a wrapper around + another ParameterSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + The underlying ParameterSymbol, cannot be another RetargetingParameterSymbol. + + + + + Retargeted custom attributes + + + + + + Owning RetargetingMethodSymbol. + + + + + Owning RetargetingPropertySymbol. + + + + + This is for perf, not for correctness. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying PropertySymbol, cannot be another RetargetingPropertySymbol. + + + + + Retargeted custom attributes + + + + + + This is for perf, not for correctness. + + + + + Represents a type parameter in a RetargetingModuleSymbol. Essentially this is a wrapper around + another TypeParameterSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying TypeParameterSymbol, cannot be another RetargetingTypeParameterSymbol. + + + + + This is for perf, not for correctness. + + + + + This method finds an attribute by metadata name and signature. The algorithm for signature matching is similar to the one + in Module.GetTargetAttributeSignatureIndex. Note, the signature matching is limited to primitive types + and System.Type. It will not match an arbitrary signature but it is sufficient to match the signatures of the current set of + well known attributes. + + Attribute to match. + + + + Gets the System.Type type symbol from targetSymbol's containing assembly. + + Target symbol on which this attribute is applied. + System.Type type symbol. + + + + Information decoded from well-known custom attributes applied on an event. + + + + + Information decoded from early well-known custom attributes applied on a method. + + + + + Information decoded from well-known custom attributes applied on a method. + + + + + Information decoded from early well-known custom attributes applied on a parameter. + + + + + Information decoded from early well-known custom attributes applied on a type. + + + + + a link in a dependency chain + it means that "dependent" is dependent on the rest of the chain. + "kind" tells what kind of dependency this is. + + + + + Source types may have dependencies via inheritance or containment + The diagnostics is different in those cases. + + + + + Given base being resolved chain and current type produce the diagnostics + or Nothing if there is no cycle detected + + + + + Detects situations when a type participates in a dependency loop + And generates appropriate diagnostics. + No diagnostics means there was no loop + + + + + if there is a dependency chain from "current" to the "root" + Returning Nothing, means that there is no dependency + Returning Empty, means that root and current are the same and we have a 0-length dependency + Otherwise a dependence chain is formed. + + + + + Verifies that given symbol does not have loops in its inheritance chain + and reports appropriate diagnostics. + + + + + Verifies that given symbol does not have loops in its inheritance hierarchy + and reports appropriate diagnostics. + + + + + A tuple of TypeParameterSymbol and DiagnosticInfo, created for errors + reported from ConstraintsHelper rather than creating Diagnostics directly. + This decouples constraints checking from syntax and Locations, and supports + callers that may want to create Location instances lazily or not at all. + + + + + Helper methods for generic type parameter constraints. There are two sets of methods: one + set for resolving constraint "bounds" (that is, determining the effective base type, interface set, + etc.), and another set for checking for constraint violations in type and method references. + + Bounds are resolved by calling one of the ResolveBounds overloads. Typically bounds are + resolved by each TypeParameterSymbol at, or before, one of the corresponding properties + (BaseType, Interfaces, etc.) is accessed. Resolving bounds may result in errors (cycles, + inconsistent constraints, etc.) and it is the responsibility of the caller to report any such + errors as declaration errors or use-site errors (depending on whether the type parameter + was from source or metadata) and to ensure bounds are resolved for source type parameters + even if the corresponding properties are never accessed directly. + + Constraints are checked by calling one of the CheckConstraints or CheckAllConstraints + overloads for any generic type or method reference from source. In some circumstances, + references are checked at the time the generic type or generic method is bound and constructed + by the Binder. In those case, it is sufficient to call one of the CheckConstraints overloads + since compound types (such as A(Of T).B(Of U) or A(Of B(Of T))) are checked incrementally + as each part is bound. In other cases however, constraint checking needs to be delayed to + prevent cycles where checking constraints requires binding the syntax that is currently + being bound (such as the constraint in Class C(Of T As C(Of T)). In those cases, the caller + must lazily check constraints, and since the types may be compound types, it is necessary + to call CheckAllConstraints. + + + + + Enum used internally by RemoveDirectConstraintConflicts to + track what type constraint has been seen, to report conflicts + between { 'Structure', 'Class', [explicit type] }. The 'New' + constraint does not need to be tracked for those conflicts. + + + + + Return the constraints for the type parameter with any cycles + or conflicting constraints reported as errors and removed. + + + + + Check all generic constraints on the given type and any containing types + (such as A(Of T) in A(Of T).B(Of U)). This includes checking constraints + on generic types within the type (such as B(Of T) in A(Of B(Of T)())). + + + + + Check type parameters for the containing type or method symbol. + The type parameters are assumed to be the original definitions of type + parameters from the containing type or method, and the TypeSubstitution + instance is used for substituting type parameters within the constraints + of those type parameters, so the substitution should map from type + parameters to type arguments. + + + + + Return the most derived type from the set of constraint types on this type + parameter and any type parameter it depends on. Returns Nothing if there + are no concrete constraint types. If there are multiple constraints, returns + the most derived, ignoring any subsequent constraints that are neither + more or less derived. This method assumes there are no constraint cycles. + + + + + Return the most derived class type from the set of constraint types on this type + parameter and any type parameter it depends on. Returns Nothing if there are + no concrete constraint types. If there are multiple constraints, returns the most + derived, ignoring any subsequent constraints that are neither more or less derived. + This method assumes there are no constraint cycles. Unlike GetBaseConstraintType, + this method will always return a NamedTypeSymbol representing a class: returning + System.ValueType for value types, System.Array for arrays, and System.Enum for enums. + + + + + Populate the collection with all constraints for the type parameter, traversing + any constraints that are also type parameters. The result is a collection of type + and flag constraints, with no type parameter references. This method assumes + there are no constraint cycles. + + + + + A tuple of type parameter and constraint type. + + + + + Return true if the class type has a public parameterless constructor. + + + + + Return true if the constraints collection contains the given type constraint. + + + + + True if the syntax tree is an embedded syntax tree + + + + + Manages symbols from automatically embedded syntax trees. + + + + Automatically embedded symbols (types, methods and fields) used in the current compilation + + + + Non-0 indicates that the collection of referenced symbols is sealed + and so no new symbols are supposed to be added. + + + + + True if StandardModuleAttribute was used in the current compilation + + + + + Marks StandardModuleAttributeReference type as being references in the + current compilation. This method is to be used when a new type symbol for a + module is being created; we cannot pass the actual StandardModuleAttribute + type symbol because the symbol table is being constructed and calling + Compilation.GetWellKnownType(...) will cause infinite recursion. It does + not seem reasonable to special case this in symbol creation, so we just + mark StandardModuleAttribute attribute as referenced and then add + the actual symbol when MarkAllDeferredSymbols(...) is called. + + + + + Mark all deferred types as referenced + + + + + Returns True if any embedded symbols are referenced. + + WARNING: the referenced symbols collection may not be sealed yet!!! + + + + + Makes a snapshot of the current set of referenced symbols filtered by, + the set of symbols provided; may be called before the referenced symbol + collection is sealed. + + + + + Checks if the embedded symbol provided is in the collection and adds it + into collection if not. + + See description of AddReferencedSymbolWithDependents for more details of how + it actually works. + + + + + Returns True if the embedded symbol is known to be referenced in the current compilation. + + + + + Seals the collection of referenced symbols, all *new* symbols passed + to SpawnSymbolCollection(...) will cause assert and be ignored. + + + + + Checks if the embedded symbol provided is present in the 'allSymbols' and if not + adds it into 'allSymbols' as well as to the collection of referenced symbols + managed by this manager. Also adds all the 'dependent' symbols, i.e. symbols + which must also be marked as referenced if 'symbol' is referenced. + + NOTE that when a new embedded symbol is being added to the collection of referenced + symbols it should be added along with all the 'dependent' symbols. For example, if + we add a method symbol (T1.M1) we should ensure the containing type symbol (T1) is + added too, as well as its constructor (T1..ctor) and maybe attribute(s) (Attr1) set + on T1 and their constructors/fields (Attr1..ctor), etc... + + All dependent symbols must be added in the current thread not depending on + the other concurrent threads and avoiding possible race. Thus, let's suppose we have + the following dependencies: + + T1.M1 -> { T1, T1..ctor, Attr1, Attr1..ctor, ... } + + we cannot just check if T1.M1 exists in the collection of referenced symbols and not + add dependent symbols if it does; the reason is that T1.M1 may be added by a concurrent + thread, but its dependencies may not be added by that thread yet. So we need to + calculate all dependencies and try add all the symbols together. + + On the other hand it should be avoided that the method *always* goes through all + the dependencies for each symbol even though it may be definitely known that the symbol + is added in one of the previous operations by *the same thread*. To serve this purpose + the method uses 'allSymbols' collection to actually check whether or not the symbol + is added to the collection. This makes possible to reuse the same collection in several + consequent calls to AddReferencedSymbolWithDependents from the same thread; for example + in case one thread consequently adds lots of symbols, the thread may use the same + 'allSymbols' instance for efficient symbol filtering. + + + + + Lazily created parsed representation of VB Core content + + + + + Returns information about the reason that this type is in error. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + If we believe we know which symbol the user intended, then we should retain that information + in the corresponding error symbol - it can be useful for deciding how to handle the error. + + + + + Return why the candidate symbols were bad. + + + + + When constructing this ErrorTypeSymbol, there may have been symbols that seemed to + be what the user intended, but were unsuitable. For example, a type might have been + inaccessible, or ambiguous. This property returns the possible symbols that the user + might have intended. It will return no symbols if no possible symbols were found. + See the CandidateReason property to understand why the symbols were unsuitable. + + + + + Force all declaration errors to be generated. + + + + + Implementation of IEqualityComparer for EventSymbol, with options for various aspects + to compare. + + + + + This instance is used when trying to determine which implemented interface event is implemented + by a event with an Implements clause, according to VB rules. + This comparer uses event signature that may come from As clause delegate or from a parameter list. + The event signatures are compared without regard to name (including the interface part, if any) + and the return type must match. (NOTE: that return type of implementing event is always Void) + + + + + This instance is used to check whether one event overrides another, according to the VB definition. + + + + + This instance is intended to reflect the definition of signature equality used by the runtime (ECMA 335 Section 8.6.1.6). + It considers type, name, parameters, and custom modifiers. + + + + + This instance is used to compare potential WinRT fake events in type projection. + + FIXME(angocke): This is almost certainly wrong. The semantics of WinRT conflict + comparison should probably match overload resolution (i.e., we should not add a member + to lookup that would result in ambiguity), but this is closer to what Dev12 does. + + The real fix here is to establish a spec for how WinRT conflict comparison should be + performed. Once this is done we should remove these comments. + + + + + An error type symbol with name and diagnostic. More info can be added in the future. + + + + + + Returns information about the reason that this type is in error. + + + + + Represents a field or property initializer. Holds the symbol and the syntax for the initialization. + + + + + The fields or properties being initialized, or Nothing if this represents an executable statement in script code. + We can get into a multiple properties case when multiple WithEvents fields are initialized with As New ... + + + + + A reference to + , + , + , + (top-level statement). + + + + + A sum of widths of spans of all preceding initializers + (instance and static initializers are summed separately, and trivias are not counted). + + + + + Initializer for an executable statement in script code. + + The initializer syntax for the statement. + + + + Initializes a new instance of the structure. + + The field. + The initializer syntax for the field. + + + + Initializes a new instance of the structure. + + + + + Initializes a new instance of the structure. + + The property. + The initializer syntax for the property. + + + + Indexed type parameters are used in place of type parameters for method signatures. There is + a unique mapping from index to a single IndexedTypeParameterSymbol. + + They don't have a containing symbol or locations. + + They do not have constraints, variance, or attributes. + + + + + Create a vector of n dummy type parameters. Always reuses the same type parameter symbol + for the same position. + + + + + + + The base class for potentially constructible (i.e. with known arity) error type symbols + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + An InstanceTypeSymbol is a NamedTypeSymbol that is a pure instance type, where the class + (and any containing classes) have no type substitutions applied. + This class provide shared implementation for types whose definition is (possibly lazily) + constructed from source or metadata. It provides the shared implementation between these two, primarily + the implementation of Construct and InternalSubstituteTypeParameters. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + A [Resume] or [On Error Resume Next] statement. + + + + + A structure used to lexically order symbols. For performance, it's important that this be + a STRUCTURE, and be able to be returned from a symbol without doing any additional allocations (even + if nothing is cached yet.) + + + + + Embedded kind of the tree. + + + + + If -1, symbol is in metadata or embedded or otherwise not it source. + Note that TreeOrdinal is only used for EmbeddedSymbolKind.None trees, thus + negative ordinals of embedded trees do not interfere + + + + + Position within the tree. Doesn't need to exactly match the span returned by Locations, just + be good enough to sort. In other words, we don't need to go to extra work to return the location of the identifier, + just some syntax location is fine. + + Negative value indicates that the structure was not initialized yet, is used for lazy + initializations only along with LexicalSortKey.NotInitialized + + + + + WARNING: Only use this if the location is obtainable without allocating it (even if cached later). E.g., only + if the location object is stored in the constructor of the symbol. + + + + + WARNING: Only use this if the node is obtainable without allocating it (even if cached later). E.g., only + if the node is stored in the constructor of the symbol. In particular, do not call this on the result of a GetSyntax() + call on a SyntaxReference. + + + + + WARNING: Only use this if the token is obtainable without allocating it (even if cached later). E.g., only + if the node is stored in the constructor of the symbol. In particular, do not call this on the result of a GetSyntax() + call on a SyntaxReference. + + + + + Compare two lexical sort keys in a compilation. + + + + + This class provides an easy way to combine a MethodSignatureComparer and a PropertySignatureComparer + to create a unified MemberSignatureComparer (e.g. for use in a HashSet). + + + + + + This instance is used to compare potential WinRT fake members in type projection. + + FIXME(angocke): This is almost certainly wrong. The semantics of WinRT conflict + comparison should probably match overload resolution (i.e., we should not add a member + to lookup that would result in ambiguity), but this is closer to what Dev12 does. + + The real fix here is to establish a spec for how WinRT conflict comparison should be + performed. Once this is done we should remove these comments. + + + + + A MergedNamespaceSymbol represents a namespace that merges the contents of two or more other + namespaces. Any sub-namespaces with the same names are also merged if they have two or more + instances. + + Merged namespaces are used to merged the symbols from multiple metadata modules and the source "module" + into a single symbol tree that represents all the available symbols. The compiler resolves names + against Me merged set of symbols. + + Typically there will not be very many merged namespaces in a Compilation: only the root namespaces and + namespaces that are used in multiple referenced modules. (Microsoft, System, System.Xml, + System.Diagnostics, System.Threading, ...) + + + + + Create a possibly merged namespace symbol representing global namespace on an assembly level. + + + + + Create a possibly merged namespace symbol. If only a single namespace is passed it, it is just returned directly. + If two or more namespaces are passed in, then a new merged namespace is created with the given extent and container. + + The namespace extent to use, IF a merged namespace is created. + The containing namespace to used, IF a merged namespace is created. + One or more namespaces to merged. If just one, then it is returned. + The merged namespace symbol may hold onto the array. + A namespace symbol representing the merged namespace.(of /returns) + + + + Create a possibly merged namespace symbol representing global namespace on a compilation level. + + + + + Create a possibly merged namespace symbol (namespace group). If only a single namespace is passed it, it is just returned directly. + If two or more namespaces are passed in, then a new merged namespace is created + + One or more namespaces to merged. If just one, then it is returned. + The merged namespace symbol may hold onto the array. + A namespace symbol representing the merged namespace.(of /returns) + + + + Create a possibly merged namespace symbol (namespace group). If only a single namespace is passed it, it is just returned directly. + If two or more namespaces are passed in, then a new merged namespace is created with the given extent and container. + + The containing namespace to used, IF a merged namespace is created. + One or more namespaces to merged. If just one, then it is returned. + The merged namespace symbol may hold onto the array. + A namespace symbol representing the merged namespace.(of /returns) + + + + Method that is called from the CachingLookup to lookup the children of a given name. Looks + in all the constituent namespaces. + + + + + Method that is called from the CachingLookup to get all child names. Looks + in all constituent namespaces. + + + + + Calculate declared accessibility of most accessible type within this namespace or within a containing namespace recursively. + Expected to be called at most once per namespace symbol, unless there is a race condition. + + Valid return values: + Friend, + Public, + NotApplicable - if there are no types. + + + + + For test purposes only. + + + + + Returns true if namespace contains types accessible from the target assembly. + + + + + Populate the map with all extension methods declared within this namespace, so that methods from + the same type are grouped together within each bucket. + + + + + Represents source or metadata assembly. + + + + + + An array of cached Cor types defined in this assembly. + Lazily filled by GetSpecialType method. + + + + + + How many Cor types have we cached so far. + + + + + Lookup declaration for predefined CorLib type in this Assembly. Only should be + called if it is know that this is the Cor Library (mscorlib). + + + + + + + + Register declaration of predefined CorLib type in this Assembly. + + + + + + Continue looking for declaration of predefined CorLib type in this Assembly + while symbols for new type declarations are constructed. + + + + + Determine whether this assembly has been granted access to . + Assumes that the public key has been determined. The result will be cached. + + + + + + + + Lazy cache of special members. + Not yet known value is represented by ErrorTypeSymbol.UnknownResultType + + + + + Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this + assembly is the Cor Library + + + + + Helper methods that exist to share code between properties and events. + + + + + One of the methods has more parameters than the other + AND + at least one of the extra parameters is NOT optional + + + + + One of the methods has more parameters than the other + AND at least one of the extra parameters IS optional + OR + there is at least one parameter in one method with optionality (being optional or + required) not equal to that of the matching parameter from the other method + + + + + Taken into consideration only if is set. + + + + + Mismatch in total number of parameters, both required and optional + + + + + + Implementation of IEqualityComparer for MethodSymbols, with options for various aspects + to compare. + + + + + This instance is intended to reflect the definition of signature equality used by the runtime (ECMA 335 Section 8.6.1.6). + It considers return type, name, parameters, calling convention, and custom modifiers. + + + + + This instance is used to compare all aspects. + + + + + This instance is used to compare parameter and return types, including byref. + + + + + This instance is used to compare custom modifiers, parameter and return types, including byref. + + + + + This instance is used to search for methods that have the same signature, return type, + and constraints according to the VisualBasic definition. Custom modifiers are ignored. + + + + + This instance is used to search for methods that have identical signatures in every regard. + + + + + This instance is used to compare potential WinRT fake methods in type projection. + + FIXME(angocke): This is almost certainly wrong. The semantics of WinRT conflict + comparison should probably match overload resolution (i.e., we should not add a member + to lookup that would result in ambiguity), but this is closer to what Dev12 does. + + The real fix here is to establish a spec for how WinRT conflict comparison should be + performed. Once this is done we should remove these comments. + + + + + Returns true if the first set of constraint types + is a subset of the second set. + + + + + Determines if the method can be called with empty parameter list. + + The method. + + + + Determines if the method is partial + + The method + + + + Determines if the method is partial and does NOT have implementation provided + + The method + + + + Is method a user-defined operator. + + + + + Returns a constructed method symbol if 'method' is generic, otherwise just returns 'method' + + + + + A is a special kind of that represents + an assembly that couldn't be found. + + + + + AssemblySymbol to represent missing, for whatever reason, CorLibrary. + The symbol is created by ReferenceManager on as needed basis and is shared by all compilations + with missing CorLibraries. + + + + + An array of cached Cor types defined in this assembly. + Lazily filled by GetDeclaredSpecialType method. + + + + + Lookup declaration for predefined CorLib type in this Assembly. Only should be + called if it is know that this is the Cor Library (mscorlib). + + + + + + A MissingMetadataSymbol is a special kind of ErrorSymbol that represents + a type symbol that was attempted to be read from metadata, but couldn't be + found, because: + a) The metadata file it lives in wasn't referenced + b) The metadata file was referenced, but didn't contain the type + c) The metadata file was referenced, contained the correct outer type, but + didn't contains a nested type in that outer type. + + + + + Represents not nested missing type. + + + + + SpecialType.TypeId + + + + + This is the FULL namespace name (e.g., "System.Collections.Generic") + of the type that couldn't be found. + + + + + Represents nested missing type. + + + + + A is a special kind of that represents + a module that couldn't be found. + + + + + A is a special kind of that represents + a namespace that couldn't be found. + + + + + Represents a module within an assembly. Every assembly contains one or more modules. + + + + + Module's ordinal within containing assembly's Modules array. + 0 - for a source module, etc. + -1 - for a module that doesn't have containing assembly, or has it, but is not part of Modules array. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + + Returns a NamespaceSymbol representing the global (root) namespace, with + module extent, that can be used to browse all of the symbols defined in this module. + + + + + Returns the containing assembly. Modules are always directly contained by an assembly, + so this property always returns the same as ContainingSymbol. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from ReferencedAssemblies And from ReferencedAssemblySymbols + correspond to each other. + + + + + If this symbol represents a metadata module returns the underlying . + + Otherwise, this returns . + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols + should correspond to each other. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from ReferencedAssemblies And + from ReferencedAssemblySymbols correspond to each other. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from GetReferencedAssemblies and + from GetReferencedAssemblySymbols should correspond to each other. If reference is + not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the + corresponding item. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + A helper method for ReferenceManager to set assembly identities for assemblies + referenced by this module and corresponding AssemblySymbols. + + A description of the assemblies referenced by this module. + + + Source assembly that triggered creation of this module symbol. + For debug purposes only, this assembly symbol should not be persisted within + this module symbol because the module can be shared across multiple source + assemblies. This method will only be called for the first one. + + + + + True if this module has any unified references. + + + + + Returns a unification use-site error (if any) for a symbol contained in this module + that is referring to a specified . + + + If an assembly referenced by this module isn't exactly matching any reference given to compilation + the Assembly Manager might decide to use another reference if it matches except for version + (it unifies the version with the existing reference). + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + Returns true if there is any applied CompilationRelaxationsAttribute assembly attribute for this module. + + + + + Returns true if there is any applied RuntimeCompatibilityAttribute assembly attribute for this module. + + + + + Default char set for contained types, or null if not specified. + + + Determined based upon value specified via applied on this module. + + + + + Given a namespace symbol, returns the corresponding module specific namespace symbol + + + + + Does this symbol represent a missing Module. + + + + + If this property returns false, it is certain that there are no extension + methods (from language perspective) inside this module. If this property returns true, + it is highly likely (but not certain) that this type contains extension methods. + This property allows the search for extension methods to be narrowed much more quickly. + + !!! Note that this property can mutate during lifetime of the symbol !!! + !!! from True to False, as we learn more about the module. !!! + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Safe to call on a null reference. + + + + + Given a name, find a member field or property (ignoring all other members) in a type. + + + + + Given a possibly constructed/specialized generic type, create a symbol + representing an unbound generic type for its definition. + + + + + A NamespaceExtent represents whether a namespace contains types and sub-namespaces from a particular module, + assembly, or merged across all modules (source and metadata) in a particular compilation. + + + + + Returns what kind of extent: Module, Assembly, or Compilation. + + + + + If the Kind is ExtendKind.Module, returns the module symbol that this namespace + encompasses. Otherwise throws InvalidOperationException. + + + + + If the Kind is ExtendKind.Assembly, returns the assembly symbol that this namespace + encompasses. Otherwise throws InvalidOperationException. + + + + + If the Kind is ExtendKind.Compilation, returns the compilation symbol that this namespace + encompasses. Otherwise throws InvalidOperationException. + + + + + Create a NamespaceExtent that represents a given ModuleSymbol. + + + + + Create a NamespaceExtent that represents a given AssemblySymbol. + + + + + Create a NamespaceExtent that represents a given Compilation. + + + + + Represents either a namespace or a type. + + + + + Returns true if this symbol is a namespace. If its not a namespace, it must be a type. + + + + + Returns true if this symbols is a type. Equivalent to Not IsNamespace. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol. The members may not be in a particular order, and the order + may not be stable from call-to-call. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. The result is deterministic (i.e. the same + from call to call and from compilation to compilation). Members of the same kind appear in the result + in the same order in which they appeared at their origin (metadata or source). + Never returns Nothing. + + + + Get all the type members of this symbol. The types may not be in a particular order, and the order + may not be stable from call-to-call. + + An ImmutableArray containing all the type members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types that have a particular name, and any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types that have a particular name and arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns Nothing. + + + + Returns true if this symbol was declared as requiring an override; i.e., declared + with the "MustOverride" modifier. Never returns true for types. + + + Always returns False. + + + + + Returns true if this symbol was declared to override a base class members and was + also restricted from further overriding; i.e., declared with the "NotOverridable" + modifier. Never returns true for types. + + + Always returns False. + + + + + Returns true if this member is overridable, has an implementation, + and does not override a base class member; i.e., declared with the "Overridable" + modifier. Does not return true for members declared as MustOverride or Overrides. + + + Always returns False. + + + + + Returns true if this symbol was declared to override a base class members; i.e., declared + with the "Overrides" modifier. Still returns true if the members was declared + to override something, but (erroneously) no member to override exists. + + + Always returns False. + + + + + This is a helper method shared between NamedTypeSymbol and NamespaceSymbol. + + Its purpose is to add names of probable extension methods found in membersByName parameter + to nameSet parameter. Method's viability check is delegated to overridable method + AddExtensionMethodLookupSymbolsInfoViabilityCheck, which is overridden by RetargetingNamedtypeSymbol + and RetargetingNamespaceSymbol in order to perform the check on corresponding RetargetingMethodSymbol. + + Returns true if there were extension methods among the members, + regardless whether their names were added into the set. + + + + + Perform extension method viability check within AppendExtensionMethodNames method above. + This method is overridden by RetargetingNamedtypeSymbol and RetargetingNamespaceSymbol in order to + perform the check on corresponding RetargetingMethodSymbol. + + Returns true if the method is viable. + + + + + Finds types or namespaces described by a qualified name. + + Sequence of simple plain names. + A set of namespace or type symbols with given qualified name (might comprise of types with multiple generic arities), + or an empty set if the member can't be found (the qualified name is ambiguous or the symbol doesn't exist). + + + "C.D" matches C.D, C(Of T).D, C(Of S,T).D(Of U), etc. + + + + + A is a special kind of that represents + an assembly that is not missing, i.e. the "real" thing. + + + + + This is a cache similar to the one used by MetaImport::GetTypeByName + in native compiler. The difference is that native compiler pre-populates + the cache when it loads types. Here we are populating the cache only + with things we looked for, so that next time we are looking for the same + thing, the lookup is fast. This cache also takes care of TypeForwarders. + Gives about 8% win on subsequent lookups in some scenarios. + + + + + + The global namespace symbol. Lazily populated on first access. + + + + + Does this symbol represent a missing assembly. + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. Detect cycles during lookup. + + + Full type name, possibly with generic name mangling. + + + List of assemblies lookup has already visited (since type forwarding can introduce cycles). + + + Take forwarded types into account. + + + + + For test purposes only. + + + + + For test purposes only. + + + + + A is a special kind of that represents + a module that is not missing, i.e. the "real" thing. + + + + + An array of objects corresponding to assemblies directly referenced by this module. + + + The contents are provided by ReferenceManager and may not be modified. + + + + + Does this symbol represent a missing Module. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols + should correspond to each other. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from GetReferencedAssemblies and + from GetReferencedAssemblySymbols should correspond to each other. If reference is + not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the + corresponding item. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + A helper method for ReferenceManager to set assembly identities for assemblies + referenced by this module and corresponding AssemblySymbols. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name, possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + A NoPiaAmbiguousCanonicalTypeSymbol is a special kind of ErrorSymbol that represents + a NoPia embedded type symbol that was attempted to be substituted with canonical type, + but the canonical type was ambiguous. + + + + + A NoPiaIllegalGenericInstantiationSymbol is a special kind of ErrorSymbol that represents + a generic type instantiation that cannot cross assembly boundaries according to NoPia rules. + + + + + A NoPiaMissingCanonicalTypeSymbol is a special kind of ErrorSymbol that represents + a NoPia embedded type symbol that was attempted to be substituted with canonical type, + but the canonical type couldn't be found. + + + + + Initialize the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be + done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles. + + + + + This method checks to see if the given symbol is Obsolete or if any symbol in the parent hierarchy is Obsolete. + + + True if some symbol in the parent hierarchy is known to be Obsolete. Unknown if any + symbol's Obsoleteness is Unknown. False, if we are certain that no symbol in the parent + hierarchy is Obsolete. + + + + + Create a diagnostic for the given symbol. This could be an error or a warning based on + the ObsoleteAttribute's arguments. + + + + + Groups the information computed by MakeOverriddenMembers. + + + In C# this class also stores hidden members (and is named OverriddenOrHiddenMembersResult). + The way VB warns on hidden members, this did not turn out to be useful. + + Expected to be a member symbol type (e.g. method, property). + + + + The member(s) that are potentially being overridden. This collection only contains + candidates having signature 'exactly' matching the signature of the method/property. + + 'Exact' signature match is defined as 'general' signature match plus NO + mismatches in total number of parameters or optional parameter types. + + See comments on InaccessibleMembers for more details on 'general' signature match. + + + + + The member(s) that are potentially being overridden. This collection only contains + candidates having signature 'generally' matching the signature of the method/property. + + Two signatures 'generally' match if DetailedSignatureCompare (...) returns no + mismatches defined in SymbolComparisonResults.AllMismatches ignoring mismatches + grouped in SymbolComparisonResults.MismatchesForConflictingMethods. + + + + + Members that would be in OverriddenMembers if they were accessible. + + + + + It is not suitable to call this method on a object + associated with a member within substituted type, + should be used instead. + + + + + Represents a namespace. + + + + + For a given namespace in context of a particular Compilation all binders use + either a compilation merged namespace symbol, or a module level namespace symbol + (PE, Source or Retargeting). In order to speed-up lookup of extension methods performed + by a binder, we build and cache a map of all extension methods declared within the namespace + grouped by name (case-insensitively). + + If binder uses compilation merged namespace symbol, the map is built across all underlying + module level namespace symbols, separate maps for underlying namespace symbols are not built. + + If binder uses Retargeting module level namespace symbol, we build the map for the underlying + namespace symbol instead and push all requests through the underlying namespace. + + The map actually stores ImmutableArray(Of MethodSymbol), but we are using ImmutableArray(Of Symbol) + in order to be able to pass the map to a more general API. + + + + + Returns declared accessibility of most accessible type within this namespace or within a containing namespace recursively. + Valid return values: + Friend, + Public, + NotApplicable - if there are no types. + + + + + This is an entry point for the Binder to collect extension methods with the given name + declared within this (compilation merged or module level) namespace, so that methods + from the same type are grouped together. + + A cached map of extension methods is used to optimize the lookup. + + + + + Add names of viable extension methods declared in this (compilation merged or module level) + namespace to nameSet parameter. + + The 'appendThrough' parameter allows RetargetingNamespaceSymbol to delegate majority of the work + to the underlying namespace symbol, but still perform viability check on RetargetingMethodSymbol. + + A cached map of extension methods is used to optimize the operation. + + + + + Build and cache a map of probable extension methods for this namespace. + + + + + An error type symbol to represent a pointer type. + Pointer types are not supported by VB language, but internally + we need to be able to match them in signatures of methods + imported from metadata. + + + + + Represents a preprocessing conditional compilation symbol. + + + + + Implementation of IEqualityComparer for PropertySymbols, with options for various aspects + to compare. + + + + + This instance is intended to reflect the definition of signature equality used by the runtime (ECMA 335 Section 8.6.1.6). + It considers type, name, parameters, and custom modifiers. + + + + + This instance is used to search for properties that have identical signatures in every regard. + + + + + This instance is used to compare potential WinRT fake properties in type projection. + + FIXME(angocke): This is almost certainly wrong. The semantics of WinRT conflict + comparison should probably match overload resolution (i.e., we should not add a member + to lookup that would result in ambiguity), but this is closer to what Dev12 does. + + The real fix here is to establish a spec for how WinRT conflict comparison should be + performed. Once this is done we should remove these comments. + + + + + Determines if the property can be accessed with empty parameter list. + + The property. + + + + Represents a curried extension method definition - first parameter and fixed + type parameters removed. + + + + + If this is an extension method that can be applied to an instance of the given type, + returns the curried method symbol thus formed. Otherwise, returns Nothing. + + + + + Represents type parameter of a curried extension method definition. + + + + + Represents parameter of a curried extension method definition. + + + + + A representation of a method symbol that is intended only to be used for comparison purposes + (esp in MethodSignatureComparer). + + + + + Intended to be used to create ParameterSymbols for a SignatureOnlyMethodSymbol. + + + + + A representation of a property symbol that is intended only to be used for comparison purposes + (esp in PropertySignatureComparer). + + + + + Represents a Lambda parameter for a LambdaSymbol. + + + + + Type parameters in documentation comments are complicated since they sort of act as declarations, + rather than references. Like in the following example: + + + ''' + Class Clazz + ... + + + + + + + We're going to ignore SourceMemberFlags.MethodIsSub and override IsSub explicitly. We do this because + the flags have to be set at construction time, but IsSub depends on IsWindowsRuntimeEvent, which depends + on interface implementations, which we don't want to bind until the member list is complete. (It's probably + okay now (2012/12/17), but it would be very fragile to take a dependency on the exact mechanism by which + interface members are looked up.) + + + + + Bind and validate parameters declared on the accessor. + + + + + sourceMethod has the custom modifiers + + + + + sourceType has the custom modifiers + + + + + Returns True if was modified. + + + + + + Attribute location corresponding to this symbol. + + + Location of an attribute if an explicit location is not specified via attribute target specification syntax. + + + + + Methods, Properties, and Events all have implements clauses and need to handle interface + implementation. This module has helper methods and extensions for sharing by multiple + symbol types. + + + + + + Find the implemented method denoted by "implementedMemberSyntax" that matches implementingSym. + Returns the implemented method, or Nothing if none. + + Also stores into "candidateSymbols" (if not Nothing) and resultKind the symbols and result kind that + should be used for semantic model purposes. + + + + + Does 'implementingSym' match 'implementedSym' well enough to be considered a match for interface implementation? + + + + + Perform additional validate of implementedSym and issue diagnostics. + Return "implementedSym" if the symbol table should record implementedSym as the implemented + symbol (even if diagnostics were issues). Returns Nothing if the code should not treat + implementedSym as the implemented symbol. + + + + + Validate method type parameter constraints. This is handled outside + of ValidateImplementedMember because that method is invoked + while computing the ExplicitInterfaceImplementations value on the + implementing method, but method type parameters rely on the value + of ExplicitInterfaceImplementations to determine constraints correctly. + + + + + Performs interface mapping to determine which symbol in this type or a base type + actually implements a particular interface member. + + MethodSymbol or PropertySymbol or EventSymbol (an interface member). + A non-null member on an interface type. + The type implementing the interface member. + A comparer for comparing signatures of TSymbol according to metadata implementation rules. + The implementing member or Nothing, if there isn't one. + + + + Search the declared methods of a type for one that could be an implicit implementation + of a given interface method (depending on interface declarations). It is assumed that the implementing + type is not a source type. + + MethodSymbol or PropertySymbol or EventSymbol (an interface member). + The interface member being implemented. + The type on which we are looking for a declared implementation of the interface method. + A comparer for comparing signatures of TSymbol according to metadata implementation rules. + + + + Given a set of explicit interface implementations that are undergoing substitution, return the substituted versions. + + Type of the interface members (Method, Property, Event) + The ROA of members that are being implemented + The type substitution + The substituted members. + + + + Represents implicit, script and submission classes. + + + + + Represents a Lambda parameter. + + + + + Represents a method symbol for a lambda method. + + + + + This symbol is used as the return type of a LambdaSymbol when we are interpreting + lambda's body in order to infer its return type. + + + + + This symbol is used as the return type of a LambdaSymbol when we failed to + infer lambda's return type, but still want to interpret its body. + + + + + This symbol is used as the return type of a LambdaSymbol when we are dealing with + query lambda and the return type should be taken from the target delegate upon + successful conversion. The LambdaSymbol will be mutated then. + + + + + This symbol is used as the return type of a LambdaSymbol when System.Void is used in code. + + + + + This symbol is used as a sentinel while we are binding a lambda in error recovery mode. + + + + + Can mutate for a query lambda from ReturnTypePendingDelegate + to the return type of the target delegate. + + + + + "Me" parameter for this lambda will be that of the containing symbol + + + + + Specifies the syntax that a user defined variable comes from. + + + + + The local is not user defined nor it is a copy of a user defined local (e.g. with a substituted type). + Check the value of for the kind of synthesized variable. + + + + + Implicitly declared variable (w/o variable declaration). + + + + + Only used in flow analysis for the pseudo-local representing a symbol + of the implicit receiver in case Dim statement defines more than one + variable, but uses the same object initializer for all of them, like in: + Dim a,b As New C() With { .X = .Y } + + + + + Represents a local variable (typically inside a method body). This could also be a local variable implicitly + declared by a For, Using, etc. When used as a temporary variable, its container can also be a Field or Property Symbol. + + + + + Create a local symbol from a local variable declaration. + + + + + Create a local symbol associated with an identifier token. + + + + + Create a local symbol associated with an identifier token and a different name. + Used for WinRT event handler return value variable). + + + + + Create a local symbol with substituted type. + + + + + Create an inferred local symbol from a For from-to statement. + + + + + Create an inferred local symbol from a For-each statement. + + + + + Create a local variable symbol. Note: this does not insert it automatically into a + local binder so that it can be found by lookup. + + + + + Returns true if this local is a ReadOnly local. Compiler has a concept of ReadOnly locals. + + + + + Returns the syntax node that declares the variable. + + + All user-defined and long-lived synthesized variables must return a reference to a node that is + tracked by the EnC diffing algorithm. For example, for variable + the declarator is the node, not the + that immediately contains the variable. + + The location of the declarator is used to calculate during emit. + + + + + Was this local variable implicitly declared, because Option Explicit Off + was in effect, and no other symbol was found with this name. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Base class for any local symbol that can be referenced in source, might be implicitly declared. + + + + + Class for a local symbol that has a different name than the identifier token. + In this case the real name is returned by the name property and the "VB User visible name" can be + obtained by accessing the IdentifierToken. + + + + + Create a local variable symbol. Note: this does not insert it automatically into a + local binder so that it can be found by lookup. + + + + + A local symbol created by a for-each statement when Option Infer is on. + + + + + + Create a local variable symbol. Note: this does not insert it automatically into a + local binder so that it can be found by lookup. + + + + + A local symbol created by For from-to statement when Option Infer is on. + + + + + Create a local variable symbol. Note: this does not insert it automatically into a + local binder so that it can be found by lookup. + + + + + A local symbol created from a variable declaration or a for statement with an as clause. + + + + + Create a local variable symbol. Note: this does not insert it automatically into a + local binder so that it can be found by lookup. + + + + + Local symbol that is not associated with any source. + + Generally used for temporary locals past the initial binding phase. + + + + Function that help implement the overloading rules for VB, in particular the rules + for recasing method and property names. + + + + + Set the correct metadata name for all overloads of a particular name and symbol kind + (must be method or property) inside a container. + + The rules are as follows: + 1) If a method or property overrides one from its base class, its metadata name + must match that. + 2) If method overloads those in the base (because the Overloads keyword is used), and + all metadata names in the base are consistent in case, use that name. + 3) All overloads with a class should match, except possibly for overrides. If there is + an override or overload from base, use that. Otherwise, use casing of first member in + class. + + + + + Collect all overloads in "container" of the given name and kind. + Also determine if any have "Overloads" or "Overrides" specifiers. + + + + + For each member in "overloadedMembers" that is marked Overrides, set its + metadata name to be the metadata name of its overridden member. Return the + first such name, lexically. + + Note: can return null if no override member with an actual overridden member was found. + + + + + Return the name of the lexically first symbol in "overloadedMembers". + + + + + Check all accessible, visible members of the base types of container for the given name and kind. If they + all have the same case-sensitive metadata name, return that name. Otherwise, return Nothing. + + + + + Methods, Properties, and Events all can override or hide members. + This class has helper methods and extensions for sharing by multiple symbol types. + + + + + Check for overriding and hiding errors in container and report them via diagnostics. + + Containing type to check. Should be an original definition. + Place diagnostics here. + + + + Check each member of container for constraints against the base type. For methods and properties and events, + checking overriding and hiding constraints. For other members, just check for hiding issues. + + Containing type to check. Should be an original definition. + Place diagnostics here. + + + + + If the "container" is a non-MustInherit, make sure it has no MustOverride Members + If "container" is a non-MustInherit inheriting from a MustInherit, make sure that all MustOverride members + have been overridden. + If "container" is a MustInherit inheriting from a MustInherit, make sure that no MustOverride members + have been shadowed. + + + + + Report any diagnostics related to shadowing for a member. + + + + + Some symbols do not participate in overriding/hiding (e.g. constructors). Accessors are consider + to override or hide. + + + + + If a method had a virtual inaccessible override, then an explicit override in metadata is needed + to make it really override what it intends to override, and "skip" the inaccessible virtual + method. + + + + + Many of the methods want to generically work on properties, methods (and maybe events) as TSymbol. We put all these + methods into a generic class for convenience. + + + + + Walk up the type hierarchy from ContainingType and list members that this + method overrides (accessible methods/properties with the same signature, if this + method is declared "override"). + + Methods in the overridden list may not be virtual or may have different + accessibilities, types, accessors, etc. They are really candidates to be + overridden. + + All found accessible candidates of overridden members are collected in two + builders, those with 'exactly' matching signatures and those with 'generally' + or 'inexactly' matching signatures. 'Exact' signature match is a 'general' + signature match which also does not have mismatches in total number of parameters + and/or types of optional parameters. See also comments on correspondent + OverriddenMembersResult(Of TSymbol) properties. + + 'Inexactly' matching candidates are only collected for reporting Dev10/Dev11 + errors like BC30697 and others. We collect 'inexact' matching candidates until + we find any 'exact' match. + + Also remembers inaccessible members that are found, but these do not prevent + continuing to search for accessible members. + + + + In the presence of non-VB types, the meaning of "same signature" is rather + complicated. If this method isn't from source, then it refers to the runtime's + notion of signature (i.e. including return type, custom modifiers, etc). + If this method is from source, use the VB version of signature. Note that + Dev10 C# has a rule that prefers members with less custom modifiers. Dev 10 VB has no + such rule, so I'm not adding such a rule here. + + + + + Look for overridden members in a specific type. Return true if we find an overridden member candidate + with 'exact' signature match, or we hit a member that hides. See comments on MakeOverriddenMembers(...) + for description of 'exact' and 'inexact' signature matches. + + Also remember any inaccessible members that we see. + + Syntax that overriding or hiding. + True if "overridingSym" is from source (this.IsFromSomeCompilation). + The type that contains this method (this.ContainingType). + The type to search. + Builder to place exactly-matched overridden member candidates in. + Builder to place inexactly-matched overridden member candidates in. + Builder to place exactly-matched inaccessible overridden member candidates in. + + + + The QuickAttributeChecker applies a simple fast heuristic for determining probable + attributes without binding attribute types, just by looking at the final syntax of an + attribute usage. It is accessed via the QuickAttributeChecker property on Binder. + + + It works by maintaining a dictionary of all possible simple names that might map to a particular + attribute. + + + + + Add a mapping from name to some attributes. + + + + + Process an alias clause and any imported mappings from it. + E.g., If you have an alias Ex=Blah.Extension, add any mapping for Extension to those for Ex. + Note that although, in VB, an alias cannot reference another alias, this code doesn't not attempt + to distinguish between aliases and regular names, as that would add complexity to the data structure + and would be unlikely to matter. This entire class is probabilistic anyone and is only used for quick + checks. + + + + + Check attribute lists quickly to see what attributes might be referenced. + + + + + Indicate which attributes might be present. Could be extended to other attributes + if desired. + + + + + Returns the that corresponds to the particular type + passed in. If Is + then the name will be checked both as-Is as well as with the 'Attribute' suffix. + + + + + Represents a range variable symbol. + + + + + Create a range variable symbol associated with an identifier token. + + + + + Create a range variable symbol not associated with an identifier token, i.e. with illegal name. + Used for error recovery binding. + + + + + Represents a source parameter cloned from another , + when they must share attribute data. + + + For example, parameters on delegate Invoke method are cloned to delegate BeginInvoke, EndInvoke methods. + + + + + Represents a parameter symbol defined in source. + + + + + Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source method symbols. + + + Used for partial method parameters: + Implementation parameter always copies its attributes from the corresponding definition parameter. + Definition is always complex parameter and so it stores the attribute bag. + + + + + Is parameter explicitly declared ByRef. Can be different from IsByRef only for + String parameters of Declare methods. + + + + + Represents a declare method defined in source. + + + + + This class represent a compiler generated method of a delegate type that is based upon source delegate or event delegate declaration. + + + + + Returns true if this method is an extension method. + + + + + Gets a value indicating whether this instance is external method. + + + true if this instance is external method; otherwise, false. + + + + + Get the type parameters on this method. If the method has not generic, + returns an empty list. + + + + + Gets a value indicating whether the symbol was generated by the compiler + rather than declared explicitly. + + + + + Represents enum constant field in source. + + + + + Indicates whether event created a new delegate type. + In such case the Type must be added to the members of the containing type + + + + + Unless the type is inferred, check that all + implemented events have the same type. + + + + + Helper method for accessors to get the overridden accessor methods. Should only be called by the + accessor method symbols. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a NotOverridable method. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Gets the syntax tree. + + + + + Field initializer's declaration syntax node. + It can be a EqualsValueSyntax or AsNewClauseSyntax. + + + + + Gets a value indicating whether this instance has declared type. This means not an inferred type. + + + true if this instance has declared type; otherwise, false. + + + + + Gets the constant value. + + Used to detect dependencies between constant field values. + + + + Helper to get a constant value of the field with cycle detection. + Also avoids deep recursion due to references to other constant fields in the value. + Derived types utilizing this helper should provide storage for the lazily calculated + value and should implement the following APIs: + , + , + . + + + + + Generate a list containing the field and all dependencies + of that field that require evaluation. The list is ordered by + dependencies, with fields with no dependencies first. Cycles are + broken at the first field lexically in the cycle. If multiple threads + call this method with the same field, the order of the fields + returned should be the same, although some fields may be missing + from the lists in some threads as other threads evaluate fields. + + + + + The set of fields on which the field depends. + + + + + The set of fields that depend on the field. + + + + + Build a dependency graph (a map from + field to dependencies). + + + + + Return the constant value dependencies. Compute the dependencies + if necessary by evaluating the constant value but only persist the + constant value if there were no dependencies. (If there are dependencies, + the constant value will be re-evaluated after evaluating dependencies.) + + + + + Should be overridden by types utilizing helper. + + + + + Should be overridden by types utilizing helper. + + + + + Should be overridden by types utilizing helper. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a NotOverridable method. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Verify the constant value matches the default value from any earlier attribute + (DateTimeConstantAttribute or DecimalConstantAttribute). + If not, report ERR_FieldHasMultipleDistinctConstantValues. + + + + + The bound information from a file. + + + + + Data for Binder.BindImportClause that maintains flat lists + of members and member syntax references in addition to + the dictionaries needed by BindImportClause. + + + + + Perform any validation of import statements that must occur + after the import statements have been added to the SourceFile. + Specifically, constraints are checked for generic type references. + + + + + Return the member imports for this file. + Doesn't contain error types. + + + + + Return the alias imports for this file. May return Nothing if there are no alias imports. + May contain aliases with error type targets. + + + + + Return the xmlns imports for this file. May return Nothing if there are no xmlns imports. + + + + + Returns the value of the Option Strict declaration if there was one, otherwise Null. + + + + + Returns the value of the Option Infer declaration if there was one, otherwise Null. + + + + + Returns the value of the Option Explicit declaration if there was one, otherwise Null. + + + + + Returns the value of the Option Compare Text/Binary declaration if there was one, otherwise Null. True means + Text, False means Binary. + + + + + Force all declaration errors to be generated. + + + + + Get all declaration errors in the given filterSpan. + + + + + Represents a named type symbol whose members are declared in source. + + + + + Holds information about a SourceType in a compact form. + + + + + Compute the type flags from the declaration. + This function DOES NOT diagnose errors in the modifiers. Given the set of modifiers, + it produces the flags, even in the case of potentially conflicting modifiers. We have to + return some answer even in the case of errors. + + + + + Force all declaration errors to be generated. + + + + + Following enum is used just to help give more specific error messages. + + + + + Ensure all attributes on all members in the named type are bound. + + + + + Should return full emitted namespace name for a top level type if the name + might be different in case from containing namespace symbol full name, Nothing otherwise. + + Although namespaces unify based on case-insensitive name, VB uses the casing the namespace + declaration surround the class definition for the name emitted to metadata. + + Namespace GOO + Class X + End Class + ENd Namespace + Namespace goo + Class Y + End Class + ENd Namespace + + In metadata, these are classes "GOO.X" and "goo.Y" (and thus appear in different namespaces + when imported into C#.) This function determines the casing of the namespace part of a class, if needed + to override the namespace name. + + + + + Syntax references of all parts of the type declaration. + Submission and script classes are represented by their containing , + implicit class can be represented by or . + + + + + Structure to wrap the different arrays of members. + + + + + Initializes a new instance of the class. + + The members. + The static initializers. + The instance initializers. + + + + Accumulates different members kinds used while building the members. + + + + + Adds a field initializer for the field to list of field initializers + + All initializers. + Compute the field initializer to add to the list of initializers. + + + + Adds an array of initializers to the member collections structure + + All initializers. + The siblings. + + + Examines the members collection and builds a set of partial methods if any, otherwise returns nothing + + + + Compares two methods to check if the 'candidate' can be an implementation of the 'partialDeclaration'. + + + + + Poolable data set to be used in structure circularity detection. + + + + + Following C# implementation we keep up to 32 data sets so that we do not need to allocate + them over and over. In this implementation though, circularity detection in one type can trigger + circularity detection in other types while it traverses the types tree. The traversal is being + performed breadth-first, so the number of data sets used by one thread is not longer than the + length of the longest structure-in-structure nesting chain. + + + + Set of processed structure types + + + Queue element structure + + + Queue of the types to be processed + + + + Analyzes structure type for circularities. Reports only errors relevant for 'structBeingAnalyzed' type. + + + When VB Dev10 detects circularity it reports the error only once for each cycle. Thus, if the cycle + is {S1 --> S2 --> S3 --> S1}, only one error will be reported, which one of S1/S2/S3 will have error + is non-deterministic (depends on the order of symbols in a hash table). + + Moreover, Dev10 analyzes the type graph and reports only one error in case S1 --> S2 --> S1 even if + there are two fields referencing S2 from S1. + + Example: + Structure S2 + Dim s1 As S1 + End Structure + + Structure S3 + Dim s1 As S1 + End Structure + + Structure S1 + Dim s2 As S2 ' ERROR + Dim s2_ As S2 ' NO ERROR + Dim s3 As S3 ' ERROR + End Structure + + Dev10 also reports only one error for all the cycles starting with the same field, which one is reported + depends on the declaration order. Current implementation reports all of the cycles for consistency. + See testcases MultiplyCyclesInStructure03 and MultiplyCyclesInStructure04 (report different errors in Dev10). + + + + + Simple check of whether or not we should step into the type 'typeToTest' during + type graph traversal inside 'DetectStructureCircularity' or 'GetDependenceChain'. + + The following rules are in place: + (a) we order all symbols according their first source location + comparison rules: first, source file names are compared, + then SourceSpan.Start is used for symbols inside the same file; + (b) given this order we enter the loop if only 'typeToTest' is 'less' than + 'structBeingAnalyzed'; + (c) we also always enter types from other modules + + !!! To be ONLY used in 'CheckStructureCircularity'. + + True if detect type circularity code should step into 'typeToTest' type + + + + Returns true if at least one of the elements of this list needs to be injected into a + constructor because it's not a const or it is a const and it's type is either decimal + or date. Non const fields always require a constructor, so this function should be called to + determine if a synthesized constructor is needed that is not listed in members list. + + + + + Performs a check for overloads/overrides/shadows conflicts, generates diagnostics. + + + + + + + + Check to see if we need a default instance|shared constructor, and if so, create it. + + NOTE: we only need a shared constructor if there are any initializers to be + injected into it, we don't create a constructor otherwise. In this case we also + ignore const fields which will still require to be injected, because in this case + we don't see the constructor to be visible in symbol table. + + + + + In case the passed initializers require a shared constructor, this method returns a new MethodSymbol instance for the + shared constructor if there is not already an explicit shared constructor + + + + + Gets the static initializers. + + + + + Gets the instance initializers. + + + + + Get a dictionary with all the explicitly implemented interface symbols declared on this type. + + key = interface method/property/event compared using , + value = explicitly implementing methods/properties/events declared on this type (normally a single value, multiple in case of + an error). + + Getting this property also ensures that diagnostics relating to interface implementation, overriding, hiding and + overloading are created. + + + + + + Reports the overloads error for this type. + + The diagnostics. + + + + Returns True if memberList(memberIndex) is an operator. + Also performs operator overloading validation and reports appropriate errors. + + + + + See if any member in [memberList] starting with [memberIndex] conflict with [method], + report appropriate error and return true. + + + + + Check for two different diagnostics on the set of implemented interfaces: + 1) It is invalid for a type to directly (vs through a base class) implement two interfaces that + unify (i.e. are the same for some substitution of type parameters). + + 2) It is a warning to implement variant interfaces twice with type arguments that could cause + ambiguity during method dispatch. + + + + + Interface1 and Interface2 conflict for some type arguments. Report the correct error in the correct location. + + + + + Interface1 and Interface2 have variable ambiguity. Report the warning in the correct location. + + + + + Interface1 and Interface2 match except for their tuple names. Report the error in the correct location. + + + + + Gets the inferred type of this const field from the initialization value. + + Used to detect dependencies between constant field values. + + + + A source field with an explicit initializer. In a declaration declaring multiple fields, + such as "Dim a, b, c = d", this class is used for the first field only. (Other fields in + the declaration are instances of SourceFieldSymbolSiblingInitializer.) + + + + + A tuple consisting of the evaluated constant value and type + + + + + A source field with an explicit initializer. In a declaration declaring multiple + fields, such as "Dim a, b, c = d", this class is used for the fields other than + the first. (The first field is an instance of SourceFieldSymbolWithInitializer.) + An instance of this class holds a reference to the first field in the declaration + and reuses the bound initializer from that field. + + + + + Represents a method declared in source. + + + + + If this symbol represents a partial method definition or implementation part, its other part (if any). + This should be set, if at all, before this symbol appears among the members of its owner. + The implementation part is not listed among the "members" of the enclosing type. + + + + + In case the method is an 'Async' method, stores the reference to a state machine type + synthesized in AsyncRewriter. Note, that this field is mutable and is being assigned + by calling AssignAsyncStateMachineType(...). + + + + + If this flag is set this method will be ignored + in duplicated signature analysis, see ERR_DuplicateProcDef1 diagnostics. + + + + + Set after all diagnostics have been reported for this symbol. + + + + + Validate method type parameter constraints against implemented methods. + + + + + This method is to be called to assign implementation to a partial method. + + + + + Base class for method symbols that are associated with some syntax and can receive custom attributes (directly or indirectly via another source symbol). + + + + + Creates a method symbol for Declare Sub or Function. + + + + + Decode the modifiers on a user-defined operator, reporting errors where applicable. + + + + + Returns true if our diagnostics were used in the event that there were two threads racing. + + + + + True if 'Shadows' is explicitly specified in method's declaration. + + + + + True if 'Overloads' is explicitly specified in method's declaration. + + + + + True if 'Overrides' is explicitly specified in method's declaration. + + + + + True if 'Handles' is specified in method's declaration + + + + + Return the location from syntax reference only. + + + + + Bind the constraint declarations for the given type parameter. + + + The caller is expected to handle constraint checking and any caching of results. + + + + + Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source method symbols. + + + Used for example for event accessors. The "remove" method delegates attribute binding to the "add" method. + The bound attribute data are then applied to both accessors. + + + + + Symbol to copy bound return type attributes from, or null if the attributes are not shared among multiple source symbols. + + + Used for property accessors. Getter copies its return type attributes from the property return type attributes. + + So far we only need to return . If we ever needed to return a + we could implement an interface on those two types. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + + + Returns the list of attributes, if any, associated with the return type. + + + + + Returns data decoded from early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Represents the primary module of an assembly being built by compiler. + + + + + + Owning assembly. + + + + + + Holds diagnostics not related to source code + in any particular source file + + + + + This override is essential - it's a base case of the recursive definition. + + + + + Get the SourceFile object associated with a root declaration. + Returns Nothing if the tree doesn't belong to the compilation. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a NotOverridable method. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Data for Binder.BindImportClause that maintains flat lists of members, aliases, + and corresponding syntax references in addition to the dictionaries needed by + BindImportClause. The syntax references, instances of GlobalImportInfo, are used + later, when validating constraints, to generate Locations for constraint errors. + + + + + Perform any validation of import statements that must occur + after the import statements have been added to the module. + + + + + Perform validation of an import statement that must occur + after the statement has been added to the module. Specifically, + constraints are checked for generic type references. + + + + + Get all the declaration errors in a single tree. + + + + + Get all the declaration errors. + + + + + Atomically store value into variable, and store the diagnostics away for later retrieval. + When this routine returns, variable is non-null. If this routine stored value into variable, + then the diagnostic bag is saved away before the variable is stored and it returns True. + Otherwise it returns False. + + + + + Represents a type or module declared in source. + Could be a class, structure, interface, delegate, enum, or module. + + + + + Information for ComClass specific analysis and metadata generation, created + once ComClassAttribute is encountered. + + + + + Lazy CoClass type if the attribute is specified. Nothing if not. + + + + + In case a cyclic dependency was detected during base type resolution + this field stores the diagnostic. + + + + + Bind the constraint declarations for the given type parameter. + + + The caller is expected to handle constraint checking and any caching of results. + + + + + 'Safe' version of GetDeclaredBase takes into account bases being resolved to make sure + we avoid infinite loops in some scenarios. Note that the cycle is being broken not when + we detect it, but when we detect it on the 'smallest' type of the cycle, this brings stability + in multithreaded scenarios while still ensures that we don't loop more than twice. + + + + + Do additional verification of base types the after acyclic base is found. This is + the chance to generate diagnostics that may require walking bases and as such + can be performed only after the base has been determined and cycles broken. + (For instance, checking constraints on Class B(Of T) Inherits A(Of B(Of T)).) + + + + + Do additional verification of interfaces after acyclic interfaces are found. This is + the chance to generate diagnostics that may need to walk interfaces and as such + can be performed only after the interfaces have been determined and cycles broken. + (For instance, checking constraints on Class C(Of T) Implements I(Of C(Of T)).) + + + + + Return the first Class declaration with explicit base classes to use for + checking base class constraints. Other type declarations (Structures, + Modules, Interfaces) are ignored since other errors will have been + reported if those types include bases. + + + + + Return the first Class, Structure, or Interface declaration with explicit interfaces + to use for checking interface constraints. Other type declarations (Modules) are + ignored since other errors will have been reported if those types include interfaces. + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + + + Returns data decoded from early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Is System.Runtime.InteropServices.GuidAttribute applied to this type in code. + + + + + Is System.Runtime.InteropServices.ClassInterfaceAttribute applied to this type in code. + + + + + Is System.Runtime.InteropServices.ComSourceInterfacesAttribute applied to this type in code. + + + + + Encapsulates ComClass specific data and analysis. + + + + + Synthesized ComClass interfaces, can have the following values: + Null - not yet initialized, + Empty - there are no synthesized ComClass interfaces. + one interface - only class interface is synthesized. + two interfaces - both class interface and event interface are synthesized. Class interface is followed by the event interface. + + + + + Returns symbol for the event interface or Nothing when event interface is not synthesized. + + + + + Perform ComClass specific validation and prepare for metadata generation. + + + + + Return False if ComVisibleAttribute(False) is applied to the symbol, True otherwise. + + + + + Returns user defined DispId for a member or ReservedDispId.None if none specified. + Also reports errors for reserved DispIds. + + + + + Perform ComClass specific validation and prepare for metadata generation. + + + + + Used to sort types - members of group collection. + + + + + Register COR types declared in this namespace, if any, in the COR types cache. + + + + + Gets the filename of the first declaration that matches the given namespace name case sensitively. + + + + + Return the set of types that should be checked for presence of extension methods in order to build + a map of extension methods for the namespace. + + + + + Does this namespace have multiple different case-sensitive spellings + (i.e., "Namespace GOO" and "Namespace goo". Includes parent namespace(s). + + + + + Get the fully qualified namespace name using the spelling used in the declaration enclosing the given + syntax tree and location. + I.e., if this namespace was declared with: + Namespace zAp + Namespace GOO.bar + 'location + End Namespace + End Namespace + Namespace ZAP + Namespace goo.bar + End Namespace + End Namespace + + It would return "ProjectNamespace.zAp.GOO.bar". + + + + + Is this an accessor parameter that came from the associated property? If so, + return it, else return Nothing. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + + + Verify the default value matches the default value from any earlier attribute + (DefaultParameterValueAttribute, DateTimeConstantAttribute or DecimalConstantAttribute). + If not, report ERR_ParamDefaultValueDiffersFromAttribute. + + + + + Base class for all parameters that are emitted. + + + + + Bind parameters declared on the accessor and combine with any + parameters declared on the property. If there are no explicit parameters + and this is a setter, create a synthesized value parameter. + + + + + Property declaration syntax node. + It is either PropertyStatement for normal properties or FieldDeclarationSyntax for WithEvents ones. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a NotOverridable method. + If you want to override attribute binding logic for a sub-class, then override method. + + + + True if 'Overloads' is explicitly specified in method's declaration + + + True if 'Overrides' is explicitly specified in method's declaration + + + + Helper method for accessors to get the overridden accessor methods. Should only be called by the + accessor method symbols. + + True to get implemented getters, False to get implemented setters + All the accessors of the given kind implemented by this property. + + + + Property declaration syntax node. + It is either PropertyStatement for normal properties or ModifiedIdentifier for WithEvents ones. + + + + + Return true if the accessor accessibility is more restrictive + than the property accessibility, otherwise false. + + + + + Returns the location (span) of the accessor begin block. + (Used for consistency with the native compiler that + highlights the entire begin block for certain diagnostics.) + + + + + Report an error associated with the accessor accessibility modifier. + + + + + Gets the syntax tree. + + + + + Represents a parameters declared in source, that is not optional, does not have a default value, + attributes, or is a ParamArray. This is a separate class to save memory, since there are LOTS + of parameters. + + + + + Represents a type parameter symbol defined in source. + + + + + True if the redundant type parameter constraints should be reported as + errors. For overridden methods, this is False since type substitution of type + arguments for the base/interface may result in redundant constraints. + + + This is a method rather than a property since the + implementation may be expensive. + + + + + Check constraints of generic types referenced in constraint types. For instance, + with "Interface I(Of T As I(Of T))", check T satisfies constraints on I(Of T). Those + constraints are not checked when binding ConstraintTypes since ConstraintTypes + has not been set on I(Of T) at that point. + + + + + Return the source location of the error, if any. If there error was + from a constraint, and that constraint was from source, its location + is returned. Otherwise if the type parameter was from source, its + location is returned. If neither is from source, Nothing is returned. + + + + + Represents a type parameter on a source type (as opposed to a method). + + + + + Represents a type parameter on a source method (as opposed to a type). + + + + + Represents a backing field of WithEvents property. + Attributes applied on the property syntax are applied on the backing field. + + + + + Represents a compiler generated backing field for an automatically implemented property. + + + + + Represents an interactive code entry point that is inserted into the compilation if there is not an existing one. + + + + + Generate a thread-safe accessor for a field-like event. + + DelegateType tmp0 = _event; //backing field + DelegateType tmp1; + DelegateType tmp2; + do { + tmp1 = tmp0; + tmp2 = (DelegateType)Delegate.Combine(tmp1, value); //Remove for -= + tmp0 = Interlocked.CompareExchange< DelegateType> (ref _event, tmp2, tmp1); + } while ((object)tmp0 != (object)tmp1); + + Note, if System.Threading.Interlocked.CompareExchange<T> Is Not available, + we emit the following code And mark the method Synchronized (unless it Is a struct). + + _event = (DelegateType)Delegate.Combine(_event, value); //Remove for -= + + + + + + Represents a compiler generated backing field for an event. + + + + + System.NonSerializedAttribute applied on an event and determines serializability of its backing field. + + + + + Represents a compiler generated field of given type and name. + + + + + Represents a synthesized lambda. + + + + + Gets a value indicating whether the symbol was generated by the compiler + rather than declared explicitly. + + + + + Represents a compiler generated "Main" sub. + + + + + Represents a compiler "MyGroupCollection" property accessor. + + + + + Represents a compiler generated field for a "MyGroupCollection" property. + + + + + Represents a compiler "MyGroupCollection" property. + + + + + Initializes a new instance of the class. + + The containing type for the synthesized constructor. + if set to true if this is a shared constructor. + + + + WithEvents property accessor. + + + + + Represents a Lambda parameter for an UnboundLambda. + + + + + A SubstitutableTypeParameterSymbol represents a definition that is subject to alpha-renaming, + which results in . + + The main purpose of this type is to share equality implementation that ensures symmetry + across both of these types. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Represents a member variable (field) that has undergone type substitution. + + + + + Represents a method that has undergone type substitution. This is use for a method + inside a generic type that has undergone type substitution. It also serves as a base class + for ConstructedMethodSymbol, which is used for a method after type substitution in the method type parameters. + + + + + If this is a generic method return TypeSubstitution for it. + TypeSubstitution for containing type otherwise. + + + + + Compare with no regard to type arguments. + + + + + Base class for symbols representing non-generic or open generic methods contained within constructed generic type. + For example: A(Of Integer).B, A(Of Integer).B.C or A(Of Integer).B.C(Of ). + + + + + Associate the method with a particular property. Returns + false if the method is already associated with a property. + + + + + Symbol representing non-generic method directly or indirectly contained within constructed + generic type. + For example: A(Of Integer).B or A(Of Integer).B.C + + + + + Symbol representing open generic method directly or indirectly contained within constructed + generic type. + For example: A(Of Integer).B(Of ) or A(Of Integer).B.C(Of , ) + + + + + Alpha-renamed type parameters, i.e. type parameters with constraints substituted according + to containing type's TypeSubstitution. + For example: + Class A (Of T) + Sub B(Of S As T)() + End Sub + End Class + + Given a method A(Of IComparable).B(Of ), alpha-renamed type parameter S will have type constraint IComparable. + + + + + Base class for symbols representing constructed generic methods. + For example: A(Of Integer), A.B(Of Integer), A(Of Integer).B.C(Of Integer). + + + + + Symbols representing constructed generic method that is contained within constructed generic type. + For example: A(Of Integer).B(Of Integer), A(Of Integer).B.C(Of Integer). + + + + + Symbol for the ConstructedFrom method. + A(Of Integer).B(Of ) for A(Of Integer).B(Of Integer), + A(Of Integer).B.C(Of ) for A(Of Integer).B.C(Of Integer) + + All types in its containership hierarchy must be either constructed or non-generic, or original definitions. + + + + + Symbols representing constructed generic method that isn't contained within constructed generic type. + For example: A.B(Of Integer), but not A(Of Integer).B.C(Of Integer). + + + + + A SubstitutedNamedType represents a named type that has had some sort + of substitution applied to it. I.e., its not a pure instance type, but at least + one type parameter in this type or a containing type has a substitution made for + it. + + + + + Type substitution for this symbol, it targets OriginalDefinition of the symbol. + + + + + Base class for symbols representing non-generic or open generic types contained within constructed generic type. + For example: A(Of Integer).B, A(Of Integer).B.C or A(Of Integer).B.C(Of ). + + + + + Symbol for the containing type, either specialized or constructed. + + + + + Symbol representing open generic type directly or indirectly contained within constructed + generic type. + For example: A(Of Integer).B(Of ) or A(Of Integer).B.C(Of , ) + + + + + Alpha-renamed type parameters, i.e. type parameters with constraints substituted according + to containing type's TypeSubstitution. + For example: + Class A (Of T) + Class B(Of S As T) + Dim x As A(Of Integer).B(Of S) 'error BC32044: Type argument 'S' does not inherit from or implement the constraint type 'Integer'. + End Class + End Class + + Given a type A(Of IComparable).B(Of ), alpha-renamed type parameter S will have type constraint IComparable. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Symbol representing non-generic type directly or indirectly contained within constructed + generic type. + For example: A(Of Integer).B or A(Of Integer).B.C + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Base class for symbols representing constructed generic types. + For example: A(Of Integer), A.B(Of Integer), A(Of Integer).B.C(Of Integer). + + + + + Symbols representing constructed generic type that isn't contained within another constructed generic type. + For example: A(Of Integer), A.B(Of Integer), but not A(Of Integer).B.C(Of Integer). + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Symbols representing constructed generic type that is contained within another constructed generic type. + For example: A(Of Integer).B(Of Integer), A(Of Integer).B.C(Of Integer). + + + + + Symbol for the ConstructedFrom type. + A(Of Integer).B(Of ) for A(Of Integer).B(Of Integer), + A(Of Integer).B.C(Of ) for A(Of Integer).B.C(Of Integer) + + All types in its containership hierarchy must be either constructed or non-generic, or original definitions. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Force all declaration errors to be generated. + + + + + Represents a parameter that has undergone type substitution. + + + + + Represents a method parameter that has undergone type substitution. + + + + + Represents a property parameter that has undergone type substitution. + + + + + Represents a property that has undergone type substitution. + + + + + A SubstitutedTypeParameterSymbol represents an alpha-renamed type parameter. + They are created only for open generic types and methods that are contained within a + constructed generic type. + + Alpha-renamed type parameters have their constraints substituted according + to type/method's containing type's TypeSubstitution. + For example: + Class A (Of T) + Class B(Of S As T) + End Class + End Class + + Given a type A(Of IComparable).B(Of ), alpha-renamed type parameter T will have type constraint IComparable. + The rest will be exactly as for the original type parameter T. In fact, OriginalDefinition will return symbol for T. + + + + + Containing type or method. + The field is not read-only because it is initialized after construction through + SetContainingSymbol() method. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Does the compilation this symbol belongs to output to a winmdobj? + + + + + String such as 'class', 'interface' etc that can be used in error messages. + + + + + String "ReadOnly", "WriteOnly", or "" describing the kind of property. + + + + + Checks if there is a name match with any type parameter. + + + + + + + + + Returns true if this symbols can overload another of the same kind. + + + + + Returns true if this property can overload another. + + + + + Helper that tells if symbol has Overloads (hidebysig) on it + + + + + Member that does not have Overloads, is considered Shadows (hidebyname) + + + + + Is the symbol an instance member (i.e. access requires a receiver) + + + + + Is this a member of a interface that requires implementation? + + + + + Returns True for "regular" properties (those that are not WithEvents. + Typically used for OHI diagnostics where WithEvents properties are treated as variables. + + + + + default zero-init constructor symbol is added to a struct when it does not define + its own parameterless public constructor. + We do not emit this constructor and do not call it + + + + + Return the overridden symbol for either a method or property. + + + + + Return the arity of a member. + + + + + Returns the Me symbol associated with a member. + sym must be a member (method, field or property) + + + + + Returns the parameters of a given method or property. + + + + + Is symbol a user-defined operator method. + + + + + Does symbol or its containing type have Microsoft.CodeAnalysis.Embedded() attribute + + + + + Does symbol or its containing type have Microsoft.VisualBasic.Embedded() attribute + + + + + Gets the upper-level named type symbol, or returns Nothing if it does not exist. + + + + + Try to parse the local (or parameter) name and return if successful. + + + + + Try to parse the local name and return and if successful. + + + + + Helper class to generate synthesized names. + + + + + Generates the name of a state machine's type. + + + + + Generates the name of a state machine 'state' field + + + + + Generates the name of a static lambda display class instance cache + + + + + Generates the name of a state machine 'builder' field + + + + + Generates the name of a field that backs Current property + + + + + Generates the name of a state machine's awaiter field + + + + + Generates the name of a state machine's parameter name + + + + + Generates the name of a state machine's parameter name + + + + + Generates the name of a field where initial thread ID is stored + + + + + Generates the name of a state machine field name for captured me reference + + + + + Generates the name of a state machine field name for captured me reference of lambda closure + + + + + Class to represent a synthesized attribute + + + + + Synthesizes attribute data for given constructor symbol. + If the constructor has UseSiteErrors and the attribute is optional returns Nothing. + + + + + Represents a base type for compiler generated backing fields. + + + + + Type parameter that represents another type parameter while being applied on a different symbol + + + + + This class represents a base class for compiler generated constructors + + + + + Flag to indicate if this is a shared constructor or an instance constructor. + + + + + Initializes a new instance of the class. + + The containing type for the synthesized constructor. + if set to true if this is a shared constructor. + + + + Gets the symbol name. Returns the empty string if unnamed. + + + + + Gets a indicating the declared accessibility for the symbol. + Returns NotApplicable if no accessibility is declared. + + + + + Gets a value indicating whether this instance is abstract or not. + + + true if this instance is abstract; otherwise, false. + + + + + Gets a value indicating whether this instance is not overridable. + + + true if this instance is not overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overloads. + + + true if this instance is overloads; otherwise, false. + + + + + Gets a value indicating whether this instance is overridable. + + + true if this instance is overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overrides. + + + true if this instance is overrides; otherwise, false. + + + + + Gets a value indicating whether this instance is shared. + + + true if this instance is shared; otherwise, false. + + + + + Gets a value indicating whether this instance is sub. + + + true if this instance is sub; otherwise, false. + + + + + A potentially empty collection of locations that correspond to this instance. + + + + + Gets what kind of method this is. There are several different kinds of things in the + VB language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + Gets the return type of the method. + + + + + This class represent a compiler generated method + + + + + Initializes a new instance of the class. The parameters are not initialized and need to be set + by using the method. + + The name of this method. + The containing symbol. + The flags for this method. + The return type. + + + + Sets the parameters. + + The parameters. + + Note: This should be called at most once, immediately after the symbol is constructed. The parameters aren't + Note: passed to the constructor because they need to have their container set correctly. + + + + + Returns the arity of this method, or the number of type parameters it takes. + A non-generic method has zero arity. + + + + + If this method has MethodKind of MethodKind.PropertyGet or MethodKind.PropertySet, + returns the property that this method is the getter or setter for. + If this method has MethodKind of MethodKind.EventAdd or MethodKind.EventRemove, + returns the event that this method is the adder or remover for. + + + + + Calling convention of the signature. + + + + + Gets the for the immediately containing symbol. + + + + + Gets a indicating the declared accessibility for the symbol. + Returns NotApplicable if no accessibility is declared. + + + + + Returns interface methods explicitly implemented by this method. + + + + + Returns true if this method is an extension method. + + + + + Gets a value indicating whether this instance is external method. + + + true if this instance is external method; otherwise, false. + + + + + Gets a value indicating whether this instance is abstract or not. + + + true if this instance is abstract; otherwise, false. + + + + + Gets a value indicating whether this instance is not overridable. + + + true if this instance is not overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overloads. + + + true if this instance is overloads; otherwise, false. + + + + + Gets a value indicating whether this instance is overridable. + + + true if this instance is overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overrides. + + + true if this instance is overrides; otherwise, false. + + + + + Gets a value indicating whether this instance is shared. + + + true if this instance is shared; otherwise, false. + + + + + Gets a value indicating whether this instance is a sub. + + + true if this instance is sub; otherwise, false. + + + + + Gets a value indicating whether this instance is vararg. + + + true if this instance is vararg; otherwise, false. + + + + + A potentially empty collection of locations that correspond to this instance. + + + + + Gets what kind of method this is. There are several different kinds of things in the + VB language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + The parameters forming part of this signature. + + + + + Gets the return type of the method. + + + + + Returns the list of attributes, if any, associated with the return type. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a given type parameter, + then the type parameter itself is consider the type argument. + + + + + Get the type parameters on this method. If the method has not generic, + returns an empty list. + + + + + Gets a value indicating whether the symbol was generated by the compiler + rather than declared explicitly. + + + + + Gets the symbol name. Returns the empty string if unnamed. + + + + + This class represents a synthesized delegate type derived from an Event declaration + + + + Class C + Event Name(a As Integer, b As Integer) + End Class + + defines an event and a delegate type: + + Event Name As NamedEventHandler + Delegate Sub NameEventHandler(a As Integer, b As Integer) + + + + + + + This property may be called while containing type is still being constructed. + Therefore it can take membersInProgress context to ensure that returned symbol + is relevant to the current type construction. + (there could be several optimistically concurrent sessions) + + + + + Force all declaration errors to be generated. + + + + + This class represents a base class for compiler generated synthesized method symbols + that must be emitted in the compiler generated PrivateImplementationDetails class. + SynthesizedGlobalMethodBase symbols don't have a ContainingType, there are global to + the containing source module and are Public Shared methods. + + + + + Gets the symbol name. Returns the empty string if unnamed. + + + + + Gets a value indicating whether this instance is abstract or not. + + + true if this instance is abstract; otherwise, false. + + + + + Gets a value indicating whether this instance is not overridable. + + + true if this instance is not overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overloads. + + + true if this instance is overloads; otherwise, false. + + + + + Gets a value indicating whether this instance is overridable. + + + true if this instance is overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overrides. + + + true if this instance is overrides; otherwise, false. + + + + + Gets a value indicating whether this instance is shared. + + + true if this instance is shared; otherwise, false. + + + + + A potentially empty collection of locations that correspond to this instance. + + + + + Gets what kind of method this is. There are several different kinds of things in the + VB language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + The parameters forming part of this signature. + + + + + When signature of an implementing method differs (due to presence of custom modifiers) + from the signature of implemented method, we insert a synthesized explicit interface + implementation that delegates to the method declared in source. + + + + + Base for synthesized Lambda methods. + Just provides a bunch of defaults + + + + + Creates a clone of the local with a new containing symbol and type. + Note that the new parameter gets no syntaxRef as it is supposed to get + all the values it needs from the original parameter. + + + + + This class represents synthetic WithEvents property that overrides + one in one of the base classes. + + + When derived class contains "Handles" methods that refer to a + WithEvents property in a base class, derived class needs to add a + synthetic override for the base WithEvent property. + We need the override so that we could inject code sequences that + remove old handlers and add new handlers when something is assigned + to the property. + + Public Class Base + Protected Friend WithEvents w As Base = Me + Public Event e As System.Action + + Sub H1() Handles w.e + End Sub + End Class + + Public Class Derived + Inherits Base + + Sub H2() Handles w.e + End Sub + End Class + + + + + + Base (simplified) class for synthesized parameter symbols of methods that have been synthesized. E.g. the parameters of delegate methods + + + + + Initializes a new instance of the class. + + The containing symbol + The type of this parameter + The ordinal number of this parameter + The name of this parameter + + + + Gets the containing symbol. + + + + + The list of custom modifiers, if any, associated with the parameter. Evaluate this property only if IsModified is true. + + + + + A compile time constant value that should be supplied as the corresponding argument value by callers that do not explicitly specify an argument value for this parameter. + + + + + True if the parameter has a default value that should be supplied as the argument value by a caller for which the argument value has not been explicitly specified. + + + + + Gets a value indicating whether this instance is by ref. + + + true if this instance is by ref; otherwise, false. + + + + + True if the argument value must be included in the marshalled arguments passed to a remote callee only if it is different from the default value (if there is one). + + + + + Gets a value indicating whether this instance is param array. + + + true if this instance is param array; otherwise, false. + + + + + Gets a value indicating whether the symbol was generated by the compiler + rather than declared explicitly. + + + + + A potentially empty collection of locations that correspond to this instance. + + + + + Gets the ordinal. + + + + + Gets the type. + + + + + Gets the name. + + + + + Base class for synthesized parameter symbols of methods that have been synthesized. E.g. the parameters of delegate methods + + + + + Initializes a new instance of the class. + + The containing symbol + The type of this parameter + The ordinal number of this parameter + Whether the parameter is ByRef or not + The name of this parameter + + + + Initializes a new instance of the class. + + The containing symbol + The type of this parameter + The ordinal number of this parameter + Whether the parameter is ByRef or not + The name of this parameter + + + + Gets a value indicating whether this instance is by ref. + + + true if this instance is by ref; otherwise, false. + + + + + True if the argument value must be included in the marshalled arguments passed to a remote callee only if it is different from the default value (if there is one). + + + + + A compile time constant value that should be supplied as the corresponding argument value by callers that do not explicitly specify an argument value for this parameter. + + + + + True if the parameter has a default value that should be supplied as the argument value by a caller for which the argument value has not been explicitly specified. + + + + + Initializes a new instance of the class. + + The containing symbol + The type of this parameter + The ordinal number of this parameter + Whether the parameter is ByRef or not + The name of this parameter + The custom modifiers of this parameter type + The custom modifiers of ref modifier + + + + The list of custom modifiers, if any, associated with the parameter. Evaluate this property only if IsModified is true. + + + + + Extends SynthesizedParameterSymbol to also accept a location + + + + + A base class for symbols representing a synthesized property. + + + + + This class represents a base class for compiler generated methods + + + + + Gets the symbol name. Returns the empty string if unnamed. + + + + + Gets a value indicating whether this instance is abstract or not. + + + true if this instance is abstract; otherwise, false. + + + + + Gets a value indicating whether this instance is not overridable. + + + true if this instance is not overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overloads. + + + true if this instance is overloads; otherwise, false. + + + + + Gets a value indicating whether this instance is overridable. + + + true if this instance is overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overrides. + + + true if this instance is overrides; otherwise, false. + + + + + Gets a value indicating whether this instance is shared. + + + true if this instance is shared; otherwise, false. + + + + + A potentially empty collection of locations that correspond to this instance. + + + + + Gets what kind of method this is. There are several different kinds of things in the + VB language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + The parameters forming part of this signature. + + + + + This class represents a simple implementation of compiler generated constructors + + + + + Sets the parameters. + + The parameters. + + + + This class represents a base class for compiler generated methods + + + + + Sets the parameters. + + The parameters. + + + + Represents a field of a tuple type (such as (int, byte).Item1) + that doesn't have a corresponding backing field within the tuple underlying type. + Created in response to an error condition. + + + + + If this field represents a tuple element with index X, the field contains + 2X if this field represents a Default-named element + 2X + 1 if this field represents a Friendly-named element + Otherwise, (-1 - [index in members array]); + + + + + If this is a field representing a tuple element, + returns the index of the element (zero-based). + Otherwise returns -1 + + + + + Represents an event of a tuple type (such as (int, byte).SomeEvent) + that is backed by an event within the tuple underlying type. + + + + + Represents a non-element field of a tuple type (such as (int, byte).Rest) + that is backed by a real field within the tuple underlying type. + + + + + If this field represents a tuple element with index X, the field contains + 2X if this field represents a Default-named element + 2X + 1 if this field represents a Friendly-named element + Otherwise, (-1 - [index in members array]); + + + + + If this is a field representing a tuple element, + returns the index of the element (zero-based). + Otherwise returns -1 + + + + + Represents an element field of a tuple type (such as (int, byte).Item1) + that is backed by a real field with the same name within the tuple underlying type. + + + + + Represents an element field of a tuple type (such as (int a, byte b).a, or (int a, byte b).b) + that is backed by a real field with a different name within the tuple underlying type. + + + + + Represents a method of a tuple type (such as (int, byte).ToString()) + that is backed by a method within the tuple underlying type. + + + + + Represents a parameter of a method or a property of a tuple type + + + + + Represents a property of a tuple type (such as (int, byte).SomeProperty) + that is backed by a property within the tuple underlying type. + + + + + Names of the elements as provided when tuple was created + + + + + Which element names were inferred and therefore cannot be used. + If none of the element names were inferred, or inferred names can be used (no tracking necessary), leave as default. + This information is ignored in type equality and comparison. + + + + + Actual element names. + Could be different from _providedElementNames because of case insensitivity. + I.E. - it is not an error to provide "item1" name to the first element + however its name must be "Item1", since it already has the name "Item1" + and having both "item1" and "Item1" names would be ambiguous + + + + + Get the default fields for the tuple's elements (in order and cached). + + + + + A type parameter constraint: a single 'New', 'Class', + 'Structure' constraint or a specific type constraint. + + + + + Immutable. Thread-safe. + + Represents a type substitution, with substitutions of types for a set of type parameters. + Each TypeSubstitution object has three pieces of information: + - OriginalDefinition of generic symbol the substitution is targeting. + - An array of pairs that provide a mapping from symbol's type parameters to type arguments. + identity substitutions are omitted. + - TypeSubstitution object for containing type to provide mapping for its type + parameters, if any. + + The identity substitution (for the whole type hierarchy) is represented by Nothing. That said, + top level parent of non-Nothing instance of TypeSubstitution is guaranteed to be non-identity + substitution. The instance may still be an identity substitution just for target generic definition, + which will be represented by an empty mapping array. + + The chain of TypeSubstitution objects is guaranteed to not skip any type in the containership hierarchy, + even types with zero arity contained in generic type will have corresponding TypeSubstitution object with + empty mapping array. + + Example: + Class A(Of T,S) + Class B + Class C(Of U) + End Class + End Class + End Class + + TypeSubstitution for A(Of Integer, S).B.C(Of Byte) is C{U->Byte}=>B{}=>A{T->Integer} + TypeSubstitution for A(Of T, S).B.C(Of Byte) is C{U->Byte} + TypeSubstitution for A(Of Integer, S).B is B{}=>A{T->Integer} + TypeSubstitution for A(Of Integer, S).B.C(Of U) is C{}=>B{}=>A{T->Integer} + + CONSIDER: + An array of KeyValuePair(Of TypeParameterSymbol, TypeSymbol)objects is used to represent type + parameter substitution mostly due to historical reasons. It might be more convenient and more + efficient to use ordinal based array of TypeSymbol objects instead. + + There is a Construct method that can be called on original definition with TypeSubstitution object as + an argument. The advantage of that method is the ability to substitute type parameters of several types + in the containership hierarchy in one call. What type the TypeSubstitution parameter targets makes a + difference. + + For example: + C.Construct(C{}=>B{}=>A{T->Integer}) == A(Of Integer, S).B.C(Of U) + C.Construct(B{}=>A{T->Integer}) == A(Of Integer, S).B.C(Of ) + B.Construct(B{}=>A{T->Integer}) == A(Of Integer, S).B + + See comment for IsValidToApplyTo method as well. + + + + + A map between type parameters of _targetGenericDefinition and corresponding type arguments. + Represented by an array of Key-Value pairs. Keys are type parameters of _targetGenericDefinition + in no particular order. Identity substitutions are omitted. + + + + + Definition of a symbol which this instance of TypeSubstitution primarily targets. + + + + + An instance of TypeSubstitution describing substitution for containing type. + + + + + Get all the pairs of substitutions, including from the parent substitutions. The substitutions + are in order from outside-in (parent substitutions before child substitutions). + + + + + Verify TypeSubstitution to make sure it doesn't map any + type parameter to an alpha-renamed type parameter. + + + + + + Return TypeSubstitution instance that targets particular generic definition. + + + + + Return TypeSubstitution instance that targets particular + generic definition or one of its containers. + + + + + Does substitution target either genericDefinition or + one of its containers? + + + + + Combine two substitutions into one by concatenating. + + They may not directly or indirectly (through Parent) target the same generic definition. + sub2 is expected to target types lower in the containership hierarchy. + Either or both can be Nothing. + + targetGenericDefinition specifies target generic definition for the result. + If sub2 is not Nothing, it must target targetGenericDefinition. + If sub2 is Nothing, sub1 will be "extended" with identity substitutions to target + targetGenericDefinition. + + + + + Create a substitution. If the substitution is the identity substitution, Nothing is returned. + + Generic definition the result should target. + + Type parameter definitions. Duplicates aren't allowed. Type parameters of containing type + must precede type parameters of a nested type. + + Corresponding type arguments. + + + + + Create a substitution. If the substitution is the identity substitution, Nothing is returned. + + Generic definition the result should target. + + Type parameter definitions. Duplicates aren't allowed. Type parameters of containing type + must precede type parameters of a nested type. + + Corresponding type arguments. + + + + + Private helper to make sure identity substitutions are injected for types between + targetGenericDefinition and parent.TargetGenericDefinition. + + + + + Create substitution to handle alpha-renaming of type parameters. + It maps type parameter definition to corresponding alpha-renamed type parameter. + + Alpha-renamed type parameters. + + + + Create TypeSubstitution that can be used to substitute method's type parameters + in types involved in method's signature. + + Unlike for other construction methods in this class, targetMethod doesn't have to be + original definition, it is allowed to be specialized unconstructed generic method. + + An item in typeArguments can be an alpha-renamed type parameter, but it must belong + to the targetMethod and can only appear at its ordinal position to represent the lack + of substitution for it. + + + + + Adjust substitution for construction. + This has the following effects: + 1) The passed in additionalSubstitution is used on each type argument. + 2) If any parameters in the given additionalSubstitution are not present in oldConstructSubstitution, they are added. + 3) Parent substitution in oldConstructSubstitution is replaced with adjustedParent. + + oldConstructSubstitution can be cancelled out by additionalSubstitution. In this case, + if the adjustedParent is Nothing, Nothing is returned. + + + + + This has the following effects: + 1) The passed in additionalSubstitution is used on each type argument. + 2) If any parameters in the given additionalSubstitution are not present in oldConstructSubstitution, they are added. + + Result is placed into pairs. Identity substitutions are omitted. + + Returns True if the set of pairs have changed, False otherwise. + + + + + Create substitution for targetGenericDefinition based on its type + arguments (matched to type parameters by position) and TypeSubstitution + for direct or indirect container. + + + + + A TypeSymbol is a base class for all the symbols that represent a type + in Visual Basic. + + + + + + + + + + Map with all the explicitly implemented interface symbols declared on this type. + key = interface method/property/event compared using , + value = explicitly implementing methods/properties/events declared on this type (normally a single value, multiple in case of + an error). + Access through property ONLY! + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Gets the BaseType of this type. If the base type could not be determined, then + an instance of ErrorType is returned. If this kind of type does not have a base type + (for example, interfaces), Nothing is returned. Also the special class System.Object + always has a BaseType of Nothing. + + + + + Gets the set of interfaces that this type directly implements. This set does not + include interfaces that are base interfaces of directly implemented interfaces. + + + + + The list of all interfaces of which this type is a declared subtype, excluding this type + itself. This includes all declared base interfaces, all declared base interfaces of base + types, and all declared base interfaces of those results (recursively). Each result + appears exactly once in the list. This list is topologically sorted by the inheritance + relationship: if interface type A extends interface type B, then A precedes B in the + list. This is not quite the same as "all interfaces of which this type is a proper + subtype" because it does not take into account variance: AllInterfaces for + IEnumerable(Of String) will not include IEnumerable(Of Object). + + + + Produce all implemented interfaces in topologically sorted order. We use + TypeSymbol.Interfaces as the source of edge data, which has had cycles and infinitely + long dependency cycles removed. Consequently, it is possible (and we do) use the + simplest version of Tarjan's topological sorting algorithm. + + + + Gets the set of interfaces that this type directly implements, plus the base interfaces + of all such types. + Keys are compared using , + values are distinct interfaces corresponding to the key, according to rules. + + + CONSIDER: it probably isn't truly necessary to cache this. If space gets tight, consider + alternative approaches (recompute every time, cache on the side, only store on some types, + etc). + + + + + Returns true if this type is known to be a reference type. It is never the case + that and both return true. However, for an unconstrained + type parameter, and will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case + that and both return true. However, for an unconstrained + type parameter, and will both return false. + + + + + Is this a symbol for an anonymous type (including delegate). + + + + + Gets the kind of this type. + + + + + Gets corresponding special TypeId of this type. + + + + + Gets corresponding primitive type code for this type declaration. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Lookup an immediately nested type referenced from metadata, names should be + compared case-sensitively. + + + Type name. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + Verify if the given type can be used to back a tuple type + and return cardinality of that tuple type in . + + If method returns true, contains cardinality of the compatible tuple type. + + + + + Verify if the given type can be used to back a tuple type. + + + + + Verify if the given type is a tuple of a given cardinality, or can be used to back a tuple type + with the given cardinality. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Returns the corresponding symbol in this type or a base type that implements + interfaceMember (either implicitly or explicitly), or null if no such symbol + exists (which might be either because this type doesn't implement the container + of interfaceMember, or this type doesn't supply a member that successfully + implements interfaceMember). + + + Must be a non-null interface property, method, or event. + + The implementing member. + + + + Compute the implementation for an interface member in this type, or Nothing if none. + + + + + Get a dictionary with all the explicitly implemented interface symbols declared on this type. + + key = interface method/property/event compared using , + value = explicitly implementing methods/properties/events declared on this type (normally a single value, multiple in case of + an error). + + Note: This implementation is overridden by source symbols, because they diagnose errors also. + + + + + Compares types ignoring some differences. + + + + + Return true if nothing can inherit or implement this type. + + + + + Dig through possibly jagged array type to the ultimate element type + + + + + Returns true if is/inherits from/implements IEnumerable(Of U), and U is/inherits from/implements + + The type to check compatibility for. + The type argument for IEnumerable(Of ...) + True if type can be assigned to a IEnumerable(Of typeArgument); otherwise False. + This is not a general purpose helper. + + + + Determines whether the given type is valid for a const field. + VB Spec 9.5: The type of a constant may only be a primitive type or Object + + The type of the field. + true if type is valid for a const field; otherwise, false. + + + + + Return true if the type contains any tuples. + + + + + Return true if the type contains any tuples with element names. + + + + + Visit the given type and, in the case of compound types, visit all "sub type" + (such as A in A(), or { A(Of T), T, U } in A(Of T).B(Of U)) invoking 'predicate' + with the type and 'arg' at each sub type. If the predicate returns true for any type, + traversal stops and that type is returned from this method. Otherwise if traversal + completes without the predicate returning true for any type, this method returns null. + + + + + Determines if the type is a valid type for a custom attribute argument + + + + + + The only valid types are + 1. primitive types except date and decimal, + 2. object, system.type, public enumerated types + 3. one dimensional arrays of (1) and (2) above + + + + + Add this instance to the set of checked types. Returns True + if this type was added, False if the type was already in the set. + + + + Checks for validity of type arguments passed to Construct(...) method + + + + Returns Nothing for identity substitution. + + + + + Returns Nothing for identity substitution. + + + + + Is this type System.Linq.Expressions.Expression(Of T) for some delegate type T. If so, return the type + argument, else return nothing. + The passed-in compilation is used to find the well-known-type System.Linq.Expressions.Expression(Of T). + + + + + If the passed in type is a delegate type D, return D. + If the passed in type is a System.Linq.Expressions.Expression(Of D) for a delegate type D, return D. + Else return Nothing + + + + + If the passed in type is a delegate type D, return D and set wasExpression to False + If the passed in type is a System.Linq.Expressions.Expression(Of D) for a delegate type D, return D and set wasExpression to True + Else return Nothing and set wasExpression to False + + + + + If the passed in type is a System.Linq.Expressions.Expression(Of D) for a delegate type D, return True + + + + + Return all of the type parameters in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return all of the type parameters in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return all of the type arguments in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return all of the type arguments and their modifiers in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return true if the fully qualified name of the type's containing symbol + matches the given name. This method avoids string concatenations + in the common case where the type is a top-level type. + + + + + Extract type under assumption that there should be no custom modifiers. + The method asserts otherwise. + + + + + + Given a possibly constructed/specialized generic type, create a symbol + to represent an unbound generic type for its definition. + + + + + Force all declaration errors to be generated. + + + + + Represents an event that is based on another event. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Represents a field that is based on another field. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Represents a method that is based on another method. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Represents a named type that is based on another named type. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Represents a parameter that is based on another parameter. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Represents a property that is based on another property. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Represents a type parameter that is based on another type parameter. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Provides context for binding top-level statements in a script. + + + + + Create binder for binding the body of a method. + + + + + Provides lookup in types of imported namespaces, either at file level or project level. + + + + + Collect extension methods with the given name that are in scope in this binder. + The passed in ArrayBuilder must be empty. Extension methods from the same containing type + must be grouped together. + + + + + Binder used to bind using blocks. + It hosts the variables declared in the resource list (if they are declared). + + + + + Holds all information needed to rewrite a bound using block node. + + + + + A dictionary holding a placeholder, a conversion from placeholder to IDisposable and a condition if placeholder IsNot nothing + per type. + + + + + Syntax node for the using block. + + + + + Initializes a new instance of the class. + + The syntax node for the using block + A dictionary holding a placeholder, a conversion from placeholder to IDisposable and + a condition if placeholder IsNot nothing per type. + + + + Gets the Binder.DelegateResolutionResult for the given targetType. + + + One needs to call GetConversionClassification before in order to fill the cache. + + Type of the target. + The Binder.DelegateResolutionResult for the conversion + of the AddressOf operand to the target type + + + + + Gets the conversion classification. + + The destination type to convert to. + + + + Gets a value indicating whether this do loop is a DoTopLoop or not. In syntax error cases + where both conditions are used, priority is given to the first one. + It's recommended to consistently use this property instead of checking the TopConditionOpt and BottomConditionOpt + directly. + + + true if this loop is a DoTopLoop; otherwise, false. + + + + + Gets a value indicating whether the condition of this do loop is "until" or not. In syntax error cases + where both conditions are used, priority is given to the first one. + It's recommended to consistently use this property instead of checking TopConditionIsUntil and BottomConditionIsUntil + directly. + + + true if this loop is a DoTopLoop; otherwise, false. + + + + + Gets the optional bound condition expression for this do loop statement. In syntax error cases + where both conditions are used, priority is given to the first one. + It's recommended to consistently use this property instead of accessing TopConditionOpt or BottomConditionOpt + directly. + + + + + Returns true if calls and delegate invocations with this + expression as the receiver should be non-virtual calls. + + + + + Does expression refer to a physical memory location that can be modified? + + Note, Dev10 uses SXF_LVALUE flag on bound nodes to represent this concept. + + + + Returns True if the node specified is one of Me/MyClass/MyBase + + + + Returns True if the expression is a property access expression, + either directly or wrapped in an XML member access expression. + + + + + Does this node represent a property with Set accessor and AccessKind not yet bound to Get? + + + + + Does this node represent a property or latebound access not yet determined to be Get? + + + + + Get the access kind from property access expression. + + + + + Sets the access kind on the property access expression. To clear the access + kind, 'newAccessKind' should be Unknown. Otherwise, the current property + access kind should be Unknown or equal to 'newAccessKind'. + + + + + Return a BoundXmlMemberAccess node with + updated MemberAccess property. + + + + + Return true if and only if an expression is a integral literal with a value of zero. + Non-literal constant value zero does not qualify. + + + + + Return true if and only if an expression is a integral literal with a value of zero. + Non-literal constant value zero does not qualify. + + + + + Checks if the expression is a default value (0 or Nothing) + + + + + Checks if the expression is a constant and that constant is False + + + + + Checks if the expression is a constant and that constant is True + + + + + Checks if the expression is a negative integer constant value. + + + + + Return the integer constant value (if any) from a BoundExpression + + + + + Return true if and only if an expression is a semantical Nothing literal, + which is defined as follows (the definition is consistent with + definition used by Dev10 compiler): + - A Nothing literal according to the language grammar, or + - A parenthesized expression, for which IsNothingLiteral returns true, or + - An expression of type Object with constant value == Nothing. + + + + + Return true if target BoundLiteral represents Nothing literal as defined by the language grammar. + + + + + Return true if and only if an expression represents optionally + parenthesized Nothing literal as defined by the language grammar. + I.e. implicit conversions are Ok, but explicit conversions aren't. + + + + + returns type arguments or Nothing if group does not have type arguments. + + + + + Should this lambda be treated as a single line lambda? + + + + + Updates access kind. To clear the access kind, + 'newAccessKind' should be Unknown. Otherwise, the current + access kind should be Unknown or equal to 'newAccessKind'. + + + + + Updates property access kind. To clear the access kind, + 'newAccessKind' should be Unknown. Otherwise, the current + access kind should be Unknown or equal to 'newAccessKind'. + + + + + returns name used to lookup the method/property in the group. + + + + + returns the container of the first member in the group. + + + + + The node should not be treated as a direct semantical representation of the syntax it is associated with. + Some examples: + - implicit call for base constructor is associated with the constructor syntax. + - code in compiler generated constructor is associated with the type declaration. + + Nodes marked this way are likely to be skipped by SemanticModel, Sequence Point rewriter, etc. + + + + + Override this property to return the child nodes if the IOperation API corresponding to this bound node is not yet designed or implemented. + + + Note that any of the child bound nodes may be null. + + + + + Get the Binder from a lambda node, or return Nothing if this isn't + a lambda node. + + + + + The visitor which searches for a bound node inside a bound subtree + + + + Note: Nothing if node is found + + + + Updates property access kind. To clear the access kind, + 'newAccessKind' should be Unknown. Otherwise, the current + access kind should be Unknown or equal to 'newAccessKind'. + + + + + If the access includes a set, the type of the expression + is the type of the setter value parameter. Otherwise, the + type of the expression is the return type of the getter. + + + + + Consumers must provide implementation for . + + + + + We should be intentional about behavior of derived classes regarding guarding against stack overflow. + + + + Returns the placeholder used in this With statement to + substitute the expression in initial binding + + + + A draft version of initializers which will be used in this With statement. + Initializers are expressions which are used to capture expression in the current + With statement; they can be empty in some cases like if the expression is a local + variable of value type. + + Note, the initializers returned by this property are 'draft' because they are + generated based on initial bound tree, the real initializers will be generated + in lowering based on lowered expression form. + + + + + A draft version of placeholder substitute which will be used in this With statement. + + Note, the placeholder substitute returned by this property is 'draft' because it is + generated based on initial bound tree, the real substitute will be generated in lowering + based on lowered expression form. + + + + + Suppresses RValue validation when constructing the node. + Must be used _only_ when performing lambda inference where RValue inconsistency on this node is intentionally allowed. + If such node makes into a regular bound tree it will be eventually rewritten (all Yields are rewritten at some point) + and that will trigger validation. + + + + + For nodes that can generate an , this allows the Lazy implementation + to get the children of this node on demand. + + + + + NoOpStatementFlavor specifies additional info that NoOp statement may be carrying; + Such info may be used in rewriting or code gen phases to perform some special actions + + + + + Marks a control yield point for emitted await operator; is processed by codegen; + only allowed inside MoveNext methods generated for Async methods + + + + + Marks a control resume point for emitted await operator; is processed by codegen; + only allowed inside MoveNext methods generated for Async methods + + + + + BoundExpressions to be used for emit. The expressions are assumed + to be lowered and will not be visited by . + + + + + Should this lambda be treated as a single line lambda? + + + + + Is this a function lambda + + + + + target.ReturnType is ignored and must be Void, only parameter types are taken into consideration. + + + + + This class is used to cache various information about a lambda in the course of binding an expression/statement + containing the lambda. Even though the members are public, they shouldn't be accessed directly by any code + outside of the UnboundLambda class. + + + + Keeps track on current nesting level of try statements + + + Current enclosing Catch block if there is any. + + + + Emits address as in & + + May introduce a temp which it will return. (otherwise returns null) + + + + + Emits address of a temp. + Used in cases where taking address directly is not possible + (typically because expression does not have a home) + + Will introduce a temp which it will return. + + + + + Checks if expression represents directly or indirectly a value with its own home. + In such cases it is possible to get a reference without loading into a temporary. + + This is a CLR concept which is weaker than VB's IsLValue. + For example all locals are homed even if VB may consider some locals read-only. + + + + + Special HasHome for fields. Fields have homes when they are writable. + + + + + Checks if it is allowed to take a writable reference to expression according to VB rules. + + + + + Checks if it is allowed to take a writable reference to expression according to VB rules. + + + + + Can take a reference. + + + + + Emits receiver in a form that allows member accesses ( O or & ). For verifiably + reference types it is the actual reference. For generic types it is a address of the + receiver with readonly intent. For the value types it is an address of the receiver. + + isAccessConstrained indicates that receiver is a target of a constrained callvirt + in such case it is unnecessary to box a receiver that is typed to a type parameter + + May introduce a temp which it will return. (otherwise returns null) + + + + + May introduce a temp which it will return. (otherwise returns null) + + + + + Entry point to the array initialization. + Assumes that we have newly created array on the stack. + + inits could be an array of values for a single dimensional array + or an array (of array)+ of values for a multidimensional case + + in either case it is expected that number of leaf values will match number + of elements in the array and nesting level should match the rank of the array. + + + + + To handle array initialization of arbitrary rank it is convenient to + approach multidimensional initialization as a recursively nested. + + ForAll{i, j, k} Init(i, j, k) ===> + ForAll{i} ForAll{j, k} Init(i, j, k) ===> + ForAll{i} ForAll{j} ForAll{k} Init(i, j, k) + + This structure is used for capturing initializers of a given index and + the index value itself. + + + + + Emits all initializers that match indices on the stack recursively. + + Example: + if array has [0..2, 0..3, 0..2] shape + and we have {1, 2} indices on the stack + initializers for + [1, 2, 0] + [1, 2, 1] + [1, 2, 2] + + will be emitted and the top index will be pushed off the stack + as at that point we would be completely done with emitting initializers + corresponding to that index. + + + + + Count of all initializers. + + + + + Produces a serialized blob of all constant initializers. + Non-constant initializers are matched with a zero of corresponding size. + + + + + Check if it is a regular collection of expressions or there are nested initializers. + + + + + Returns parameterless value type constructor. + + + + + Used to decide if we need to emit call or callvirt. + It basically checks if the receiver expression cannot be null, but it is not 100% precise. + There are cases where it really can be null, but we do not care. + + + + + checks if receiver is effectively ldarg.0 + + + + + Used to decide if we need to emit 'call' or 'callvirt' for structure method. + It basically checks if the method overrides any other and method's defining type + is not a 'special' or 'special-by-ref' type. + + + + + Emit code for a ternary conditional operator. + + + if (b, x, y) becomes + push b + if pop then goto CONSEQUENCE + push y + goto DONE + CONSEQUENCE: + push x + DONE: + + + + + Emit code for a null-coalescing operator. + + + if(x, y) becomes + push x + dup x + if pop isnot null goto LEFT_NOT_NULL + pop + push y + LEFT_NOT_NULL: + + + + + Emit an element store instruction for a single dimensional array. + + + + + Tells if we should emit [Set/Clear]ProjectErrors when entering/leaving handlers + + + + + tells if given node contains a label statement that defines given label symbol + + + + + Delegate to emit string compare call and conditional branch based on the compare result. + + Key to compare + Node for diagnostics + Case constant to compare the key against + Target label to branch to if key = stringConstant + String equality method + + + + Gets the name And id of the local that are going to be generated into the debug metadata. + + + + + Gets already declared and initialized local. + + + + + Allocates a temp without identity. + + + + + Frees a temp without identity. + + + + + Frees an optional temp. + + + + + Optimizer performs optimization of the bound tree performed before passing it to a codegen. Generally it may + include several phases like stack scheduling of local variables, etc... + + + + + + context of expression evaluation. + it will affect inference of stack behavior + it will also affect when expressions can be dup-reused + Example: + Goo(x, ref x) x cannot be duped as it is used in different context + + + + + Analyzes the tree trying to figure which locals may live on stack. It is + a fairly delicate process and must be very familiar with how CodeGen works. + It is essentially a part of CodeGen. + + NOTE: It is always safe to mark a local as not eligible as a stack local + so when situation gets complicated we just refuse to schedule and move on. + + + + + fake local that represents the eval stack. when we need to ensure that eval + stack is not blocked by stack Locals, we record an access to empty. + + + + + here we have a case of indirect assignment: *t1 = expr; + normally we would need to push t1 and that will cause spilling of t2 + + TODO: an interesting case arises in unused x[i]++ and ++x[i] : + we have trees that look like: + + t1 = &(x[0]) + t2 = *t1 + *t1 = t2 + 1 + + t1 = &(x[0]) + t2 = *t1 + 1 + *t1 = t2 + + in these cases, we could keep t2 on stack (dev10 does). + we are dealing with exactly 2 locals and access them in strict order + t1, t2, t1, t2 and we are not using t2 after that. + We may consider detecting exactly these cases and pretend that we do not need + to push either t1 or t2 in this case. + + + + + VB uses a special node to assign references. + BoundAssignment is used only to assign values. + therefore an indirect assignment may only happen if lhs is a reference + + + + + Ensures that there are no stack locals. It is done by accessing + virtual "empty" local that is at the bottom of all stack locals. + + + + + + Represents a local and its Def-Use-Use chain + + NOTE: stack local reads are destructive to the locals so + if the read is not last one, it must be immediately followed by another definition. + For the rewriting purposes it is irrelevant if definition was created by a write or + a subsequent read. These cases are not ambiguous because when rewriting, definition + will match to a single node and we always know if given node is reading or writing. + + + + + + stack at variable declaration, may be > 0 in sequences. + + + + + value definitions for this variable + + + + + once this goes to true we are no longer interested in this variable. + + + + + Represents a span of a value between definition and use. Start/end positions are + specified in terms of global node count as visited by StackOptimizer visitors. + (i.e. recursive walk not looking into constants) + + + + + when current And other use spans are regular spans we can have only 2 conflict cases: + [1, 3) conflicts with [0, 2) + [1, 3) conflicts with [2, 4) + + NOTE: With regular spans, it is not possible for two spans to share an edge point + unless they belong to the same local. (because we cannot access two real locals at the same time) + + specifically: + [1, 3) does Not conflict with [0, 1) since such spans would need to belong to the same local + + + + + Dummy locals represent implicit control flow + it is not allowed for a regular local span to cross into or + be immediately adjacent to a dummy span. + + specifically: + [1, 3) does conflict with [0, 1) since that would imply a value flowing into or out of a span surrounded by a branch/label + + + + + + Rewrites the tree to account for destructive nature of stack local reads. + + Typically, last read stays as-is and local is destroyed by the read. + Intermediate reads are rewritten as Dups - + + NotLastUse(X_stackLocal) ===> NotLastUse(Dup) + LastUse(X_stackLocal) ===> LastUse(X_stackLocal) + + + + + + Built-in binary operators bound in "OperandOfConditionalBranch" mode are marked with + this flag by the Binder, which makes them eligible for some optimizations in + + + + + + marks built-in binary operators + with this flag in order to inform that the operator + should be a subject for optimization around use of three-valued Boolean logic. + The optimization should be applied only when we are absolutely sure that we will "snap" Null to false. + That is when we actually have the as the ancestor and no user defined operators + in between. We simply don't know that information during binding because we haven't bound binary operators + up the hierarchy yet. So the optimization is triggered by the fact of snapping Null to false + (getting to the method) and then we are making + sure we don't have anything unexpected in between. + + + + + The CommandLineArguments class provides members to Set and Get Visual Basic compilation and parse options. + + + + + Set and Get the Visual Basic compilation options. + + The currently set Visual Basic compilation options. + + + + Set and Get the Visual Basic parse options. + + The currently set Visual Basic parse options. + + + + Gets the core Parse options. + + The currently set core parse options. + + + + Gets the core compilation options. + + The currently set core compilation options. + + + + The VisualBasicCommandLineParser class contains members used to perform various Visual Basic command line parsing operations. + + + + + Gets the current command line parser. + + + + + Gets the current interactive command line parser. + + + + + Creates a new command line parser. + + An optional parameter indicating whether to create a interactive command line parser. + + + + Gets the standard Visual Basic source file extension + + A string representing the standard Visual Basic source file extension. + + + + Gets the standard Visual Basic script file extension. + + A string representing the standard Visual Basic script file extension. + + + + Parses a command line. + + A collection of strings representing the command line arguments. + The base directory used for qualifying file locations. + The directory to search for mscorlib, or Nothing if not available. + A string representing additional reference paths. + A CommandLineArguments object representing the parsed command line. + + + + Converts a sequence of definitions provided by a caller (public API) into map + of definitions used internally. + + Invalid value provided. + + + + Converts ImmutableDictionary of definitions used internally into IReadOnlyDictionary of definitions + returned to a caller (of public API) + + + + + Parses Conditional Compilations Symbols. Given the string of conditional compilation symbols from the project system, parse them and merge them with an IReadOnlyDictionary + ready to be given to the compilation. + + + The conditional compilation string. This takes the form of a comma delimited list + of NAME=Value pairs, where Value may be a quoted string or integer. + + A collection of reported diagnostics during parsing of symbolList, can be empty IEnumerable. + A collection representing existing symbols. Symbols parsed from will be merged with this dictionary. + Invalid value provided. + + + + NOTE: implicit line continuation will not be handled here and an error will be generated, + but explicit one (like ".... _\r\n ....") should work fine + + + + + Parses the given platform option. Legal strings are "anycpu", "x64", "x86", "itanium", "anycpu32bitpreferred", "arm". + In case an invalid value was passed, anycpu is returned. + + The value for platform. + The error bag. + + + + Parses the file alignment option. + In case an invalid value was passed, nothing is returned. + + The name of the option. + The value for the option. + The error bag. + + + + Parses the base address option. + In case an invalid value was passed, nothing is returned. + + The name of the option. + The value for the option. + The error bag. + + + + Parses the warning option. + + The value for the option. + + + + In VB, if the output file name isn't specified explicitly, then it is derived from the name of the + first input file. + + + http://msdn.microsoft.com/en-us/library/std9609e(v=vs.110) + Specify the full name and extension of the file to create. If you do not, the .exe file takes + its name from the source-code file containing the Sub Main procedure, and the .dll file takes + its name from the first source-code file. + + However, vbc.cpp has: + + + + + + Print compiler logo + + + + + + Print Commandline help message (up to 80 English characters per line) + + + + + + Structure containing all semantic information about an Await expression. + + + + + Initializes a new instance of the structure. + + + + + Gets the "GetAwaiter" method. + + + + + Gets the "GetResult" method. + + + + + Gets the "IsCompleted" property. + + + + + This structure holds the relevant bound node information relating to a particular syntax + node, used temporarily for GetSemanticInfo and similar APIs. + + + + + Traverses the symbol table checking for CLS compliance. + + + + + + + + Gets a value indicating whether Is allowed to analyze in parallel. + + + + + Traverses the symbol table checking for CLS compliance. + + Compilation that owns the symbol table. + Will be supplemented with documentation comment diagnostics. + To stop traversing the symbol table early. + Only report diagnostics from this syntax tree, if non-null. + If and is non-null, report diagnostics within this span in the . + + + + NOTE: Dev11 does some pretty weird things here. First, it ignores arity, + which seems like a good way to disambiguate symbols (in particular, + CLS Rule 43 says that the name includes backtick-arity). Second, it + does not consider two members with identical names (i.e. not differing + in case) to collide. + + + + + What is the argument to the (first) CLSCompliantAttribute on this symbol, if there is one? + Consider attributes inherited from base types. + + + + + What is the argument to the (first) CLSCompliantAttribute on this symbol, if there is one? + Do not consider attributes inherited from base types. + + + + + Return the containing module if the output kind is module and the containing assembly otherwise. + + + + + Based on CompilationPass::CLSReduceSignature. + + + + + The Compilation object is an immutable representation of a single invocation of the + compiler. Although immutable, a Compilation is also on-demand, in that a compilation can be + created quickly, but will that compiler parts or all of the code in order to respond to + method or properties. Also, a compilation can produce a new compilation with a small change + from the current compilation. This is, in many cases, more efficient than creating a new + compilation from scratch, as the new compilation can share information from the old + compilation. + + + + + For semantic model scenarios we continue processing documentation comment even in presence + of some errors. Now, we detect semantic model context from '_isForSingleSymbol' flag, + later we might consider introducing an explicit flag + + + + + Given a DocumentationCommentTriviaSyntax and the symbol, return the + full documentation comment text. + + + + + Gets the value of the first 'name' attribute on the element, returns Nothing in case + the attribute was not found or has an invalid value, reports necessary diagnostics in + the latest case + + + + + Return symbol text name the way Dev11 does it + + + + + Rewrites nodes in , which Is a snapshot of nodes from the original document. + We're mutating the tree as we rewrite, so it's important to grab a snapshot of the + nodes that we're going to reparent before we enumerate them. + + + + True, if the comment was written + + + + Generates the documentation comment for the type, writes it into + the writer + + + + + Given the full text of a documentation comment, strip off the comment + punctuation (''') and add appropriate indentations. + + + + + Given a string, find the index of the first non-whitespace char. + + The string to search + The index of the first non-whitespace char in the string + + + + Find the first non-whitespace character in a given substring. + + The string to search + The start index + The last index (non-inclusive) + The index of the first non-whitespace char after index + start in the string up to, but not including the end index + + + + Determine if the given string starts with the given prefix if whitespace + is first trimmed from the beginning. + + The string to search + The prefix + true if "str.TrimStart().StartsWith(prefix)" + + + + Given a string which may contain newline sequences, get the index of the first newline + sequence beginning at the given starting index. + + The string to split. + The starting index within the string. + The length of the newline sequence discovered. 0 if the end of the string was reached, otherwise either 1 or 2 chars + The index of the start of the first newline sequence following the start index + + + + Given the full text of a single-line style documentation comment, for each line, strip off + the comment punctuation (''') and flatten the text. + + + + + WORKAROUND: + We're taking a dependency on the location and structure of a framework assembly resource. This is not a robust solution. + + Possible alternatives: + 1) Polish our XML parser until it matches MSXML. We don't want to reinvent the wheel. + 2) Build a map that lets us go from XML string positions back to source positions. + This is what the native compiler did, and it was a lot of work. We'd also still need to modify the message. + 3) Do not report a diagnostic. This is very unhelpful. + 4) Report a vague diagnostic (i.e. there's a problem somewhere in this doc comment). This is relatively unhelpful. + 5) Always report the message in English, so that we can pull it apart without needing to mess with resource files. + This engenders a lot of ill will. + 6) Report the exception message without modification and (optionally) include the text with respect to which the + position is specified. This looks amateurish. + + + + + Traverses the symbol table processing XML documentation comments and optionally writing them to a provided stream. + + Compilation that owns the symbol table. + Assembly name override, if specified. Otherwise the of the source assembly is used. + Stream to which XML will be written, if specified. + Will be supplemented with documentation comment diagnostics. + To stop traversing the symbol table early. + Only report diagnostics from this syntax tree, if non-null. + If and filterSpanWithinTree is non-null, report diagnostics within this span in the . + + + + Gets the XML that would be written to the documentation comment file for this assembly. + + The symbol for which to retrieve documentation comments. + True to treat includes as semantically meaningful + (pull in contents from other files and bind crefs, etc). + To stop traversing the symbol table early. + + + + Walks a DocumentationCommentTriviaSyntax, binding the semantically meaningful parts + to produce diagnostics and to replace source crefs with documentation comment IDs. + + + + + Given a DocumentationCommentTriviaSyntax, return the full text, but with + documentation comment IDs substituted into crefs. + + + + + most of time all compilation would use same MyTemplate. no reason to create (reparse) one for each compilation + as long as its parse option is same + + + + + The SourceAssemblySymbol for this compilation. Do not access directly, use Assembly + property instead. This field is lazily initialized by ReferenceManager, + ReferenceManager.CacheLockObject must be locked while ReferenceManager "calculates" the + value and assigns it, several threads must not perform duplicate "calculation" + simultaneously. + + + + + Holds onto data related to reference binding. + The manager is shared among multiple compilations that we expect to have the same result of reference binding. + In most cases this can be determined without performing the binding. If the compilation however contains a circular + metadata reference (a metadata reference that refers back to the compilation) we need to avoid sharing of the binding results. + We do so by creating a new reference manager for such compilation. + + + + + The options passed to the constructor of the Compilation + + + + + The global namespace symbol. Lazily populated on first access. + + + + + The syntax trees explicitly given to the compilation at creation, in ordinal order. + + + + + The syntax trees of this compilation plus all 'hidden' trees + added to the compilation by compiler, e.g. Vb Core Runtime. + + + + + A map between syntax trees and the root declarations in the declaration table. + Incrementally updated between compilation versions when source changes are made. + + + + + Imports appearing in s in this compilation. + + + Unlike in C#, we don't need to use a set because the objects + that record the imports are persisted. + + + + + Cache the CLS diagnostics for the whole compilation so they aren't computed repeatedly. + + + NOTE: Presently, we do not cache the per-tree diagnostics. + + + + + A SyntaxTree and the associated RootSingleNamespaceDeclaration for an embedded + syntax tree in the Compilation. Unlike the entries in m_rootNamespaces, the + SyntaxTree here is lazy since the tree cannot be evaluated until the references + have been resolved (as part of binding the source module), and at that point, the + SyntaxTree may be Nothing if the embedded tree is not needed for the Compilation. + + + + + The declaration table that holds onto declarations from source. Incrementally updated + between compilation versions when source changes are made. + + + + + + Manages anonymous types declared in this compilation. Unifies types that are structurally equivalent. + + + + + Manages automatically embedded content. + + + + + MyTemplate automatically embedded from resource in the compiler. + It doesn't feel like it should be managed by EmbeddedSymbolManager + because MyTemplate is treated as user code, i.e. can be extended via + partial declarations, doesn't require "on-demand" metadata generation, etc. + + SyntaxTree.Dummy means uninitialized. + + + + + Contains the main method of this assembly, if there is one. + + + + + The set of trees for which a has been added to the queue. + + + + + The common language version among the trees of the compilation. + + + + + The language version that was used to parse the syntax trees of this compilation. + + + + + SyntaxTree of MyTemplate for the compilation. Settable for testing purposes only. + + + + + Create a new compilation from scratch. + + Simple assembly name. + The syntax trees with the source code for the new compilation. + The references for the new compilation. + The compiler options to use. + A new compilation. + + + + Creates a new compilation that can be used in scripting. + + + + + Create a duplicate of this compilation with different symbol instances + + + + + Creates a new compilation with the specified name. + + + + + Creates a new compilation with the specified references. + + + The new will query the given for the underlying + metadata as soon as the are needed. + + The New compilation uses whatever metadata is currently being provided by the . + E.g. if the current compilation references a metadata file that has changed since the creation of the compilation + the New compilation is going to use the updated version, while the current compilation will be using the previous (it doesn't change). + + + + + Returns a new compilation with the given compilation set as the previous submission. + + + + + Returns a new compilation with the given semantic model provider. + + + + + Returns a new compilation with a given event queue. + + + + + Get a read-only list of the syntax trees that this compilation was created with. + + + + + Get a read-only list of the syntax trees that this compilation was created with PLUS + the trees that were automatically added to it, i.e. Vb Core Runtime tree. + + + + + Is the passed in syntax tree in this compilation? + + + + + Returns True if the set of references contains those assemblies needed for XML + literals. + If those assemblies are included, we should include the InternalXmlHelper + SyntaxTree in the Compilation so the helper methods are available for binding XML. + + + + + Compare two source locations, using their containing trees, and then by Span.First within a tree. + Can be used to get a total ordering on declarations, for example. + + + + + Compare two source locations, using their containing trees, and then by Span.First within a tree. + Can be used to get a total ordering on declarations, for example. + + + + + Compare two source locations, using their containing trees, and then by Span.First within a tree. + Can be used to get a total ordering on declarations, for example. + + + + + Gets the or for a metadata reference used to create this compilation. + + or corresponding to the given reference or Nothing if there is none. + + Uses object identity when comparing two references. + + + + + Gets the that corresponds to the assembly symbol. + + + + + Determine if enum arrays can be initialized using block initialization. + + True if it's safe to use block initialization for enum arrays. + + In NetFx 4.0, block array initializers do not work on all combinations of {32/64 X Debug/Retail} when array elements are enums. + This is fixed in 4.5 thus enabling block array initialization for a very common case. + We look for the presence of which was introduced in .NET Framework 4.5 + + + + + Gets the AssemblySymbol that represents the assembly being created. + + + + + Get a ModuleSymbol that refers to the module being created by compiling all of the code. By + getting the GlobalNamespace property of that module, all of the namespace and types defined in source code + can be obtained. + + + + + Gets the merged root namespace that contains all namespaces and types defined in source code or in + referenced metadata, merged into a single namespace hierarchy. This namespace hierarchy is how the compiler + binds types that are referenced in code. + + + + + Get the "root" or default namespace that all source types are declared inside. This may be the + global namespace or may be another namespace. + + + + + Given a namespace symbol, returns the corresponding namespace symbol with Compilation extent + that refers to that namespace in this compilation. Returns Nothing if there is no corresponding + namespace. This should not occur if the namespace symbol came from an assembly referenced by this + compilation. + + + + + Returns the list of member imports that apply to all syntax trees in this compilation. + + + + + Returns the list of alias imports that apply to all syntax trees in this compilation. + + + + + Determine what kind of conversion, if any, there is between the types + "source" and "destination". + + + + + A symbol representing the implicit Script class. This is null if the class is not + defined in the compilation. + + + + + Resolves a symbol that represents script container (Script class). + Uses the full name of the container class stored in to find the symbol. + + + The Script class symbol or null if it is not defined. + + + + + Get symbol for predefined type from Cor Library referenced by this compilation. + + + + + Get symbol for predefined type member from Cor Library referenced by this compilation. + + + + + Lookup a type within the compilation's assembly and all referenced assemblies + using its canonical CLR metadata name (names are compared case-sensitively). + + + + + Symbol for the type or null if type cannot be found or is ambiguous. + + + + + Get a fresh SemanticModel. Note that each invocation gets a fresh SemanticModel, each of + which has a cache. Therefore, one effectively clears the cache by discarding the + SemanticModel. + + + + + Get all diagnostics for the entire compilation. This includes diagnostics from parsing, declarations, and + the bodies of methods. Getting all the diagnostics is potentially a length operations, as it requires parsing and + compiling all the code. The set of diagnostics is not caches, so each call to this method will recompile all + methods. + + Cancellation token to allow cancelling the operation. + + + + Get parse diagnostics for the entire compilation. This includes diagnostics from parsing BUT NOT from declarations and + the bodies of methods or initializers. The set of parse diagnostics is cached, so calling this method a second time + should be fast. + + + + + Get declarations diagnostics for the entire compilation. This includes diagnostics from declarations, BUT NOT + the bodies of methods or initializers. The set of declaration diagnostics is cached, so calling this method a second time + should be fast. + + Cancellation token to allow cancelling the operation. + + + + Get method body diagnostics for the entire compilation. This includes diagnostics only from + the bodies of methods and initializers. These diagnostics are NOT cached, so calling this method a second time + repeats significant work. + + Cancellation token to allow cancelling the operation. + + + + Get all errors in the compilation, up through the given compilation stage. Note that this may + require significant work by the compiler, as all source code must be compiled to the given + level in order to get the errors. Errors on Options should be inspected by the user prior to constructing the compilation. + + + Returns all errors. The errors are not sorted in any particular order, and the client + should sort the errors as desired. + + + + + Return true if there is a source declaration symbol name that meets given predicate. + + + + + Return source declaration symbols whose name meets given predicate. + + + + + Return true if there is a source declaration symbol name that matches the provided name. + This may be faster than when predicate is just a simple string check. + is case insensitive. + + + + + ReferenceManager encapsulates functionality to create an underlying SourceAssemblySymbol + (with underlying ModuleSymbols) for Compilation and AssemblySymbols for referenced assemblies + (with underlying ModuleSymbols) all properly linked together based on reference resolution + between them. + + ReferenceManager is also responsible for reuse of metadata readers for imported modules and + assemblies as well as existing AssemblySymbols for referenced assemblies. In order to do that, + it maintains global cache for metadata readers and AssemblySymbols associated with them. + The cache uses WeakReferences to refer to the metadata readers and AssemblySymbols to allow + memory and resources being reclaimed once they are no longer used. The tricky part about reusing + existing AssemblySymbols is to find a set of AssemblySymbols that are created for the referenced + assemblies, which (the AssemblySymbols from the set) are linked in a way, consistent with the + reference resolution between the referenced assemblies. + + When existing Compilation is used as a metadata reference, there are scenarios when its underlying + SourceAssemblySymbol cannot be used to provide symbols in context of the new Compilation. Consider + classic multi-targeting scenario: compilation C1 references v1 of Lib.dll and compilation C2 + references C1 and v2 of Lib.dll. In this case, SourceAssemblySymbol for C1 is linked to AssemblySymbol + for v1 of Lib.dll. However, given the set of references for C2, the same reference for C1 should be + resolved against v2 of Lib.dll. In other words, in context of C2, all types from v1 of Lib.dll + leaking through C1 (through method signatures, etc.) must be retargeted to the types from v2 of Lib.dll. + In this case, ReferenceManager creates a special RetargetingAssemblySymbol for C1, which is responsible + for the type retargeting. The RetargetingAssemblySymbols could also be reused for different + Compilations, ReferenceManager maintains a cache of RetargetingAssemblySymbols (WeakReferences) for each + Compilation. + + The only public entry point of this class is CreateSourceAssembly() method. + + + + + VB allows two weak assembly references of the same simple name be passed to a compilation + as long as their versions are different. It ignores culture. + + + + + Creates a from specified metadata. + + + Used by EnC to create symbols for emit baseline. The PE symbols are used by . + + The assembly references listed in the metadata AssemblyRef table are matched to the resolved references + stored on this . We assume that the dependencies of the baseline metadata are + the same as the dependencies of the current compilation. This is not exactly true when the dependencies use + time-based versioning pattern, e.g. AssemblyVersion("1.0.*"). In that case we assume only the version + changed And nothing else. + + Each AssemblyRef is matched against the assembly identities using an exact equality comparison modulo version. + AssemblyRef with lower version in metadata is matched to a PE assembly symbol with the higher version + (provided that the assembly name, culture, PKT And flags are the same) if there is no symbol with the exactly matching version. + If there are multiple symbols with higher versions selects the one with the minimal version among them. + + Matching to a higher version is necessary to support EnC for projects whose P2P dependencies use time-based versioning pattern. + The versions of the dependent projects seen from the IDE will be higher than + the one written in the metadata at the time their respective baselines are built. + + No other unification or further resolution is performed. + + + + + A map of the PE assembly symbol identities to the identities of the original metadata AssemblyRefs. + This map will be used in emit when serializing AssemblyRef table of the delta. For the delta to be compatible with + the original metadata we need to map the identities of the PE assembly symbols back to the original AssemblyRefs (if different). + In other words, we pretend that the versions of the dependencies haven't changed. + + + + + Guarded by . + + + + + Import options of the compilation being built. + + + + + For testing purposes only. + + + + + For testing purposes only. + + + + + An array of cached well known types available for use in this Compilation. + Lazily filled by GetWellKnownType method. + + + + + + Lazy cache of well known members. + Not yet known value is represented by ErrorTypeSymbol.UnknownResultType + + + + + Synthesizes a custom attribute. + Returns Nothing if the symbol is missing, + or any of the members in are missing. + The attribute is synthesized only if present. + + + Takes a list of pairs of well-known members and constants. The constants + will be passed to the field/property referenced by the well-known member. + If the well-known member does Not exist in the compilation then no attribute + will be synthesized. + + + Indicates if this particular attribute application should be considered optional. + + + + + Lookup member declaration in well known type used by this Compilation. + + + + + In case duplicate types are encountered, returns an error type. + But if the IgnoreCorLibraryDuplicatedTypes compilation option is set, any duplicate type found in corlib is ignored and doesn't count as a duplicate. + + + + + Structure containing all semantic information about a for each statement. + + + + + Gets the "GetEnumerator" method. + + + + + Gets the "MoveNext" method. + + + + + Gets the "Current" property. + + + + + Gets the "Dispose" method. + + + + + The intermediate type to which the output of the is converted + before being converted to the iteration variable type. + + + As you might hope, for an array, it is the element type of the array. + + + + + The conversion from the to the iteration variable type. + + + May be user-defined. + + + + + The conversion from the type of the to the . + + + Frequently the identity conversion. + + + + + Initializes a new instance of the structure. + + The GetEnumerator method. + The MoveNext method. + The Current property. + The Dispose method. + + + + This is an implementation of a special symbol comparer, which is supposed to be used for + sorting original definition symbols (explicitly or explicitly declared in source within the same + container) in lexical order of their declarations. It will not work on anything that uses non-source locations. + + + + + Completes binding and performs analysis of bound trees for the purpose of obtaining diagnostics. + + NOTE: This method does not perform lowering/rewriting/emit. + Errors from those stages require complete compile, + but generally are not interesting during editing. + + NOTE: the bound tree produced by this method are not stored anywhere + and immediately lost after diagnostics of a particular tree is done. + + + + + + Compiles given compilation into provided module. + + NOTE: it is ok for moduleBeingBuiltOpt to be Nothing. + In such case the only results of this method would be diagnostics for complete compile. + + NOTE: the bound/lowered trees produced by this method are not stored anywhere and + immediately lost after obtaining method bodies and diagnostics for a particular + tree. + + + + + Detects cycles in constructor invocations based on the 'constructor-calls-constructor' + map provided in 'constructorCallMap', reports errors if found. + + NOTE: 'constructorCallMap' is being mutated by this method + + + + All the constructors in the cycle will be reported + + + + Compiles the method. + + + If the method being compiled is a constructor, CompileMethod returns in this parameter + the symbol of the constructor called from the one being compiled either explicitly or implicitly. + For structure constructors calling parameterless constructor returns the synthesized constructor symbol. + + + + + If any of the "Handles" in the list have synthetic WithEvent override + as a container, then this method will (if not done already) inject + property/accessors symbol into the emit module and assign bodies to the accessors. + + + + + Assuming the statement is a constructor call wrapped in bound expression + statement, get the method symbol being called + + + + + Indicates whether the compiler accepted or rejected the method during overload resolution. + + + + + Represents the results of overload resolution for a single method. + + + + + The method or property considered during overload resolution. + + + + + Indicates why the compiler accepted or rejected the method during overload resolution. + + + + + Returns true if the compiler accepted this method as the sole correct result of overload resolution. + + + + + Returns true if the method is considered in its expanded param array form. + + + + + Summarizes the results of an overload resolution analysis. Describes whether overload resolution + succeeded, and which method was selected if overload resolution succeeded. + + + + + True if overload resolution successfully selected a single best method. + + + + + If overload resolution successfully selected a single best method, returns information + about that method. Otherwise returns Nothing. + + + + + If there was a method that overload resolution considered better than all others, + returns information about that method. A method may be returned even if that method was + not considered a successful overload resolution, as long as it was better than any other + potential method considered. + + + + + Returns information about each method that was considered during overload resolution, + and what the results of overload resolution were for that method. + + + + + The symbol that was referred to by the identifier, if any. + + + + + Returns the constant value associated with the symbol, if any. + + + + + + Optional AsQueryable/AsEnumerable/Cast(Of Object) method used + to "convert" to queryable + collection. + + + + + Optional Select method to handle AsClause. + + + + + SelectMany method for , which is not the first + in a , and is not the first + in . + + + + + The first of the two optional Select methods associated with . + + + + + The second of the two optional Select methods associated with . + + + + + Allows asking semantic questions about a tree of syntax nodes in a Compilation. Typically, + an instance is obtained by a call to Compilation.GetBinding. + + + An instance of SemanticModel caches local symbols and semantic information. Thus, it + is much more efficient to use a single instance of SemanticModel when asking multiple + questions about a syntax tree, because information from the first question may be reused. + This also means that holding onto an instance of SemanticModel for a long time may keep a + significant amount of memory from being garbage collected. + + + When an answer is a named symbol that is reachable by traversing from the root of the symbol + table, (that is, from an AssemblySymbol of the Compilation), that symbol will be returned + (i.e. the returned value will be reference-equal to one reachable from the root of the + symbol table). Symbols representing entities without names (e.g. array-of-int) may or may + not exhibit reference equality. However, some named symbols (such as local variables) are + not reachable from the root. These symbols are visible as answers to semantic questions. + When the same SemanticModel object is used, the answers exhibit reference-equality. + + + + + + Returns information about methods associated with CollectionRangeVariableSyntax. + + + + + Returns information about methods associated with AggregateClauseSyntax. + + + + + DistinctClauseSyntax - Returns Distinct method associated with DistinctClauseSyntax. + + WhereClauseSyntax - Returns Where method associated with WhereClauseSyntax. + + PartitionWhileClauseSyntax - Returns TakeWhile/SkipWhile method associated with PartitionWhileClauseSyntax. + + PartitionClauseSyntax - Returns Take/Skip method associated with PartitionClauseSyntax. + + GroupByClauseSyntax - Returns GroupBy method associated with GroupByClauseSyntax. + + JoinClauseSyntax - Returns Join/GroupJoin method associated with JoinClauseSyntax/GroupJoinClauseSyntax. + + SelectClauseSyntax - Returns Select method associated with SelectClauseSyntax, if needed. + + FromClauseSyntax - Returns Select method associated with FromClauseSyntax, which has only one + CollectionRangeVariableSyntax and is the only query clause within + QueryExpressionSyntax. NotNeeded SymbolInfo otherwise. + The method call is injected by the compiler to make sure that query is translated to at + least one method call. + + LetClauseSyntax - NotNeeded SymbolInfo. + + OrderByClauseSyntax - NotNeeded SymbolInfo. + + AggregateClauseSyntax - Empty SymbolInfo. GetAggregateClauseInfo should be used instead. + + + + + Returns Select method associated with ExpressionRangeVariableSyntax within a LetClauseSyntax, if needed. + NotNeeded SymbolInfo otherwise. + + + + + Returns aggregate function associated with FunctionAggregationSyntax. + + + + + Returns OrderBy/OrderByDescending/ThenBy/ThenByDescending method associated with OrderingSyntax. + + + + + The compilation associated with this binding. + + + + + The root node of the syntax tree that this binding is based on. + + + + + Gets symbol information about an expression syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets symbol information about the 'Add' method corresponding to an expression syntax within collection initializer. + This is the worker function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called and the is in the right place in the syntax tree. + + + + + Gets symbol information about an attribute syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets type information about an expression syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets type information about an attribute syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets constant value information about an expression syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets member group information about an expression syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets member group information about an attribute syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets symbol information about a cref reference syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. + + + + + Returns what symbol(s), if any, the given expression syntax bound to in the program. + + An AliasSymbol will never be returned by this method. What the alias refers to will be + returned instead. To get information about aliases, call GetAliasInfo. + + If binding the type name C in the expression "new C(...)" the actual constructor bound to + will be returned (or all constructor if overload resolution failed). This occurs as long as C + unambiguously binds to a single type that has a constructor. If C ambiguously binds to multiple + types, or C binds to a static class, then type(s) are returned. + + + + + Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax + within . + + + + + Returns what symbol(s), if any, the given cref reference syntax bound to in the documentation comment. + + An AliasSymbol will never be returned by this method. What the alias refers to will be + returned instead. + + + + + Binds the expression in the context of the specified location and get semantic + information such as type, symbols and diagnostics. This method is used to get semantic + information about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Bind the attribute in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about an attribute + that did not actually appear in the source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. In order to obtain + the correct scoping rules for the attribute, position should be the Start position of the Span of the symbol that + the attribute is being applied to. + + A syntax node that represents a parsed attribute. This syntax node + need not and typically does not appear in the source code referred to SemanticModel instance. + The semantic information for the topmost node of the attribute. + + + + Gets type information about an expression. + + The syntax node to get type information for. + + + + Binds the expression in the context of the specified location and gets type information. + This method is used to get type information about an expression that did not actually + appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The type information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the conversion that occurred between the expression's type and type implied by the expression's context. + + + + + Gets the conversion that occurred between the expression's type and type implied by the expression's context. + + + + + Binds the expression in the context of the specified location and gets constant value information. + This method is used to get information about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to by SemanticModel + instance. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + If "nameSyntax" resolves to an alias name, return the AliasSymbol corresponding + to A. Otherwise return null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the binder that encloses the position. See comment on LookupSymbols for how + positions are interpreted. + + + + + When doing speculative binding, we don't have any context information about expressions or the + context that is expected. We try to interpret as a value, but + only if it doesn't cause additional errors (indicating that it wasn't value to interpret it + that way). This should get us the most "liberal" interpretation + for semantic information. + + + + + Bind the given attribute speculatively at the given position, and return back + the resulting bound node. May return null in some error cases. + + + + + Bind the given attribute speculatively at the given position, and return back + the resulting bound node summary. May return null in some error cases. + + + + + In cases where we are binding C in "[C(...)]", the bound nodes return the symbol for the type. However, we've + decided that we want this case to return the constructor of the type instead (based on the SemanticInfoOptions. This + affects only attributes. This method checks for this situation and adjusts the syntax and method group. + + + + + Gets the available named symbols in the context of the specified location And optional container. Only + symbols that are accessible And visible from the given location are returned. + + The character position for determining the enclosing declaration scope And + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position Is used. + The name of the symbol to find. If null Is specified then symbols + with any names are returned. + Consider (reduced) extension methods. + A list of symbols that were found. If no symbols were found, an empty list Is returned. + + The "position" Is used to determine what variables are visible And accessible. Even if "container" Is + specified, the "position" location Is significant for determining which members of "containing" are + accessible. + + Labels are Not considered (see ). + + Non-reduced extension methods are considered regardless of the value of . + + + + + Gets the available base type members in the context of the specified location. Akin to + calling with the container set to the immediate base type of + the type in which occurs. However, the accessibility rules + are different: protected members of the base type will be visible. + + Consider the following example: + + Public Class Base + Protected Sub M() + End Sub + End Class + + Public Class Derived : Inherits Base + Sub Test(b as Base) + b.M() ' Error - cannot access protected member. + MyBase.M() + End Sub + End Class + + Protected members of an instance of another type are only accessible if the instance is known + to be "this" instance (as indicated by the "MyBase" keyword). + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. + + Non-reduced extension methods are considered, but reduced extension methods are not. + + + + + Gets the available named static member symbols in the context of the specified location And optional container. + Only members that are accessible And visible from the given location are returned. + + Non-reduced extension methods are considered, since they are static methods. + + The character position for determining the enclosing declaration scope And + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position Is used. + The name of the symbol to find. If null Is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list Is returned. + + The "position" Is used to determine what variables are visible And accessible. Even if "container" Is + specified, the "position" location Is significant for determining which members of "containing" are + accessible. + + + + + Gets the available named namespace And type symbols in the context of the specified location And optional container. + Only members that are accessible And visible from the given location are returned. + + The character position for determining the enclosing declaration scope And + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position Is used. + The name of the symbol to find. If null Is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list Is returned. + + The "position" Is used to determine what variables are visible And accessible. Even if "container" Is + specified, the "position" location Is significant for determining which members of "containing" are + accessible. + + Does Not return INamespaceOrTypeSymbol, because there could be aliases. + + + + + Gets the available named label symbols in the context of the specified location And optional container. + Only members that are accessible And visible from the given location are returned. + + The character position for determining the enclosing declaration scope And + accessibility. + The name of the symbol to find. If null Is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list Is returned. + + The "position" Is used to determine what variables are visible And accessible. Even if "container" Is + specified, the "position" location Is significant for determining which members of "containing" are + accessible. + + + + + Gets the available named symbols in the context of the specified location and optional + container. Only symbols that are accessible and visible from the given location are + returned. + + The character position for determining the enclosing declaration + scope and accessibility. + The container to search for symbols within. If null then the + enclosing declaration scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + Additional options that affect the lookup process. + Ignore 'throughType' in accessibility checking. + Used in checking accessibility of symbols accessed via 'MyBase' or 'base'. + A list of symbols that were found. If no symbols were found, an empty list is + returned. + + The "position" is used to determine what variables are visible and accessible. Even if + "container" is specified, the "position" location is significant for determining which + members of "containing" are accessible. + + Locations are character locations, just as used as the Syntax APIs such as FindToken, or + returned from the Span property on tokens and syntax node. + + The text of the program is divided into scopes, which nest but don't otherwise + intersect. When doing an operation such as LookupSymbols, the code first determines the + smallest scope containing the position, and from there all containing scopes. + + Scopes that span an entire block statement start at the beginning of the first token of + the block header, and end immediately before the statement terminator token following + the end statement of the block. If the end statement of the block is missing, it ends + immediately before the next token. Examples of these include members and type parameters + of a type, type parameters of a method, and variables declared in a For statement. + + Scopes that span the interior of a block statement start at the statement terminator of + the block header statement, and end immediately before the first token of the end + statement of the block. If the end statement of the block is missing, it ends + immediately before the next statement. Examples of these include local variables, method + parameters, and members of a namespace. + + Scopes of variables declared in a single-line If statement start at the beginning of the + "Then" token, and end immediately before the Else token or statement terminator. + + Scopes of variables declared in the Else part of a single-line If start at the beginning + of the "Else" token, and end immediately before the statement terminator. + + Some specialized binding rules are in place for a single statement, like Imports or + Inherits. These specialized binding rules begin at the start of the first token of the + statement, and end immediately before the statement terminator of that statement. + + In all of the above, the "start" means the start of a token without considering leading + trivia. In other words, Span.Start, not FullSpan.Start. With the exception of + documentation comments, all scopes begin at the start of a token, and end immediately + before the start of a token. + + The scope of the default namespace, and all symbols introduced via Imports statements, + is the entire file. + + Positions within a documentation comment that is correctly attached to a symbol take on + the binding scope of that symbol. + + Throws an argument exception if the passed lookup options are invalid. + + + + Gets the names of the available named symbols in the context of the specified location + and optional container. Only symbols that are accessible and visible from the given + location are returned. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The container to search for symbols within. If null then the + enclosing declaration scope around position is used. + Additional options that affect the lookup process. + + The "position" is used to determine what variables are visible and accessible. Even if + "container" is specified, the "position" location is significant for determining which + members of "containing" are accessible. + + + + + Determines if the symbol is accessible from the specified location. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The symbol that we are checking to see if it accessible. + + True if "symbol is accessible, false otherwise. + + This method only checks accessibility from the point of view of the accessibility + modifiers on symbol and its containing types. Even if true is returned, the given symbol + may not be able to be referenced for other reasons, such as name hiding. + + + + + Analyze control-flow within a part of a method body. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the control flow analysis. + The two statements are not contained within the same statement list. + + + + Analyze control-flow within a part of a method body. + + The statement to be included in the analysis. + An object that can be used to obtain the result of the control flow analysis. + + + + Analyze data-flow within an expression. + + The expression within the associated SyntaxTree to analyze. + An object that can be used to obtain the result of the data flow analysis. + + + + Analyze data-flow within a set of contiguous statements. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the data flow analysis. + The two statements are not contained within the same statement list. + + + + Analyze data-flow within a statement. + + The statement to be included in the analysis. + An object that can be used to obtain the result of the data flow analysis. + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel and must be + within the FullSpan of a Method body within the Root syntax node. + A syntax node that represents a parsed method declaration. This method should not be + present in the syntax tree associated with this object, but must have identical signature to the method containing + the given in this SemanticModel. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is True. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a range argument syntax that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of this node that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed RangeArgumentSyntax node. This node should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is True. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an executable statement that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a statement that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + A syntax node that represents a parsed statement. This statement should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is True. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a field initializer, property initializer or default parameter value that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed initializer. This initializer should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is True. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an attribute that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an attribute that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + A syntax node that represents a parsed attribute. This attribute should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is True. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a type syntax that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a type syntax that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed type syntax. This expression should not be + present in the syntax tree associated with this object. + Indicates whether to bind the expression as a full expression, + or as a type or namespace. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if this model is a speculative semantic model, i.e. is True. + Chaining of speculative semantic model is not supported. + + + + If this is a speculative semantic model, then returns its parent semantic model. + Otherwise, returns null. + + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. + + An expression which must occur within the syntax tree + associated with this object. + The type to attempt conversion to. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists " property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. + + The character position for determining the enclosing declaration scope and accessibility. + An expression to classify. This expression does not need to be + present in the syntax tree associated with this object. + The type to attempt conversion to. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists " property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Given a modified identifier that is part of a variable declaration, get the + corresponding symbol. + + The modified identifier that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Gets the corresponding symbol for a specified tuple element. + + A TupleElementSyntax object. + A cancellation token. + A symbol, for the specified element; otherwise Nothing. + + + + Given a FieldInitializerSyntax, get the corresponding symbol of anonymous type property. + + The anonymous object creation field initializer syntax. + The symbol that was declared, or Nothing if no such symbol exists or + if the field initializer was not part of an anonymous type creation. + + + + Given an AnonymousObjectCreationExpressionSyntax, get the corresponding symbol of anonymous type. + + The anonymous object creation syntax. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given an ExpressionRangeVariableSyntax, get the corresponding symbol. + + The range variable syntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given a CollectionRangeVariableSyntax, get the corresponding symbol. + + The range variable syntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given an AggregationRangeVariableSyntax, get the corresponding symbol. + + The range variable syntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given a label statement, get the corresponding label symbol. + + The label statement. + The label symbol, or Nothing if no such symbol exists. + + + + Given a declarationSyntax that is part of a enum constant declaration, get the + corresponding symbol. + + The declarationSyntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given a type declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The type symbol that was declared. + + + + Given a type block, get the corresponding type symbol. + + The syntax node that declares a type block. + The type symbol that was declared. + + + + Given a enum declaration, get the corresponding type symbol. + + The syntax node that declares an enum. + The type symbol that was declared. + + + + Given a enum block, get the corresponding type symbol. + + The syntax node that declares an enum block. + The type symbol that was declared. + + + + Given a namespace declaration, get the corresponding type symbol. + + The syntax node that declares a namespace. + The namespace symbol that was declared. + + + + Given a namespace block, get the corresponding type symbol. + + The syntax node that declares a namespace block. + The namespace symbol that was declared. + + + + Given a method, property, or event declaration, get the corresponding symbol. + + The syntax node that declares a method, property, or event. + The method, property, or event symbol that was declared. + + + + Given a parameter declaration, get the corresponding parameter symbol. + + The syntax node that declares a parameter. + The parameter symbol that was declared. + + + + Given a type parameter declaration, get the corresponding type parameter symbol. + + The syntax node that declares a type parameter. + The type parameter symbol that was declared. + + + + Given a delegate statement syntax get the corresponding named type symbol. + + The syntax node that declares a delegate. + The named type that was declared. + + + + Given a constructor statement syntax get the corresponding method symbol. + + The syntax node that declares a constructor. + The method symbol that was declared. + + + + Given a method statement syntax get the corresponding method symbol. + + The syntax node that declares a method. + The method symbol that was declared. + + + + Given a method statement syntax get the corresponding method symbol. + + The syntax node that declares a method. + The method symbol that was declared. + + + + Given a operator statement syntax get the corresponding method symbol. + + The syntax node that declares an operator. + The method symbol that was declared. + + + + Given a method block syntax get the corresponding method, property or event symbol. + + The syntax node that declares method, property or event. + The method, property or event symbol that was declared. + + + + Given a property statement syntax get the corresponding property symbol. + + The syntax node that declares a property. + The property symbol that was declared. + + + + Given an event statement syntax get the corresponding event symbol. + + The syntax node that declares an event. + The event symbol that was declared. + + + + Given a property block syntax get the corresponding property symbol. + + The syntax node that declares property. + The property symbol that was declared. + + + + Given a custom event block syntax get the corresponding event symbol. + + The syntax node that declares the custom event. + The event symbol that was declared. + + + + Given a catch statement syntax get the corresponding local symbol. + + The catch statement syntax node. + The local symbol that was declared by the Catch statement or Nothing if statement does not declare a local variable. + + + + Given a property block syntax get the corresponding property symbol. + + The syntax node that declares property. + The property symbol that was declared. + + + + Given an import clause get the corresponding symbol for the import alias that was introduced. + + The import statement syntax node. + The alias symbol that was declared or Nothing if no alias symbol was declared. + + + + Given a field declaration syntax, get the corresponding symbols. + + The syntax node that declares one or more fields. + The field symbols that were declared. + + + + Gets bound node summary of the underlying invocation in a case of RaiseEvent + + + + + RaiseEvent situation is very special: + 1) Unlike other syntaxes that take named arguments, RaiseEvent is a statement. + 2) RaiseEvent is essentially a wrapper around underlying call to the event rising method. + Note that while event itself may have named parameters in its syntax, their names could be irrelevant + For the purpose of fetching named parameters, it is the target of the call that we are interested in. + + === Example: + + Interface I1 + Event E(qwer As Integer) + End Interface + + Class cls1 : Implements I1 + Event E3(bar As Integer) Implements I1.E ' "bar" means nothing here. Only type matters. + + Sub moo() + RaiseEvent E3(qwer:=123) ' qwer binds to parameter on I1.EEventhandler.invoke(goo) + End Sub +End Class + + + + + + + The SyntaxTree that is bound + + + + + Gets the semantic information of a for each statement. + + The for each syntax node. + + + + Gets the semantic information of a for each statement. + + The for block syntax node. + + + + Gets the semantic information of a for each statement. + + The for each syntax node. + + + + Gets the semantic information of an Await expression. + + + + + If the given node is within a preprocessing directive, gets the preprocessing symbol info for it. + + Preprocessing symbol identifier node. + + + + Options to control the internal working of GetSemanticInfoWorker. Not currently exposed + to public clients, but could be if desired. + + + + + When binding "C" new C(...), return the type C and do not return information about + which constructor was bound to. Bind "new C(...)" to get information about which constructor + was chosen. + + + + + When binding "C" new C(...), return the constructor of C that was bound to, if C unambiguously + binds to a single type with at least one constructor. + + + + + When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return OtherTypeOrNamespace. + + + + + When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return the alias symbol X. + + + + + Given a position in the SyntaxTree for this SemanticModel returns the innermost Symbol + that the position is considered inside of. + + + + + Get the state of Option Strict for the code covered by this semantic model. + This takes into effect both file-level "Option Strict" statements and the project-level + defaults. + + + + + Get the state of Option Infer for the code covered by this semantic model. + This takes into effect both file-level "Option Infer" statements and the project-level + defaults. + + True if Option Infer On, False if Option Infer Off. + + + + Get the state of Option Explicit for the code covered by this semantic model. + This takes into effect both file-level "Option Explicit" statements and the project-level + defaults. + + True if Option Explicit On, False if Option Explicit Off. + + + + Get the state of Option Compare for the code covered by this semantic model. + This takes into effect both file-level "Option Compare" statements and the project-level + defaults. + + True if Option Compare Text, False if Option Compare Binary. + + + + Allows asking semantic questions about a tree of syntax nodes that did not appear in the original source code. + Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. + + + + + Allows asking semantic questions about any node in a SyntaxTree within a Compilation. + + + + + The compilation associated with this binding. + + + + + The root node of the syntax tree that this binding is based on. + + + + + The SyntaxTree that is bound + + + + + Returns true if this Is a SemanticModel that ignores accessibility rules when answering semantic questions. + + + + + Get all the errors within the syntax tree associated with this object. Includes errors involving compiling + method bodies or initializers, in addition to the errors returned by GetDeclarationDiagnostics and parse errors. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the process of obtaining the + diagnostics. + + Because this method must semantically analyze all method bodies and initializers to check for diagnostics, it may + take a significant amount of time. Unlike GetDeclarationDiagnostics, diagnostics for method bodies and + initializers are not cached, the any semantic information used to obtain the diagnostics is discarded. + + + + + Get all of the syntax errors within the syntax tree associated with this + object. Does not get errors involving declarations or compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + + + + Get all the syntax and declaration errors within the syntax tree associated with this object. Does not get + errors involving compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the process of obtaining the + diagnostics. + The declaration errors for a syntax tree are cached. The first time this method is called, a ll + declarations are analyzed for diagnostics. Calling this a second time will return the cached diagnostics. + + + + + Get all the syntax and declaration errors within the syntax tree associated with this object. Does not get + errors involving compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the process of obtaining the + diagnostics. + The declaration errors for a syntax tree are cached. The first time this method is called, a ll + declarations are analyzed for diagnostics. Calling this a second time will return the cached diagnostics. + + + + + Get symbols referenced from 'cref' or 'name' attribute value. + + Node to bind. + True to leave s, False to unwrap them. + Out: symbols that would have been in the return value but improperly refer to type parameters. + Referenced symbols, less type parameters. + + + + Checks all symbol locations against the syntax provided and return symbol if any of the locations is + inside the syntax span. Returns Nothing otherwise. + + + + + Given a delegate declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The type symbol that was declared. + + + + Given a type declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The type symbol that was declared. + + + + Given a enum declaration, get the corresponding type symbol. + + The syntax node that declares an enum. + The type symbol that was declared. + + + + Given a namespace declaration, get the corresponding type symbol. + + The syntax node that declares a namespace. + The namespace symbol that was declared. + + + + Given a method, property, or event declaration, get the corresponding symbol. + + The syntax node that declares a method, property, or event. + The method, property, or event symbol that was declared. + + + + Given a parameter declaration, get the corresponding parameter symbol. + + The syntax node that declares a parameter. + The parameter symbol that was declared. + + + + Given a type parameter declaration, get the corresponding type parameter symbol. + + The syntax node that declares a type parameter. + The type parameter symbol that was declared. + + + + Given a variable declaration, get the corresponding symbol. + + The syntax node that declares a variable. + The symbol that was declared. + + + + Given a FieldInitializerSyntax, get the corresponding symbol of anonymous type creation. + + The anonymous object creation field initializer syntax. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given an AnonymousObjectCreationExpressionSyntax, get the corresponding symbol of anonymous type. + + The anonymous object creation syntax. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given an ExpressionRangeVariableSyntax, get the corresponding symbol. + + The range variable syntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given a CollectionRangeVariableSyntax, get the corresponding symbol. + + The range variable syntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given an AggregationRangeVariableSyntax, get the corresponding symbol. + + The range variable syntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given an import clause get the corresponding symbol for the import alias that was introduced. + + The import statement syntax node. + The alias symbol that was declared or Nothing if no alias symbol was declared. + + + + Given a field declaration syntax, get the corresponding symbols. + + The syntax node that declares one or more fields. + The field symbols that were declared. + + + + Determines what type of conversion, if any, would be used if a given expression was converted to a given + type. + + An expression which much occur within the syntax tree associated with this + object. + The type to attempt conversion to. + Returns a Conversion object that summarizes whether the conversion was possible, and if so, what + kind of conversion it was. If no conversion was possible, a Conversion object with a false "Exists " + property is returned. + To determine the conversion between two types (instead of an expression and a type), use + Compilation.ClassifyConversion. + + + + Analyze control-flow within a part of a method body. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the control flow analysis. + The two statements are not contained within the same statement list. + + + + The first statement to be included in the analysis. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the data flow analysis. + The two statements are not contained within the same statement list. + + + + Analyze data-flow within an expression. + + The expression within the associated SyntaxTree to analyze. + An object that can be used to obtain the result of the data flow analysis. + + + + Checks if the node is inside the attribute arguments + + + + + Check Expression for being in right context, for example 'For ... Next [x]' + is not correct context + + + + + Check ForBlockSyntax for being the uppermost For block. By uppermost + For block we mean that if Next clause contains several control variables, + the uppermost block is the one which includes all the For blocks ending with + the same Next clause + + + + + Gets the semantic information of a for each statement. + + The for each syntax node. + + + Used to create a region analysis context + with failed flag set to be used in 'failed' scenarios + + + + When compiling in metadata-only mode, is not run. This is problematic because + adds synthesized explicit implementations to the list of synthesized definitions. + In lieu of running , this class performs a quick + traversal of the symbol table and performs processing of synthesized symbols if necessary. + + + + + Traverse the symbol table and properly add/process synthesized extra metadata if needed. + + + + + Represents the state of compilation of one particular type. + This includes, for example, a collection of synthesized methods created during lowering. + WARNING: Note that the underlying collection classes are not thread-safe and this will + need to be revised if emit phase is changed to support multithreading when + translating a particular type. + + + + Method's information + + + Flat array of created methods, non-empty if not-nothing + + + + A mapping from (source) iterator or async methods to the compiler-generated classes that implement them. + + + + + Map of 'MyBase' or 'MyClass' call wrappers; actually each method symbol will + only need one wrapper to call it non-virtually; + + Indeed, if the type have a virtual method M1 overridden, MyBase.M1 will use + a wrapper for base type's method and MyClass.M1 a wrapper for this type's method. + + And if the type does not override a virtual method M1, both MyBase.M1 + and MyClass.M1 will use a wrapper for base type's method. + + + + + Is there any content in the methods collection. + + + + Method created with their bodies + + + Free resources + + + + The type of the expression represented by the syntax node. For expressions that do not + have a type, null is returned. If the type could not be determined due to an error, than + an object derived from ErrorTypeSymbol is returned. + + + + + The type of the expression after it has undergone an implicit conversion. If the type + did not undergo an implicit conversion, returns the same as Type. + + + + + If the expression underwent an implicit conversion, return information about that + conversion. Otherwise, returns an identity conversion. + + + + + Guess the non-error type that the given type was intended to represent, or return + the type itself. If a single, non-ambiguous type is a guess-type inside the type symbol, + return that; otherwise return the type itself (even if it is an error type). + + + + + Represents a reference to another Visual Basic compilation. + + + + + Returns the referenced . + + + + + Create a metadata reference to a compilation. + + The compilation to reference. + Should interop types be embedded in the created assembly? + Namespace aliases for this reference. + + + + Applies Visual Basic-specific modification and filtering of s. + + + + + Modifies an input per the given options. For example, the + severity may be escalated, or the may be filtered out entirely + (by returning null). + + The input diagnostic + How warning diagnostics should be reported + How specific diagnostics should be reported + A diagnostic updated to reflect the options, or null if it has been filtered out + + + + Take a warning And return the final disposition of the given warning, + based on both command line options And pragmas. The diagnostic options + have precedence in the following order: + 1. Warning level + 2. Command line options (/nowarn, /warnaserror) + 3. Editor config options (syntax tree level) + 4. Global analyzer config options (compilation level) + 5. Global warning level + + Global overrides are complicated. Global options never override suppression. + Even if you have generalDiagnosticOption = ReportDiagnostic.Error, a + suppressed diagnostic will not turn into an error. However, general diagnostic options + do override warnings and infos into suppressions, i.e. if you had a syntaxtree option + to turn a diagnostic into a warning, and the global option was Suppress, the diagnostic + would be suppressed. + + Pragmas are considered separately. If a diagnostic would not otherwise + be suppressed, but is suppressed by a pragma, + + is true but the diagnostic is not reported as suppressed. + + + + + Returns documentation comment for a type, field, property, event or method, + discards all the diagnostics + + + Returns Nothing if there is no documentation comment on the type or + there were errors preventing such a comment from being generated, + XML string otherwise + + + + + Matches symbols from an assembly in one compilation to + the corresponding assembly in another. Assumes that only + one assembly has changed between the two compilations. + + + + + Match local declarations to names to generate a map from + declaration to local slot. The names are indexed by slot And the + assumption Is that declarations are in the same order as slots. + + + + + Represents a reference to a generic method instantiation, closed over type parameters, + e.g. MyNamespace.Class.Method{T}() + + + + + Represents a reference to a generic type instantiation that is not nested. + e.g. MyNamespace.A{int} + + + + + Represents a reference to a generic type instantiation that is nested in a non-generic type. + e.g. A.B{int} + + + + + Represents a reference to a generic type instantiation. + Subclasses represent nested and namespace types. + + + + + Returns true if the type can be embedded. If the type is defined in a linked (/l-ed) + assembly, but doesn't meet embeddable type requirements, this function returns + False and reports appropriate diagnostics. + + + + This is a cache of a subset of . We don't include manifest resources in ref assemblies + + + + This value will override m_SourceModule.MetadataName. + + + This functionality exists for parity with C#, which requires it for + legacy reasons (see Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase.metadataName). + + + + + True if conditional calls may be omitted when the required preprocessor symbols are not defined. + + + Only false in debugger scenarios (where calls should never be omitted). + + + + + Ignore accessibility when resolving well-known type + members, in particular for generic type arguments + (e.g.: binding to internal types in the EE). + + + + + Builds an array of public type symbols defined in netmodules included in the compilation + And type forwarders defined in this compilation Or any included netmodule (in this order). + + + + + Returns a set of top-level forwarded types + + + + Stores collection of all embedded symbols referenced from IL + + + Adds a symbol to the collection of referenced embedded symbols + + + + Represents a reference to a field of a generic type instantiation. + e.g. + A{int}.Field + A{int}.B{string}.C.Field + + + + + Represents a generic method of a generic type instantiation, closed over type parameters. + e.g. + A{T}.M{S}() + A.B{T}.C.M{S}() + + + + + Represents a reference to an instantiation of a generic type nested in an instantiation of another generic type. + e.g. + A{int}.B{string} + A.B{int}.C.D{string} + + + + + Represents a method of a generic type instantiation. + e.g. + A{int}.M() + A.B{int}.C.M() + + + + + Represents a reference to a type nested in an instantiation of a generic type. + e.g. + A{int}.B + A.B{int}.C.D + + + + + The base class for all symbols (namespaces, classes, method, parameters, etc.) that are + exposed by the compiler. + + + + + Return whether the symbol is either the original definition + or distinct from the original. Intended for use in Debug.Assert + only since it may include a deep comparison. + + + + + Returns a list of attributes to emit to CustomAttribute table. + + + + + Checks if this symbol is a definition and its containing module is a SourceModuleSymbol. + + + + + Determine if two methods have the same signature according to section 4.1.1 of the VB language spec. + The name, number of type parameters, and number and types of the method's non-optional parameters are + considered. ByRef/Byval, parameter names, returns type, constraints, or optional parameters are not considered. + + + + + Checks if is accessible from within type . + + The symbol for the accessibility check. + The type to use as a context for the check. + + The type of an expression that is accessed off of, if any. + This is needed to properly check accessibility of protected members. + + + + + + Checks if is accessible from within the assembly ', but outside any + type. Protected members are deemed inaccessible. + + The symbol to check accessibility. + The assembly to check accessibility within. + True if symbol is accessible. False otherwise. + + + + Gets the name of this symbol. + + Returns the name of this symbol. Symbols without a name return the empty string; + Nothing is never returned. + + + + Gets the name of a symbol as it appears in metadata. Most of the time, this + is the same as the Name property, with the following exceptions: + 1) The metadata name of generic types includes the "`1", "`2" etc. suffix that + indicates the number of type parameters (it does not include, however, names of + containing types or namespaces). + 2) The metadata name of methods that overload or override methods with the same + case-insensitive name but different case-sensitive names are adjusted so that + the overrides and overloads always have the same name in a case-sensitive way. + + It should be noted that Visual Basic merges namespace declaration from source + and/or metadata with different casing into a single namespace symbol. Thus, for + namespace symbols this property may return incorrect information if multiple declarations + with different casing were found. + + + + + Gets the token for this symbol as it appears in metadata. Most of the time this Is 0, + as it Is when the symbol Is Not loaded from metadata. + + + + + Set the metadata name for this symbol. + Called from for each symbol of the same name in a type. + + + + + Gets the kind of this symbol. + + + + + Get the symbol that logically contains this symbol. + + + + + Gets the nearest enclosing namespace for this namespace or type. For a nested type, + returns the namespace that contains its container. + + + + + Returns the nearest lexically enclosing type, or Nothing if there is none. + + + + + Returns the containing type or namespace, if this symbol is immediately contained by it. + Otherwise returns Nothing. + + + + + Returns the assembly containing this symbol. If this symbol is shared + across multiple assemblies, or doesn't belong to an assembly, returns Nothing. + + + + + For a source assembly, the associated compilation. + For any other assembly, null. + For a source module, the DeclaringCompilation of the associated source assembly. + For any other module, null. + For any other symbol, the DeclaringCompilation of the associated module. + + + We're going through the containing module, rather than the containing assembly, + because of /addmodule (symbols in such modules should return null). + + Remarks, not "ContainingCompilation" because it isn't transitive. + + + + + Returns the module containing this symbol. If this symbol is shared + across multiple modules, or doesn't belong to a module, returns Nothing. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Returns true if this is the original definition of this symbol. + + + + + + Get a source location key for sorting. For performance, it's important that this + be able to be returned from a symbol without doing any additional allocations (even + if nothing is cached yet.) + + + Only (original) source symbols and namespaces that can be merged + need override this function if they want to do so for efficiency. + + + + + + Gets the locations where this symbol was originally defined, either in source + or metadata. Some symbols (for example, partial classes) may be defined in more + than one location. + + + + + Get the syntax node(s) where this symbol was declared in source. Some symbols (for example, + partial classes) may be defined in more than one location. This property should return + one or more syntax nodes only if the symbol was declared in source code and also was + not implicitly declared (see the IsImplicitlyDeclared property). + + Note that for namespace symbol, the declaring syntax might be declaring a nested namespace. + For example, the declaring syntax node for N1 in "Namespace N1.N2" is the + NamespaceDeclarationSyntax for N1.N2. For the project namespace, the declaring syntax will + be the CompilationUnitSyntax. + + + The syntax node(s) that declared the symbol. If the symbol was declared in metadata + or was implicitly declared, returns an empty read-only array. + + + To go the opposite direction (from syntax node to symbol), see . + + + + + Helper for implementing DeclaringSyntaxNodes for derived classes that store a location but not a SyntaxNode or SyntaxReference. + + + + + Helper for implementing DeclaringSyntaxNodes for derived classes that store a location but not a SyntaxNode or SyntaxReference. + + + + + Helper for implementing DeclaringSyntaxNodes for derived classes that store SyntaxReferences. + + + + + Get this accessibility that was declared on this symbol. For symbols that do + not have accessibility declared on them, returns NotApplicable. + + + + + Returns true if this symbol is "shared"; i.e., declared with the "Shared" + modifier or implicitly always shared. + + + + + Returns true if this member is overridable, has an implementation, + and does not override a base class member; i.e., declared with the "Overridable" + modifier. Does not return true for members declared as MustOverride or Overrides. + + + + + Returns true if this symbol was declared to override a base class members; i.e., declared + with the "Overrides" modifier. Still returns true if the members was declared + to override something, but (erroneously) no member to override exists. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared + with the "MustOverride" modifier. Never returns true for types. + Also methods, properties and events declared in interface are considered to have MustOverride. + + + + + Returns true if this symbol was declared to override a base class members and was + also restricted from further overriding; i.e., declared with the "NotOverridable" + modifier. Never returns true for types. + + + + + Returns true if this symbol was automatically created by the compiler, and does not + have an explicit corresponding source code declaration. + + + This is intended for symbols that are ordinary symbols in the language sense, + and may be used by code, but that are simply declared implicitly rather than + with explicit language syntax. + + Examples include (this list is not exhaustive): + the default constructor for a class or struct that is created if one is not provided, + the BeginInvoke/Invoke/EndInvoke methods for a delegate, + the generated backing field for an auto property or a field-like event, + the "this" parameter for non-static methods, + the "value" parameter for a property setter, + the parameters on indexer accessor methods (not on the indexer itself), + methods in anonymous types + + + + + True if this symbol has been marked with the Obsolete attribute. + This property returns Unknown if the Obsolete Attribute hasn't been cracked yet. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns the symbol that implicitly defined this symbol, or Nothing if this + symbol was declared explicitly. Examples of implicit symbols are property + accessors and the backing field for an automatically implemented property. + + NOTE: there are scenarios in which ImplicitlyDefinedBy is called while bound members + are not yet published. This typically happens if ImplicitlyDefinedBy while binding members. + In such case, if callee needs to refer to a member of enclosing type it must + do that in the context of unpublished members that caller provides + (asking encompassing type for members will cause infinite recursion). + + NOTE: There could be several threads trying to bind and publish members, only one will succeed. + Reporting ImplicitlyDefinedBy within the set of members known to the caller guarantees + that if particular thread succeeds it will not have information that refers to something + built by another thread and discarded. + + + + + Returns true if 'Shadows' is explicitly specified on the declaration if the symbol is from + source, or in cases of synthesized symbols, if 'Shadows' is specified on the associated + source symbol. (For instance, ShadowsExplicitly will be set on the backing fields and + accessors for properties and events based on the value from the property or event.) + Returns false in all other cases, in particular, for symbols not from source. + + + + + Returns true if this symbol can be referenced by its name in code. Examples of symbols + that cannot be referenced by name are: + constructors, operators, + accessor methods for properties and events. + + + + + As an optimization, viability checking in the lookup code should use this property instead + of CanBeReferencedByName. + + + This property exists purely for performance reasons. + + + + + Is this a symbol that is generated by the compiler and + automatically added to the compilation? Note that + only source symbols may be embedded symbols. + + Namespace symbol is considered to be an embedded symbol + if at least one of its declarations are embedded symbols. + + + + + effective for this symbol (type or DllImport method). + Nothing if isn't applied on the containing module or it doesn't apply on this symbol. + + + Determined based upon value specified via applied on the containing module. + Symbols that are embedded are not affected by (see DevDiv bug #16434). + + + + + Always prefer IsFromCompilation. + + + This property is actually a triple workaround: + + 1) Unfortunately, when determining overriding/hiding/implementation relationships, we don't + have the "current" compilation available. We could, but that would clutter up the API + without providing much benefit. As a compromise, we consider all compilations "current". + + 2) TypeSymbol.Interfaces doesn't roundtrip in the presence of implicit interface implementation. + In particular, the metadata symbol may declare fewer interfaces than the source symbol so + that runtime implicit interface implementation will find the right symbol. Thus, we need to + know what kind of symbol we are dealing with to be able to interpret the Interfaces property + properly. Since a retargeting TypeSymbol will reflect the behavior of the underlying source + TypeSymbol, we need this property to match as well. (C# does not have this problem.) + + 3) The Dev12 VB compiler avoided loading private fields of structs from metadata, even though + they're supposed to affect definite assignment analysis. For compatibility + we therefore ignore these fields when doing DA analysis. (C# has a similar issue.) + + + + + Equivalent to MethodKind = MethodKind.LambdaMethod, but can be called on a symbol directly. + + + + + Is this an auto-generated property of a group class? + + + + + Is this lambda method a query lambda? + If it is, IsLambdaMethod == True as well. + + + + + Returns true and a from the first on the symbol, + the string might be null or an invalid guid representation. False, + if there is no with string argument. + + + + + Returns the Documentation Comment ID for the symbol, or Nothing if the symbol + doesn't support documentation comments. + + + + + Fetches the documentation comment for this element with a cancellation token. + + Optionally, retrieve the comments formatted for a particular culture. No impact on source documentation comments. + Optionally, expand ]]> elements. No impact on non-source documentation comments. + Optionally, allow cancellation of documentation comment retrieval. + The XML that would be written to the documentation file for the symbol. + + + + Compare two symbol objects to see if they refer to the same symbol. You should always use + = and <> or the Equals method, to compare two symbols for equality. + + + + + Compare two symbol objects to see if they refer to the same symbol. You should always use + = and <>, or the Equals method, to compare two symbols for equality. + + + + + Force all declaration diagnostics to be generated for the symbol. + + + + + Returns dependencies and an error info for an error, if any, that should be reported at the use site of the symbol. + + + + + Indicates that this symbol uses metadata that cannot be supported by the language. + + Examples include: + - Pointer types in VB + - ByRef return type + - Required custom modifiers + + This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. + Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature. + + This is set for metadata symbols, as follows: + Type - if a type is unsupported (e.g., a pointer type, etc.) + Method - parameter or return type is unsupported + Field - type is unsupported + Event - type is unsupported + Property - type is unsupported + Parameter - type is unsupported + + + + + Derive dependencies and error info from a type symbol. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Gets the attributes on this symbol. Returns an empty ImmutableArray if there are + no attributes. + + + + + Build and add synthesized attributes for this symbol. + + + + + Convenience helper called by subclasses to add a synthesized attribute to a collection of attributes. + + + + + Returns the appropriate AttributeTarget for a symbol. This is used to validate attribute usage when + applying an attribute to a symbol. For any symbol that does not support the application of custom + attributes 0 is returned. + + The attribute target flag for this symbol or 0 if none apply. + + + + + Method to early decode applied well-known attribute which can be queried by the binder. + This method is called during attribute binding after we have bound the attribute types for all attributes, + but haven't yet bound the attribute arguments/attribute constructor. + Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol + when binding the attribute arguments/attribute constructor without causing attribute binding cycle. + + + + + This method is called by the binder when it is finished binding a set of attributes on the symbol so that + the symbol can extract data from the attribute arguments and potentially perform validation specific to + some well known attributes. + + + + Symbol types should override this if they want to handle a specific well-known attribute. + If the attribute is of a type that the symbol does not wish to handle, it should delegate back to + this (base) method. + + + + + + Called to report attribute related diagnostics after all attributes have been bound and decoded. + Called even if there are no attributes. + + + This method is called by the binder from after it has finished binding attributes on the symbol, + has executed for attributes applied on the symbol and has stored the decoded data in the + lazyCustomAttributesBag on the symbol. Bound attributes haven't been stored on the bag yet. + + Post-validation for attributes that is dependent on other attributes can be done here. + + This method should not have any side effects on the symbol, i.e. it SHOULD NOT change the symbol state. + + Bound attributes. + Syntax nodes of attributes in order they are specified in source. + Diagnostic bag. + Specific part of the symbol to which the attributes apply, or if the attributes apply to the symbol itself. + Decoded well known attribute data. + + + + This method does the following set of operations in the specified order: + (1) GetAttributesToBind: Merge the given attributeBlockSyntaxList into a single list of attributes to bind. + (2) GetAttributes: Bind the attributes (attribute type, arguments and constructor). + (3) DecodeWellKnownAttributes: Decode and validate bound well-known attributes. + (4) ValidateAttributes: Perform some additional attribute validations, such as + 1) Duplicate attributes, + 2) Attribute usage target validation, etc. + (5) Store the bound attributes and decoded well-known attribute data in lazyCustomAttributesBag in a thread safe manner. + + + + + Method to early decode certain well-known attributes which can be queried by the binder. + This method is called during attribute binding after we have bound the attribute types for all attributes, + but haven't yet bound the attribute arguments/attribute constructor. + Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol + when binding the attribute arguments/attribute constructor without causing attribute binding cycle. + + + + + This method validates attribute usage for each bound attribute and calls + on attributes with valid attribute usage. + This method is called by the binder when it is finished binding a set of attributes on the symbol so that + the symbol can extract data from the attribute arguments and potentially perform validation specific to + some well known attributes. + + + + + Validate attribute usage target and duplicate attributes. + + Bound attribute + Syntax node for attribute specification + Compilation + Symbol part to which the attribute has been applied + Diagnostics + Set of unique attribute types applied to the symbol + + + + Ensure that attributes are bound and the ObsoleteState of this symbol is known. + + + + + This diagnostic indicates when a symbol is not good for binding against. + + Client code can obtain the bad symbol via the BadSymbol property. + + + + + This diagnostics indicates when a lookup is ambiguous between multiple + equally good symbols, for example in different imported namespaces, or different + modules. + + Client code can obtain the set of ambiguous symbols via the AmbiguousSymbols property. + + + + + Add a diagnostic to the bag. + + + + + + + + + Add a diagnostic to the bag. + + + + + + + + + + Appends diagnostics from useSiteDiagnostics into diagnostics and returns True if there were any errors. + + + + + The Diagnostic class allows formatting of Visual Basic diagnostics. + + + + + Gets the current DiagnosticFormatter instance. + + + + + Concatenates messages for a set of DiagnosticInfo. + + + + + The LocalizableErrorArgument class contains members that allows formatting and serialization of error arguments. + Message IDs may refer to strings that need to be localized. This struct makes an IFormattable wrapper around a MessageID + + + + +Creates a string representing the unformatted LocalizableErrorArgument instance. + + + + + Creates a string representing the formatted LocalizableErrorArgument instance. + + A string to use for formatting. + An object that supplies culture-specific format information about format. + + + + The base class for all nodes in the VB syntax tree. + + + + + Should only be called during construction. + + + This should probably be an extra constructor parameter, but we don't need more constructor overloads. + + + + + Get all syntax errors associated with this node, or any child nodes, grand-child nodes, etc. The errors + are not in order. + + + + + The base class for all nodes that represent statements. This includes both + declaration statements, such as class declarations as well as executable + statements. + + + + + The base class for all nodes that represent executable statements. + + + + + The base class for all nodes that represent statements that declare options, + imports, members, etc. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + + + An empty token because all non terminals must have a token. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + The "End" keyword + + + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an entire source file of VB code. + + + + + Represents the list of Option statements at the beginning of a source file. + + + If nothing is present, an empty list is returned. + + + + + Represents the list of Imports statements at the beginning of a source file. + + + If nothing is present, an empty list is returned. + + + + + Represents the list of AttributeStatements at the beginning of a source file + that contain the Assembly and Module attributes. + + + If nothing is present, an empty list is returned. + + + + + Represents the members of the default namespace for this source file: all the + top-level type and namespace declarations in the file. May also contain + Statements that are not valid + + + If nothing is present, an empty list is returned. + + + + + Represents the end of the source file. This token may have trivia (whitespace, + comments, ...) attached to it. + + + + + Represents an Option statement, such as "Option Strict On". + + + + + The "Option" keyword. + + + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + + + The keyword that identifiers the value being set for the option: On, Off, Text + or Binary. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + + + The "Imports" keyword. + + + + + A list of one or more import clauses. Each clause is either an alias, namespace + or XML namespace import. + + + If nothing is present, an empty list is returned. + + + + + The base class for the possible clauses of an Imports statement. + + + + + Represents the clause of an Imports statement that imports all members of a + type or namespace or aliases a type or namespace. + + + + + An optional alias for the namespace or type being imported. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The namespace or type being imported. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + + + The identifier being introduced. + + + + + The "=" token. + + + + + Defines a XML namespace for XML expressions. + + + + + Identifies the XML namespace alias and URI. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + + + The statement that begins the NamespaceBlock. + + + + + The declarations contained in the namespace statement. + + + If nothing is present, an empty list is returned. + + + + + The End Namespace statement that ends the block. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + + + The "Namespace" keyword. + + + + + A (possibly dotted) name denoting the namespace being declared. + + + + + Represents a declaration of a Class, Interface, Structure, Module, its contents + and the End statement that ends it. + + + + + A list of the Inherits declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + A list of the Implements declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + The declarations contained in the type or module. + + + If nothing is present, an empty list is returned. + + + + + The statement that begins the block declaration. + + + + + The statement that ends the block declaration. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + + + The "Module" statement that begins the block. + + + + + The "End Module" statement that ends the block. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + + + The "Structure" statement that begins the block. + + + + + The "End Structure" statement that ends the block. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + + + The "Interface" statement that begins the block. + + + + + The "End Interface" statement that ends the block. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + + + The "Class" statement that begins the block. + + + + + The "End Class" statement that ends the block. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + + + The statement that begins the type or module. + + + + + The declarations contained in the enumeration. + + + If nothing is present, an empty list is returned. + + + + + The End XXX statement that ends the block. + + + + + Represents an Inherits or Implements statement in a Class, Structure or + Interface. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + + + The "Inherits" keyword. + + + + + A list of the types being inherited. + + + + + Represents an Implements statement in a Class or Structure. + + + + + The "Implements" keyword. + + + + + A list of the types being implemented. + + + + + Abstract class for the beginning statement of a Module, Class, Interface or + Structure declaration. This node always appears as the Begin of a TypeBlock + with Kind=ModuleDeclarationBlock, ClassDeclarationBlock, + InterfaceDeclarationBlock or StructureDeclarationBlock. + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The name of the type being declared. + + + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + + + The "Module" keyword. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + + + The "Structure" keyword. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + + + The "Interface" keyword. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + + + The "Class" keyword. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The "Enum" keyword. + + + + + The name of the enum being declared. + + + + + Optional "As XXX" clause describing the underlying type of the enumeration. If + no As clause was specified, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the type parameter list in a declaration. + + + + + The "(" token. + + + + + The "Of" keyword. + + + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + + + The ")" token. + + + + + Represents a type parameter on a generic type declaration. + + + + + Represents the "In" or "Out" variance keyword on a type parameter, if present. + If no variance modifier was present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The name of the type parameter + + + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + An abstract node class that is the parent of classes that describe type + parameter constraint clauses. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + + + A list of the supplied constraints. If no constraints were supplied, Nothing is + returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + + + The "As" keyword. + + + + + The "{" token. + + + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + + + The "}" token. + + + + + An abstract node class that is the parent of classes that describe type + parameter constraints. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + Represents a type parameter constraint that is a type. + + + + + The type describing the constraint. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + + + If nothing is present, an empty list is returned. + + + + + An optional value for the enum member. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a block member declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. Examples + include methods, constructors, operators, property accessors and custom event + accessors. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + The statement that begins the block declaration. + + + + + The statement that ends the block declaration. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + + + The "Sub" or "Function" statement that begins the block. + + + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + + + The "Sub New" statement that begins the block. + + + + + The "End Sub" statement that ends the block declaration. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + + + The "Operator" statement that begins the block. + + + + + The "End Operator" statement that ends the block declaration. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + + + The property declaration that begins the block. + + + + + The accessor blocks contained in the property, between the Property and the End + Property statements. + + + + + The End Property statement that ends the block. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + + + The event declaration that begins the block. + + + + + The accessor blocks contained in the custom event declaration, between the + Event statement and the End Event statement. + + + + + The End Event statement that ends the block. + + + + + An abstract node class that is the parent for declarations that are + "method-like"; i.e., that have a parameter list and return type. This includes + methods, constructors, properties, events, operators, declares, delegates, + property accessors and custom event accessors. + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the parameter list in a method declaration. + + + + + The "(" token that introduces the parameter list. If no parameter list was + present, Nothing is returned. + + + + + The list of parameters. If no parameter list was present, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + The ")" token that concludes the parameter list. If no parameter list was + present, Nothing is returned. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + + + The name of the method being declared. + + + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, a Handles clause indicated the events that this method handles. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + + + The "Sub" keyword. + + + + + The "New" keyword in the constructor declaration. + + + + + A Declare statement that declares an external DLL method. + + + + + The "Declare" keyword. + + + + + If present, the keyword that defines the string translation semantics of the + external method. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "Sub" or "Function" keyword. + + + + + The name of the method being declared. + + + + + The "Lib" keyword. + + + + + The string literal with the library name. + + + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The string literal with the alias. If not present, returns Nothing. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A statement that declares a delegate type. + + + + + The "Delegate" keyword. + + + + + The "Sub" or "Function" keyword. + + + + + The name of the delegate being declared. + + + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + + + The optional Custom keyword for custom event declarations. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "Event" keyword that introduces this event declaration. + + + + + The name of the event being declared. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, an Implements clause indicates the interface methods that this + method implements. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + + + The "Operator" keyword that introduces this operator declaration. + + + + + The operator being defined. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + + + The "Property" keyword that introduces this property declaration. + + + + + The name of the property being declared. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, an "= initial-value" clause describing the initial value of the + property. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + + + The "Implements" keyword. + + + + + The list of interface members being implemented. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + + + The "Handles" keyword. + + + + + The list of event members being handled. + + + + + Represents container of an event in a Handles clause item. + + + + + Represents event container specified through special keywords "Me", "MyBase" or + "MyClass".. + + + + + The container of the event. This can be one of the special keywords: "Me", + "MyBase" or "MyClass". + + + + + Represents event container that refers to a WithEvents member. + + + + + The container of the event. It is a simple identifier that refers to a + WithEvents member of the containing type. + + + + + Represents event container that refers to a WithEvents member's property. + + + + + The container of the event. + + + + + The "." token. + + + + + The provider of the event. It is a property of a WithEvents member of the + containing type. + + + + + Represents a single handled event in a "Handles ..." clause. + + + + + The container of the event. This can either be a simple identifier (identifying + a members of the containing type) or one of the special keywords "Me", "MyBase" + or "MyClass". + + + + + The "." token. + + + + + The event being handled. This must be a simple identifier. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The missing identifier token for this incomplete member. Should only be used to + have a location for error reporting. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + + + The "As" clause that describes the return type, and possibly includes "New", + "With" or "From". If no As clause was present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, an "= initial-value" clause describing the initial value of the + variable or the value of the constant. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Abstract node class that represents the different kinds of "As {type-name}" + clauses in a declaration: simple "As" clauses and "As New" clauses. The type + has optional attributes associated with it, although attributes are not + permitted in all possible places where this node occurs. + + + + + The "As" keyword. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The type-name part of the As clause. + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + + + The New expression + + + + + An abstract node class that represents a "With" or "From" clause used to + initialize a new object. + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + + + The "With" keyword. + + + + + The "{" token. + + + + + The comma-separated list of field initializers. + + + + + The "}" token. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + + + The "From" keyword. + + + + + The initializer including the braces. + + + + + Abstract class that represent a single field initializer used in a "With {...}" + field initializer list. + + + + + The optional "Key" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + + + The value being assigned. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + + + The "." token. + + + + + The name of the field being initialized. + + + + + The "=" token. + + + + + The value being assigned to the field. + + + + + Represents an "= initializer" clause in a declaration for a variable, parameter + or automatic property. + + + + + The "=" token. + + + + + The expression used as the initial value. + + + + + Represent a parameter to a method, property, constructor, etc. + + + + + A list of all attribute lists on this parameter. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + A list of the modifier tokens "ByVal", "ByRef", "Optional" or "ParamArray" that + modify this parameter. + + + If nothing is present, an empty list is returned. + + + + + The name of the parameter, including any "?" or "()" modifiers. + + + + + If present, the "As type-name" clause describing the type of the parameter. If + no As clause is present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, an initializer with the default value of the parameter. If no + default value is present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + + + The identifier that names the item being declared. + + + + + The "?" token that indicates a nullable type. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A list of array modifiers for the type. If no array modifiers were present, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + + + The "(" token. + + + + + The comma tokens in the array type. There is one less comma than the rank. + + + If nothing is present, an empty list is returned. + + + + + The ")" token. + + + + + Represents a group of attributes within "<" and ">" brackets. + + + + + The "<" token. + + + + + A comma separated list of attribute declarations in this attribute list. + + + If nothing is present, an empty list is returned. + + + + + The ">" token. + + + + + Represents a single attribute declaration within an attribute list. + + + + + Optional attribute target. Assembly|Module : + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The name of the attribute. + + + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a single attribute declaration within an attribute list. + + + + + The "Assembly" or "Module" attribute modifier, is present. If no attribute + modifier is present, Nothing is returned. + + + + + The ":" token, if an attribute modifier is present. If no attribute modifier is + present, Nothing is returned. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + + + The list of attribute lists. + + + If nothing is present, an empty list is returned. + + + + + Represent an expression in a statement context. This may only be a invocation + or await expression in standard code but may be any expression in VB + Interactive code. + + + + + The expression. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + + + "?" token. + + + + + The expression whose value is being output. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + + + The While statement that begins the block. + + + + + The statements contained in the While...End While. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + The End While statement that ends the block. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + + + The UsingStatement that begins the Using...End Using block. + + + + + The statements contained in the Using...End Using block. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + The End Using statement that ends the block. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + + + The SyncLock statement that begins the block. + + + + + The statements contained in the SyncLock...End SyncLock statement. This might + be an empty list. + + + If nothing is present, an empty list is returned. + + + + + The End SyncLock statement that ends the block. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + + + The WithStatement that begins the With...End With block. + + + + + The statements contained in the With...End With block. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + The End With statement that ends the block. + + + + + Represents the declaration of one or more local variables or constants. + + + + + The modifier token (Static, Dim or Const) that introduces this local variable + declaration. + + + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents a label statement. + + + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + + + The ":" token of the label statement. + + + + + Represents a "GoTo" statement. + + + + + The "GoTo" keyword. + + + + + The name of the label. If the label is a line number, wraps an IntegerLiteral + that is the line number, otherwise, wraps an Identifier. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + + + The "Stop" or "End" keyword. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + The "Exit" keyword. + + + + + The keyword describing the block to exit. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + The "Continue" keyword. + + + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Return" statement. + + + + + The "Return" keyword. + + + + + The expression being returned, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + + + The "If" keyword. + + + + + The condition expression to be evaluated. + + + + + The "Then" keyword. + + + + + A list of statements to be executed if the condition expression evaluates as + true. Multiple statements must be separated by colons. + + + If nothing is present, an empty list is returned. + + + + + An "Else" clause to be executed if the condition expression evaluates as false. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + + + The "Else" keyword. + + + + + A list of statements to be executed. Multiple statements must be separated by + colons. + + + If nothing is present, an empty list is returned. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + + + The "If" statement that begins the "If" block. + + + + + A list of statements to be executed if the condition expression evaluates as + true. + + + If nothing is present, an empty list is returned. + + + + + A list of "ElseIf" blocks to be evaluated, in order, if the condition + expression of the "If" statement evaluates as false. + + + If nothing is present, an empty list is returned. + + + + + An "Else" block to be executed if the condition expression of the "If" + statement and all "ElseIf" blocks evaluate as false. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Then "End If" statement. + + + + + Represents the "If ... Then" statement that begins a multi-line "If" block. + + + + + The "If" keyword. + + + + + The condition expression to be evaluated. + + + + + The "Then" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an "ElseIf ... Then ..." block. + + + + + The "ElseIf ... Then" statement the begins the "ElseIf" block. + + + + + A list of statements to be executed if the condition expression of the "ElseIf" + statement evaluates as true. + + + If nothing is present, an empty list is returned. + + + + + Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. + + + + + The "ElseIf" keyword. + + + + + The condition expression to be evaluated. + + + + + The "Then" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an "Else ..." block. + + + + + The "Else" statement that begins the "Else" block. + + + + + A list of statements to be executed. + + + If nothing is present, an empty list is returned. + + + + + Represents the "Else" statement that begins an "Else" block. + + + + + The "Else" keyword. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + + + The "Try" statement that begins the "Try" block. + + + + + A list of statements to be executed. + + + If nothing is present, an empty list is returned. + + + + + A list of "Catch" blocks which may be executed if an exception is thrown while + executing the statements in the "Try" block. + + + If nothing is present, an empty list is returned. + + + + + A "Finally" block to be executed before execution leaves the "Try" block. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "End Try" statement. + + + + + Represents the "Try" statement that begins a "Try" block. + + + + + The "Try" keyword. + + + + + Represents a "Catch ..." block. + + + + + The "Catch" statement that begins the "Catch" block. + + + + + A list of statements to be executed if an exception is caught by the "Catch" + block. + + + If nothing is present, an empty list is returned. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + + + The "Catch" keyword. + + + + + An identifier declaring a new variable or naming an existing variable to store + the exception caught by the "Catch" statement. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A simple "As" clause specifying the type of exception to catch. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A "When" clause to filter exceptions before catching. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the "When ..." clause of a "Catch" statement. + + + + + The "When" keyword. + + + + + The filter expression to be evaluated. + + + + + Represents a "Finally ..." block of a "Try" block. + + + + + The "Finally" statement that begins the "Finally" block. + + + + + A list of statements to be executed. + + + If nothing is present, an empty list is returned. + + + + + Represents the "Finally" statement that begins a "Finally" block. + + + + + The "Finally" keyword. + + + + + Represents the "Error" statement. + + + + + The "Error" keyword. + + + + + The expression that represents the error number. + + + + + Represents an OnError Goto statement. + + + + + The "On" keyword + + + + + The "Error" keyword. + + + + + The "GoTo" keyword + + + + + An optional minus for On Error Goto -1 + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Resume Next statement. + + + + + The "On" keyword + + + + + The "Error" keyword. + + + + + The "Resume" keyword. + + + + + The "Next" + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + The "Resume" keyword. + + + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + + + The Select Case statement that begins the block. + + + + + A list of the contained Case blocks. + + + If nothing is present, an empty list is returned. + + + + + The End Select statement that ends the block. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + + + The "Select" keyword. + + + + + The "Case" keyword, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The value that branching is based on. + + + + + Represents a case statement and its subsequent block. + + + + + The statement that begins the case block. + + + + + The statements contained in the case block. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + + + The "Case" keyword + + + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a single clause in a case statement. An abstract node that is the + parent of different kinds of Case clauses. + + + + + The "Else" part in a Case Else statement. + + + + + The "Else" keyword. + + + + + Represents a single value in a Case. + + + + + The expression that denotes the value being tested against. + + + + + Represents a range "expression To expression" in a Case. + + + + + The lower bound of the range. + + + + + The "To" keyword + + + + + The upper bound of the range. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + The "Is" keyword, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + + + The expression that denotes the value being tested against. + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + + + The "SyncLock" keyword. + + + + + The expression being synchronized on. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + + + The Do statement that begins the block. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + The Loop statement that ends the block. + + + + + The Do statement that begins a Do-Loop block. + + + + + The "Do" keyword. + + + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The Loop statement that begins a Do-Loop block. + + + + + The "Loop" keyword. + + + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + + + The "While" or "Until" keyword. + + + + + The boolean expression after the While or Until. + + + + + The While statement that begins a While...End While block. This statement + always occurs as the Begin of a WhileBlock. + + + + + The "While" keyword. + + + + + The boolean expression that controls the While loop. + + + + + Represents a For or For Each block. + + + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a For block, including the introducing statement, the body and the + "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + + + The For statement that begins the block. + + + + + Represents a For Each block, including the introducing statement, the body and + the "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + + + The For Each statement that begins the block. + + + + + Represents a For or For Each statement. + + + + + The "For" keyword. + + + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + + + The "=" token. + + + + + The expression denoting the initial value of the iteration. + + + + + The "To" keyword. + + + + + The expression denoting the final value of the iteration. + + + + + The optional Step clause. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The Step clause in a For Statement. + + + + + The "Step" keyword. + + + + + The expression denoting the step increment. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + + + The "Each" keyword. + + + + + The "In" keyword. + + + + + The expression denoting the collection to iterate over. + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + + + The "Next" keyword. + + + + + The variables in the Next statement, if present + + + If nothing is present, an empty list is returned. + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + + + The "Using" keyword. + + + + + If the Using statement is of a form that does not declare a new variable, this + is the expression used in the using. Otherwise, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If the Using statement is of a form that declares one or more new variables, + this is the list of variable declarations. Otherwise, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Represents a Throw statement. + + + + + The "Throw" keyword + + + + + The expression denoting the value being thrown. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + The target (left hand side) of the assignment. + + + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + + + The source (right hand side) of the assignment. + + + + + Represents a left-hand side of a MidAssignment statement. + + + + + The "Mid" possibly followed by a type character. + + + + + The argument list. + + + + + Represent a call statement (also known as a invocation statement). + + + + + The "Call" keyword. + + + + + The expression denoting the call. This could be an Invocation or a MemberAccess + (in the case where no parentheses were supplied.) + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + + + The "AddHandler" or "RemoveHandler" keyword. + + + + + The event being accessed. + + + + + The "," token. + + + + + The delegate being added or removed. + + + + + Represent a RaiseEvent statement. + + + + + The "RaiseEvent" keyword + + + + + The name of the event being raised. + + + + + The argument list, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + + + The "With" keyword. + + + + + The expression that is the operand of the With statement. + + + + + Represents a ReDim statement. + + + + + The "ReDim" keyword. + + + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The list of ReDim clauses. + + + + + Represents a ReDim statement clause. + + + + + The target of the ReDim statement. + + + + + The ArraySizeInitializationModifier. + + + + + Represents an "Erase" statement. + + + + + The "Erase" keyword. + + + + + A list of expressions denoting the arrays to erase. + + + + + An abstract base class for all node classes that define expressions. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a parenthesized expression. + + + + + The "(" token + + + + + The expression inside the parentheses. + + + + + The ")" token + + + + + Represents a tuple literal expression. + + + + + The "(" token + + + + + The list of tuple arguments. + + + + + The ")" token + + + + + Represents a tuple type expression. + + + + + The "(" token + + + + + The list of tuple elements. + + + + + The ")" token + + + + + Represents a single declaration of a tuple element. + + + + + Represents a single declaration of a tuple element supplying only the type. + + + + + The type-name part of the tuple element syntax. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + + + The name of the element. + + + + + A simple "As" clause specifying the type of the tuple element. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Identifies one of the special instances "Me", "MyClass" or "MyBase". The Kind + property identifies which. + + + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "Me" + + + + + Identifies the special instance "MyBase" + + + + + Identifies the special instance "MyClass" + + + + + Represents a GetType expression. + + + + + The "GetType" keyword. + + + + + The "(" token. + + + + + The type to get the Type object for. This can be an open generic type. + + + + + The ")" token. + + + + + Represents a TypeOf...Is or IsNot expression. + + + + + The "TypeOf" keyword. + + + + + The expression being tested. + + + + + The "Is" or "IsNot" keyword. + + + + + The name of the type being tested against. + + + + + Represents a GetXmlNamespace expression. + + + + + The "GetXmlNamespace" keyword. + + + + + The "(" token. + + + + + The Xml namespace name being referenced. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The ")" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + + + The expression on the left-hand-side of the "." or "!" token. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "." or "!" token. + + + + + The identifier after the "." or "!" token. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The initial dot "." part of the separator. + + + + + The "@" part of .@ or the second "." of "...". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The third "." in a "..." separator. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The identifier after the ".", ".@" or "..." + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + + + The target of the call or index expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The argument list. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Base class for object, array and anonymous object creation expressions + + + + + The "New" keyword. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + + + The type of the object being initialized. + + + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + An optional From or With clause to initialize the new object. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a New expression that create an object of anonymous type. + + + + + The With clause to initialize the new object. + + + + + Represents an expression that creates a new array. + + + + + The element type of the array being created. + + + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A list of array modifiers such as "()" or "(,)". If no array modifiers were + present, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The initializer including the braces. + + + + + Represents an expression that creates a new array without naming the element + type. + + + + + The "{" token. + + + + + The list of initializers between the braces. + + + If nothing is present, an empty list is returned. + + + + + The "}" token. + + + + + Represents a CType, DirectCast or TryCast conversion expression. The Kind + property determines which kind of cast it is. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + + + The "(" token. + + + + + The expression being cast. + + + + + The "," token. + + + + + The type the expression is being cast to. + + + + + The ")" token. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + + + The keyword that was used in the cast operation. + + + + + The "(" token. + + + + + The expression being cast. + + + + + The ")" token. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + The left operand. + + + + + The right operand. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + + + The token that is the operator. + + + + + The expression being operated on. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + + + The "If" keyword + + + + + The "(" token + + + + + The first expression inside the parentheses. + + + + + The "," token. + + + + + The second expression inside the parentheses. + + + + + The ")" token + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + + + The "If" keyword + + + + + The "(" token + + + + + The first expression inside the parentheses. + + + + + The "," token. + + + + + The second expression inside the parentheses. + + + + + The "," token. + + + + + The second expression inside the parentheses. + + + + + The ")" token + + + + + Represents a lambda expression, either single line or multi-line. + + + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + + + Represents a single line lambda expression. + + + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a multi-line lambda expression. + + + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents the header part of a lambda expression + + + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a parenthesized argument list. + + + + + The "(" token. + + + + + The list of arguments. This may be empty. Omitted argument are represented by + an OmittedArgumentSyntax node. + + + If nothing is present, an empty list is returned. + + + + + The ")" token. + + + + + Base class for the possible kinds of arguments that can appear in an argument + list. + + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + + + An empty token because all non terminals must have a token. + + + + + Represents an argument that is just an optional argument name and an + expression. + + + + + The optional name and ":=" prefix of a named argument. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The expression that is the argument. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + + + The name used to identify the named argument. + + + + + The ":=" token. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + + + The lower bound of the range. This is typically the integer constant zero. + + + + + The "To" keyword. + + + + + The upper bound of the range. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + + + A list of all the query operators in this query expression. This list always + contains at least one operator. + + + + + This is a base class for all query operators. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + + + The name of the range variable being defined. + + + + + Describes the type of the variable being defined. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "In" keyword. + + + + + The expression that serves as the source of items for the range variable. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The expression used to initialize the expression variable. + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the aggregation + expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The name of the aggregation function. The "Group" aggregation function is + represented by the identifier "Group". + + + + + Represents the name and optional type of an expression range variable. + + + + + The name of the variable being defined. + + + + + Describes the type of the variable being defined. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "=" token. + + + + + Represents aggregation in aggregation range variable declaration of a Group By, + Group Join or Aggregate query operator. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + + + The name of the aggregation function. + + + + + The "(" token if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The argument to the aggregation function. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The ")" token, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + + + The "Group" keyword. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + + + The "From" keyword. + + + + + The list of collection variables declared by this From operator. + + + + + Represents a "Let" query operator. + + + + + The "Let" keyword. + + + + + The list of expression range variable being defined by the Let operator. + + + + + Represents an Aggregate query operator. + + + + + The "Aggregate" keyword. + + + + + The list of collection range variables declared by this Aggregate operator. + + + + + A list of additional query operators. It may be empty. + + + If nothing is present, an empty list is returned. + + + + + The "Into" keyword. + + + + + The list of new variables being defined by the aggregation. + + + + + Represents the "Distinct" query operator. + + + + + The "Distinct" keyword. + + + + + Represents a "Where" query operator. + + + + + The "Where" keyword. + + + + + The boolean expression used for filtering. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + + + The "Skip" or "Take" keyword. + + + + + The "While" keyword. + + + + + The boolean expression used for partitioning. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + + + The "Skip" or "Take" keyword. + + + + + Represents the expression with the number of items to take or skip. + + + + + Represents the "Group By" query operator. + + + + + The "Group" keyword. + + + + + The optional list of variables being grouped; the contents of the Group clause. + If none were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The "By" keyword. + + + + + The key values being used for grouping. + + + + + The list of new variables that calculate aggregations. + + + + + Represents a Join or a Group Join query operator. + + + + + The "Join" keyword. + + + + + Defines the collection range variables being joined to. + + + + + An additional Join or Group Join query operator. + + + If nothing is present, an empty list is returned. + + + + + The "On" keyword. + + + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Represents the "expression Equals expression" condition in a Join. + + + + + The left expression in the Join condition. + + + + + The "Equals" keyword. + + + + + The right expression in the Join condition. + + + + + Represents a Join query operator. + + + + + Represents the "Group Join" query operator. + + + + + The "Group" keyword. + + + + + The "Into" keyword. + + + + + The list of new variables that calculate aggregations. + + + + + Represents the "Order By" query operator. + + + + + The "Order" keyword + + + + + The "By" keyword. + + + + + The list of OrderExpression's to sort by. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + + + The expression to sort by. + + + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the "Select" query operator. + + + + + The "Select" keyword. + + + + + The list of expression range variables being defined by the Select query + operator. + + + + + This is the base class for all XML expression syntax nodes (XmlDocument and + XmlElement). + + + + + Represents an XML Document literal expression. + + + + + If nothing is present, an empty list is returned. + + + + + If nothing is present, an empty list is returned. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + + + Represents an XML element with content in an XML literal expression. + + + + + If nothing is present, an empty list is returned. + + + + + Represents Xml text. + + + + + A list of all the text tokens in the Xml text. This list always contains at + least one token. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + If nothing is present, an empty list is returned. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an empty XML element of the form <element /> + + + + + If nothing is present, an empty list is returned. + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + + + If nothing is present, an empty list is returned. + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + + + Represents an XML CDATA section in an XML literal expression. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + + + Abstract node class that represents the textual description of a type, possibly + include generic type arguments, qualified names, array specifiers, nullable + specifier and the like. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + + + The type of the elements of the array. + + + + + Represents the list of "()" or "(,,)" modifiers on the array type. + + + + + A type name that represents a nullable type, such as "Integer?". + + + + + The kind of type that is this type is a nullable of. Cannot be an array type or + a nullable type. + + + + + The "?" token. + + + + + Represents an occurrence of a Visual Basic built-in type such as Integer or + String in source code. + + + + + The keyword that was used to describe the built-in type. + + + + + Abstract node class that represents a name, possibly include generic arguments + and qualified names. + + + + + Abstract node class that represents a name, possibly include generic arguments. + + + + + The identifier in the name. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + + + The generic argument list. + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + + + The part of the name that appears to the left of the dot. This can itself be + any name. + + + + + The "." token that separates the names. + + + + + The part of the name that appears to the right of the dot. This must be a + simple identifier. + + + + + Represents a name in the global namespace. + + + + + The "Global" keyword. + + + + + Represents a parenthesized list of generic type arguments. + + + + + The "(" token. + + + + + The "Of" keyword. + + + + + A list of all the type arguments. + + + + + The ")" token. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represent a Yield statement. + + + + + The "Yield" keyword. + + + + + The expression whose value is being yielded. + + + + + Represents an Await expression. + + + + + The "Await" keyword. + + + + + The expression being awaited. + + + + + Represents a single syntactic token in a VB program. A token is a keyword, + punctuator, literal, identifier or XML token. The type of keyword or punctuator + can be determined from the Kind property. + + + + + Helper to check whether the token is a keyword + + + + + Helpers to check whether the token is a binary operator + + True if it is a binary operator + + + + Check whether the token is a statement terminator + + True if it is statement terminator + + + + Check whether token is end of text + + + + + Create a new token with the trivia prepended to the existing preceding trivia + + + + + Create a new token with the trivia appended to the existing following trivia + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents an Xml NCName per Namespaces in XML 1.0 + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + + + The text of the attribute or pcdata after normalization. + + + + + Represents literal character data in interpolated string expression. + + + + + The text. + + + + + Represents a Decimal literal token. + + + + + The type suffix or type character that was on the literal, if any. If no suffix + was present, TypeCharacter.None is returned. + + + + + The value of the token. + + + + + Represents a Date literal token. + + + + + The value of the token. + + + + + Represents a string literal token. + + + + + The value of the string, after removing the quotation marks and combining + doubled quotation marks. + + + + + Represents a string literal token. + + + + + The value of the character, after removing the quotation marks. + + + + + Abstract class that represent structured trivia. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + + + The list of tokens that were skipped by the parser. + + + If nothing is present, an empty list is returned. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in + source. + + + + + If nothing is present, an empty list is returned. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + + + The expression on the left-hand-side of the "?". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + "?" token. + + + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + Represents a NameOf expression. + + + + + The "NameOf" keyword. + + + + + The "(" token. + + + + + The argument. + + + + + The ")" token. + + + + + Represents an interpolated string expression. + + + + + The opening '$"', '$“', or '$”' token. + + + + + The contents of the interpolated string. + + + + + The closing '"', '”', or '“' token. + + + + + Represents either text content or an interpolation. + + + + + Represents literal text content in an interpolated string. + + + + + The text token. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + + + The opening curly brace '{' token. + + + + + The expression whose formatted value should be embedded in the resultant + string. + + + + + Optional. The alignment clause ',alignment' of the embedded expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Optional. The format string clause ':formatString' of the embedded expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The closing curly brace '}' token of the embedded expression. + + + + + Represents an alignment clause ',alignment' of an interpolated string embedded + expression. + + + + + The comma ',' token. + + + + + An expression representing the alignment of the interpolated expression. + + + + + Represents a format string clause ':formatString' of an interpolated string + embedded expression. + + + + + The ':' token. + + + + + The format string. + + + + + Represents a pre-processing directive (such as #If, #Const or #Region) + appearing in source. + + + + + The "#" token in a preprocessor directive. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + + + The "Const" keyword. + + + + + The name of the pre-processing constant being defined. + + + + + The "=" token. + + + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an #Else pre-processing directive appearing in source. + + + + + Represents an #End If pre-processing directive appearing in source. + + + + + Represents the beginning of a #Region directive appearing in source. + + + + + The "Region" keyword. + + + + + The label of the code region being defined. + + + + + Represents an #End Region directive appearing in source. + + + + + The "End" keyword. + + + + + The "Region" keyword. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + + + Represents an #r directive appearing in scripts. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + An empty token because all non terminals must have a token. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + A representing the specific kind of + EndBlockStatementSyntax. One of EndIfStatement, EndUsingStatement, + EndWithStatement, EndSelectStatement, EndStructureStatement, EndEnumStatement, + EndInterfaceStatement, EndClassStatement, EndModuleStatement, + EndNamespaceStatement, EndSubStatement, EndFunctionStatement, EndGetStatement, + EndSetStatement, EndPropertyStatement, EndOperatorStatement, EndEventStatement, + EndAddHandlerStatement, EndRemoveHandlerStatement, EndRaiseEventStatement, + EndWhileStatement, EndTryStatement, EndSyncLockStatement. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an entire source file of VB code. + + + Represents the list of Option statements at the beginning of a source file. + + + Represents the list of Imports statements at the beginning of a source file. + + + Represents the list of AttributeStatements at the beginning of a source file + that contain the Assembly and Module attributes. + + + Represents the members of the default namespace for this source file: all the + top-level type and namespace declarations in the file. May also contain + Statements that are not valid + + + Represents the end of the source file. This token may have trivia (whitespace, + comments, ...) attached to it. + + + + + Represents an Option statement, such as "Option Strict On". + + + The "Option" keyword. + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + The keyword that identifiers the value being set for the option: On, Off, Text + or Binary. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + The "Imports" keyword. + + + A list of one or more import clauses. Each clause is either an alias, namespace + or XML namespace import. + + + + + Represents the clause of an Imports statement that imports all members of a + type or namespace or aliases a type or namespace. + + + An optional alias for the namespace or type being imported. + + + The namespace or type being imported. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + The identifier being introduced. + + + The "=" token. + + + + + Defines a XML namespace for XML expressions. + + + Identifies the XML namespace alias and URI. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + The statement that begins the NamespaceBlock. + + + The declarations contained in the namespace statement. + + + The End Namespace statement that ends the block. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + The "Namespace" keyword. + + + A (possibly dotted) name denoting the namespace being declared. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + The "Module" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Module" statement that ends the block. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + The "Structure" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Structure" statement that ends the block. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + The "Interface" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Interface" statement that ends the block. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + The "Class" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Class" statement that ends the block. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + The statement that begins the type or module. + + + The declarations contained in the enumeration. + + + The End XXX statement that ends the block. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + The "Inherits" keyword. + + + A list of the types being inherited. + + + + + Represents an Implements statement in a Class or Structure. + + + The "Implements" keyword. + + + A list of the types being implemented. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Module" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Structure" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Interface" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Class" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Enum" keyword. + + + The name of the enum being declared. + + + Optional "As XXX" clause describing the underlying type of the enumeration. If + no As clause was specified, Nothing is returned. + + + + + Represents the type parameter list in a declaration. + + + The "(" token. + + + The "Of" keyword. + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + The ")" token. + + + + + Represents a type parameter on a generic type declaration. + + + Represents the "In" or "Out" variance keyword on a type parameter, if present. + If no variance modifier was present, Nothing is returned. + + + The name of the type parameter + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + A list of the supplied constraints. If no constraints were supplied, Nothing is + returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + The "As" keyword. + + + The "{" token. + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + The "}" token. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + A representing the specific kind of + SpecialConstraintSyntax. One of NewConstraint, ClassConstraint, + StructureConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + Represents a type parameter constraint that is a type. + + + The type describing the constraint. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + An optional value for the enum member. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + A representing the specific kind of MethodBlockSyntax. + One of SubBlock, FunctionBlock. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + The "Sub New" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" statement that ends the block declaration. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Operator" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Operator" statement that ends the block declaration. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + A representing the specific kind of AccessorBlockSyntax. + One of GetAccessorBlock, SetAccessorBlock, AddHandlerAccessorBlock, + RemoveHandlerAccessorBlock, RaiseEventAccessorBlock. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + The property declaration that begins the block. + + + The accessor blocks contained in the property, between the Property and the End + Property statements. + + + The End Property statement that ends the block. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + The event declaration that begins the block. + + + The accessor blocks contained in the custom event declaration, between the + Event statement and the End Event statement. + + + The End Event statement that ends the block. + + + + + Represents the parameter list in a method declaration. + + + The "(" token that introduces the parameter list. If no parameter list was + present, Nothing is returned. + + + The list of parameters. If no parameter list was present, Nothing is returned. + + + The ")" token that concludes the parameter list. If no parameter list was + present, Nothing is returned. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A representing the specific kind of + MethodStatementSyntax. One of SubStatement, FunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" keyword. + + + The "New" keyword in the constructor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A representing the specific kind of + DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A representing the specific kind of + DelegateStatementSyntax. One of DelegateSubStatement, + DelegateFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The optional Custom keyword for custom event declarations. + + + The "Event" keyword that introduces this event declaration. + + + The name of the event being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an Implements clause indicates the interface methods that this + method implements. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Operator" keyword that introduces this operator declaration. + + + The operator being defined. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Property" keyword that introduces this property declaration. + + + The name of the property being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + property. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A representing the specific kind of + AccessorStatementSyntax. One of GetAccessorStatement, SetAccessorStatement, + AddHandlerAccessorStatement, RemoveHandlerAccessorStatement, + RaiseEventAccessorStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + The "Implements" keyword. + + + The list of interface members being implemented. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + The "Handles" keyword. + + + The list of event members being handled. + + + + + Represents event container specified through special keywords "Me", "MyBase" or + "MyClass".. + + + The container of the event. This can be one of the special keywords: "Me", + "MyBase" or "MyClass". + + + + + Represents event container that refers to a WithEvents member. + + + The container of the event. It is a simple identifier that refers to a + WithEvents member of the containing type. + + + + + Represents event container that refers to a WithEvents member's property. + + + The container of the event. + + + The "." token. + + + The provider of the event. It is a property of a WithEvents member of the + containing type. + + + + + Represents a single handled event in a "Handles ..." clause. + + + The container of the event. This can either be a simple identifier (identifying + a members of the containing type) or one of the special keywords "Me", "MyBase" + or "MyClass". + + + The "." token. + + + The event being handled. This must be a simple identifier. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The missing identifier token for this incomplete member. Should only be used to + have a location for error reporting. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + The "As" clause that describes the return type, and possibly includes "New", + "With" or "From". If no As clause was present, Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + variable or the value of the constant. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + The "As" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type-name part of the As clause. + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + The "As" keyword. + + + The New expression + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + The "With" keyword. + + + The "{" token. + + + The comma-separated list of field initializers. + + + The "}" token. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + The "From" keyword. + + + The initializer including the braces. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + The optional "Key" keyword. + + + The value being assigned. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + The optional "Key" keyword. + + + The "." token. + + + The name of the field being initialized. + + + The "=" token. + + + The value being assigned to the field. + + + + + Represents an "= initializer" clause in a declaration for a variable, parameter + or automatic property. + + + The "=" token. + + + The expression used as the initial value. + + + + + Represent a parameter to a method, property, constructor, etc. + + + A list of all attribute lists on this parameter. If no attributes were + specified, Nothing is returned. + + + A list of the modifier tokens "ByVal", "ByRef", "Optional" or "ParamArray" that + modify this parameter. + + + The name of the parameter, including any "?" or "()" modifiers. + + + If present, the "As type-name" clause describing the type of the parameter. If + no As clause is present, Nothing is returned. + + + If present, an initializer with the default value of the parameter. If no + default value is present, Nothing is returned. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + The identifier that names the item being declared. + + + The "?" token that indicates a nullable type. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + A list of array modifiers for the type. If no array modifiers were present, an + empty list is returned. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + The "(" token. + + + The comma tokens in the array type. There is one less comma than the rank. + + + The ")" token. + + + + + Represents a group of attributes within "<" and ">" brackets. + + + The "<" token. + + + A comma separated list of attribute declarations in this attribute list. + + + The ">" token. + + + + + Represents a single attribute declaration within an attribute list. + + + Optional attribute target. Assembly|Module : + + + The name of the attribute. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + + + Represents a single attribute declaration within an attribute list. + + + The "Assembly" or "Module" attribute modifier, is present. If no attribute + modifier is present, Nothing is returned. + + + The ":" token, if an attribute modifier is present. If no attribute modifier is + present, Nothing is returned. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + The list of attribute lists. + + + + + Represent an expression in a statement context. This may only be a invocation + or await expression in standard code but may be any expression in VB + Interactive code. + + + The expression. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + "?" token. + + + The expression whose value is being output. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + The While statement that begins the block. + + + The statements contained in the While...End While. This might be an empty list. + + + The End While statement that ends the block. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + The UsingStatement that begins the Using...End Using block. + + + The statements contained in the Using...End Using block. This might be an empty + list. + + + The End Using statement that ends the block. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + The SyncLock statement that begins the block. + + + The statements contained in the SyncLock...End SyncLock statement. This might + be an empty list. + + + The End SyncLock statement that ends the block. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + The WithStatement that begins the With...End With block. + + + The statements contained in the With...End With block. This might be an empty + list. + + + The End With statement that ends the block. + + + + + Represents the declaration of one or more local variables or constants. + + + The modifier token (Static, Dim or Const) that introduces this local variable + declaration. + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents a label statement. + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + The ":" token of the label statement. + + + + + Represents a "GoTo" statement. + + + The "GoTo" keyword. + + + The name of the label. If the label is a line number, wraps an IntegerLiteral + that is the line number, otherwise, wraps an Identifier. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + A representing the specific kind of LabelSyntax. One of + IdentifierLabel, NumericLabel, NextLabel. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + The "Stop" or "End" keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + The "Stop" or "End" keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + A representing the specific kind of + StopOrEndStatementSyntax. One of StopStatement, EndStatement. + + + The "Stop" or "End" keyword. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + A representing the specific kind of ExitStatementSyntax. + One of ExitDoStatement, ExitForStatement, ExitSubStatement, + ExitFunctionStatement, ExitOperatorStatement, ExitPropertyStatement, + ExitTryStatement, ExitSelectStatement, ExitWhileStatement. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + A representing the specific kind of + ContinueStatementSyntax. One of ContinueWhileStatement, ContinueDoStatement, + ContinueForStatement. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Return" statement. + + + The "Return" keyword. + + + The expression being returned, if present. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + The "If" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + A list of statements to be executed if the condition expression evaluates as + true. Multiple statements must be separated by colons. + + + An "Else" clause to be executed if the condition expression evaluates as false. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + The "Else" keyword. + + + A list of statements to be executed. Multiple statements must be separated by + colons. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + The "If" statement that begins the "If" block. + + + A list of statements to be executed if the condition expression evaluates as + true. + + + A list of "ElseIf" blocks to be evaluated, in order, if the condition + expression of the "If" statement evaluates as false. + + + An "Else" block to be executed if the condition expression of the "If" + statement and all "ElseIf" blocks evaluate as false. + + + Then "End If" statement. + + + + + Represents the "If ... Then" statement that begins a multi-line "If" block. + + + The "If" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + + + Represents an "ElseIf ... Then ..." block. + + + The "ElseIf ... Then" statement the begins the "ElseIf" block. + + + A list of statements to be executed if the condition expression of the "ElseIf" + statement evaluates as true. + + + + + Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. + + + The "ElseIf" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + + + Represents an "Else ..." block. + + + The "Else" statement that begins the "Else" block. + + + A list of statements to be executed. + + + + + Represents the "Else" statement that begins an "Else" block. + + + The "Else" keyword. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + The "Try" statement that begins the "Try" block. + + + A list of statements to be executed. + + + A list of "Catch" blocks which may be executed if an exception is thrown while + executing the statements in the "Try" block. + + + A "Finally" block to be executed before execution leaves the "Try" block. + + + The "End Try" statement. + + + + + Represents the "Try" statement that begins a "Try" block. + + + The "Try" keyword. + + + + + Represents a "Catch ..." block. + + + The "Catch" statement that begins the "Catch" block. + + + A list of statements to be executed if an exception is caught by the "Catch" + block. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + The "Catch" keyword. + + + An identifier declaring a new variable or naming an existing variable to store + the exception caught by the "Catch" statement. + + + A simple "As" clause specifying the type of exception to catch. + + + A "When" clause to filter exceptions before catching. + + + + + Represents the "When ..." clause of a "Catch" statement. + + + The "When" keyword. + + + The filter expression to be evaluated. + + + + + Represents a "Finally ..." block of a "Try" block. + + + The "Finally" statement that begins the "Finally" block. + + + A list of statements to be executed. + + + + + Represents the "Finally" statement that begins a "Finally" block. + + + The "Finally" keyword. + + + + + Represents the "Error" statement. + + + The "Error" keyword. + + + The expression that represents the error number. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + A representing the specific kind of + OnErrorGoToStatementSyntax. One of OnErrorGoToZeroStatement, + OnErrorGoToMinusOneStatement, OnErrorGoToLabelStatement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Resume Next statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "Resume" keyword. + + + The "Next" + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + The Select Case statement that begins the block. + + + A list of the contained Case blocks. + + + The End Select statement that ends the block. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + The "Select" keyword. + + + The "Case" keyword, if present. + + + The value that branching is based on. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + The "Else" part in a Case Else statement. + + + The "Else" keyword. + + + + + Represents a single value in a Case. + + + The expression that denotes the value being tested against. + + + + + Represents a range "expression To expression" in a Case. + + + The lower bound of the range. + + + The "To" keyword + + + The upper bound of the range. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + A representing the specific kind of + RelationalCaseClauseSyntax. One of CaseEqualsClause, CaseNotEqualsClause, + CaseLessThanClause, CaseLessThanOrEqualClause, CaseGreaterThanOrEqualClause, + CaseGreaterThanClause. + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + The "SyncLock" keyword. + + + The expression being synchronized on. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + A representing the specific kind of DoLoopBlockSyntax. + One of SimpleDoLoopBlock, DoWhileLoopBlock, DoUntilLoopBlock, DoLoopWhileBlock, + DoLoopUntilBlock. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + A representing the specific kind of DoStatementSyntax. + One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + A representing the specific kind of LoopStatementSyntax. + One of SimpleLoopStatement, LoopWhileStatement, LoopUntilStatement. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + A representing the specific kind of + WhileOrUntilClauseSyntax. One of WhileClause, UntilClause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + The While statement that begins a While...End While block. This statement + always occurs as the Begin of a WhileBlock. + + + The "While" keyword. + + + The boolean expression that controls the While loop. + + + + + Represents a For block, including the introducing statement, the body and the + "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For statement that begins the block. + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + + + Represents a For Each block, including the introducing statement, the body and + the "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For Each statement that begins the block. + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + The "For" keyword. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The "=" token. + + + The expression denoting the initial value of the iteration. + + + The "To" keyword. + + + The expression denoting the final value of the iteration. + + + The optional Step clause. + + + + + The Step clause in a For Statement. + + + The "Step" keyword. + + + The expression denoting the step increment. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + The "For" keyword. + + + The "Each" keyword. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The "In" keyword. + + + The expression denoting the collection to iterate over. + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + The "Next" keyword. + + + The variables in the Next statement, if present + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + The "Using" keyword. + + + If the Using statement is of a form that does not declare a new variable, this + is the expression used in the using. Otherwise, Nothing is returned. + + + If the Using statement is of a form that declares one or more new variables, + this is the list of variable declarations. Otherwise, Nothing is returned. + + + + + Represents a Throw statement. + + + The "Throw" keyword + + + The expression denoting the value being thrown. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + A representing the specific kind of + AssignmentStatementSyntax. One of SimpleAssignmentStatement, + MidAssignmentStatement, AddAssignmentStatement, SubtractAssignmentStatement, + MultiplyAssignmentStatement, DivideAssignmentStatement, + IntegerDivideAssignmentStatement, ExponentiateAssignmentStatement, + LeftShiftAssignmentStatement, RightShiftAssignmentStatement, + ConcatenateAssignmentStatement. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a left-hand side of a MidAssignment statement. + + + The "Mid" possibly followed by a type character. + + + The argument list. + + + + + Represent a call statement (also known as a invocation statement). + + + The "Call" keyword. + + + The expression denoting the call. This could be an Invocation or a MemberAccess + (in the case where no parentheses were supplied.) + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + A representing the specific kind of + AddRemoveHandlerStatementSyntax. One of AddHandlerStatement, + RemoveHandlerStatement. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represent a RaiseEvent statement. + + + The "RaiseEvent" keyword + + + The name of the event being raised. + + + The argument list, if present. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + The "With" keyword. + + + The expression that is the operand of the With statement. + + + + + Represents a ReDim statement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement clause. + + + The target of the ReDim statement. + + + The ArraySizeInitializationModifier. + + + + + Represents an "Erase" statement. + + + The "Erase" keyword. + + + A list of expressions denoting the arrays to erase. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + A representing the specific kind of + LiteralExpressionSyntax. One of CharacterLiteralExpression, + TrueLiteralExpression, FalseLiteralExpression, NumericLiteralExpression, + DateLiteralExpression, StringLiteralExpression, NothingLiteralExpression. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a parenthesized expression. + + + The "(" token + + + The expression inside the parentheses. + + + The ")" token + + + + + Represents a tuple literal expression. + + + The "(" token + + + The list of tuple arguments. + + + The ")" token + + + + + Represents a tuple type expression. + + + The "(" token + + + The list of tuple elements. + + + The ")" token + + + + + Represents a single declaration of a tuple element supplying only the type. + + + The type-name part of the tuple element syntax. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + The name of the element. + + + A simple "As" clause specifying the type of the tuple element. + + + + + Identifies the special instance "Me" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "MyBase" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "MyClass" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Represents a GetType expression. + + + The "GetType" keyword. + + + The "(" token. + + + The type to get the Type object for. This can be an open generic type. + + + The ")" token. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + A representing the specific kind of + TypeOfExpressionSyntax. One of TypeOfIsExpression, TypeOfIsNotExpression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a GetXmlNamespace expression. + + + The "GetXmlNamespace" keyword. + + + The "(" token. + + + The Xml namespace name being referenced. + + + The ")" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + A representing the specific kind of + MemberAccessExpressionSyntax. One of SimpleMemberAccessExpression, + DictionaryAccessExpression. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + A representing the specific kind of + XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, + XmlDescendantAccessExpression, XmlAttributeAccessExpression. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + The target of the call or index expression. + + + The argument list. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type of the object being initialized. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + An optional From or With clause to initialize the new object. + + + + + Represents a New expression that create an object of anonymous type. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The With clause to initialize the new object. + + + + + Represents an expression that creates a new array. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The element type of the array being created. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + A list of array modifiers such as "()" or "(,)". If no array modifiers were + present, an empty list is returned. + + + The initializer including the braces. + + + + + Represents an expression that creates a new array without naming the element + type. + + + The "{" token. + + + The list of initializers between the braces. + + + The "}" token. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + The keyword that was used in the cast operation. + + + The "(" token. + + + The expression being cast. + + + The ")" token. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + A representing the specific kind of + BinaryExpressionSyntax. One of AddExpression, SubtractExpression, + MultiplyExpression, DivideExpression, IntegerDivideExpression, + ExponentiateExpression, LeftShiftExpression, RightShiftExpression, + ConcatenateExpression, ModuloExpression, EqualsExpression, NotEqualsExpression, + LessThanExpression, LessThanOrEqualExpression, GreaterThanOrEqualExpression, + GreaterThanExpression, IsExpression, IsNotExpression, LikeExpression, + OrExpression, ExclusiveOrExpression, AndExpression, OrElseExpression, + AndAlsoExpression. + + + The left operand. + + + The right operand. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + A representing the specific kind of + UnaryExpressionSyntax. One of UnaryPlusExpression, UnaryMinusExpression, + NotExpression, AddressOfExpression. + + + The token that is the operator. + + + The expression being operated on. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The "If" keyword + + + The "(" token + + + The first expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The ")" token + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The "If" keyword + + + The "(" token + + + The first expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The ")" token + + + + + Represents a single line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a single line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a single line lambda expression. + + + A representing the specific kind of + SingleLineLambdaExpressionSyntax. One of SingleLineFunctionLambdaExpression, + SingleLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + A representing the specific kind of + MultiLineLambdaExpressionSyntax. One of MultiLineFunctionLambdaExpression, + MultiLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A representing the specific kind of LambdaHeaderSyntax. + One of SubLambdaHeader, FunctionLambdaHeader. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents a parenthesized argument list. + + + The "(" token. + + + The list of arguments. This may be empty. Omitted argument are represented by + an OmittedArgumentSyntax node. + + + The ")" token. + + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + An empty token because all non terminals must have a token. + + + + + Represents an argument that is just an optional argument name and an + expression. + + + The optional name and ":=" prefix of a named argument. + + + The expression that is the argument. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + The name used to identify the named argument. + + + The ":=" token. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + The lower bound of the range. This is typically the integer constant zero. + + + The "To" keyword. + + + The upper bound of the range. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + A list of all the query operators in this query expression. This list always + contains at least one operator. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + The name of the range variable being defined. + + + Describes the type of the variable being defined. + + + The "In" keyword. + + + The expression that serves as the source of items for the range variable. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the expression. + + + The expression used to initialize the expression variable. + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the aggregation + expression. + + + The name of the aggregation function. The "Group" aggregation function is + represented by the identifier "Group". + + + + + Represents the name and optional type of an expression range variable. + + + The name of the variable being defined. + + + Describes the type of the variable being defined. + + + The "=" token. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + The name of the aggregation function. + + + The "(" token if present. + + + The argument to the aggregation function. + + + The ")" token, if present. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + The "Group" keyword. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + The "From" keyword. + + + The list of collection variables declared by this From operator. + + + + + Represents a "Let" query operator. + + + The "Let" keyword. + + + The list of expression range variable being defined by the Let operator. + + + + + Represents an Aggregate query operator. + + + The "Aggregate" keyword. + + + The list of collection range variables declared by this Aggregate operator. + + + A list of additional query operators. It may be empty. + + + The "Into" keyword. + + + The list of new variables being defined by the aggregation. + + + + + Represents the "Distinct" query operator. + + + The "Distinct" keyword. + + + + + Represents a "Where" query operator. + + + The "Where" keyword. + + + The boolean expression used for filtering. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + A representing the specific kind of + PartitionWhileClauseSyntax. One of SkipWhileClause, TakeWhileClause. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + A representing the specific kind of + PartitionClauseSyntax. One of SkipClause, TakeClause. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents the "Group By" query operator. + + + The "Group" keyword. + + + The optional list of variables being grouped; the contents of the Group clause. + If none were specified, an empty list is returned. + + + The "By" keyword. + + + The key values being used for grouping. + + + The list of new variables that calculate aggregations. + + + + + Represents the "expression Equals expression" condition in a Join. + + + The left expression in the Join condition. + + + The "Equals" keyword. + + + The right expression in the Join condition. + + + + + Represents a Join query operator. + + + The "Join" keyword. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The "On" keyword. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Represents the "Group Join" query operator. + + + The "Group" keyword. + + + The "Join" keyword. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The "On" keyword. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + The "Into" keyword. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Order By" query operator. + + + The "Order" keyword + + + The "By" keyword. + + + The list of OrderExpression's to sort by. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + A representing the specific kind of OrderingSyntax. One + of AscendingOrdering, DescendingOrdering. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + Represents the "Select" query operator. + + + The "Select" keyword. + + + The list of expression range variables being defined by the Select query + operator. + + + + + Represents an XML Document literal expression. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + + + Represents an XML element with content in an XML literal expression. + + + + + Represents Xml text. + + + A list of all the text tokens in the Xml text. This list always contains at + least one token. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + Represents an empty XML element of the form <element /> + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + + + Represents an XML CDATA section in an XML literal expression. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + The type of the elements of the array. + + + Represents the list of "()" or "(,,)" modifiers on the array type. + + + + + A type name that represents a nullable type, such as "Integer?". + + + The kind of type that is this type is a nullable of. Cannot be an array type or + a nullable type. + + + The "?" token. + + + + + Represents an occurrence of a Visual Basic built-in type such as Integer or + String in source code. + + + The keyword that was used to describe the built-in type. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + The identifier in the name. + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + The identifier in the name. + + + The generic argument list. + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + The part of the name that appears to the left of the dot. This can itself be + any name. + + + The "." token that separates the names. + + + The part of the name that appears to the right of the dot. This must be a + simple identifier. + + + + + Represents a name in the global namespace. + + + The "Global" keyword. + + + + + Represents a parenthesized list of generic type arguments. + + + The "(" token. + + + The "Of" keyword. + + + A list of all the type arguments. + + + The ")" token. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + Represent a Yield statement. + + + The "Yield" keyword. + + + The expression whose value is being yielded. + + + + + Represents an Await expression. + + + The "Await" keyword. + + + The expression being awaited. + + + + + Represents an Xml NCName per Namespaces in XML 1.0 + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + A representing the specific kind of XmlTextTokenSyntax. + One of XmlTextLiteralToken, XmlEntityLiteralToken, + DocumentationCommentLineBreakToken. + + + The actual text of this token. + + + + + Represents literal character data in interpolated string expression. + + + The actual text of this token. + + + + + Represents a Decimal literal token. + + + The actual text of this token. + + + + + Represents a Date literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + The list of tokens that were skipped by the parser. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in + source. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + The expression on the left-hand-side of the "?". + + + "?" token. + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + Represents a NameOf expression. + + + The "NameOf" keyword. + + + The "(" token. + + + The argument. + + + The ")" token. + + + + + Represents an interpolated string expression. + + + The opening '$"', '$“', or '$”' token. + + + The contents of the interpolated string. + + + The closing '"', '”', or '“' token. + + + + + Represents literal text content in an interpolated string. + + + The text token. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + The opening curly brace '{' token. + + + The expression whose formatted value should be embedded in the resultant + string. + + + Optional. The alignment clause ',alignment' of the embedded expression. + + + Optional. The format string clause ':formatString' of the embedded expression. + + + The closing curly brace '}' token of the embedded expression. + + + + + Represents an alignment clause ',alignment' of an interpolated string embedded + expression. + + + The comma ',' token. + + + An expression representing the alignment of the interpolated expression. + + + + + Represents a format string clause ':formatString' of an interpolated string + embedded expression. + + + The ':' token. + + + The format string. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + A representing the specific kind of SyntaxTrivia. One of + WhitespaceTrivia, EndOfLineTrivia, ColonTrivia, CommentTrivia, + ConflictMarkerTrivia, LineContinuationTrivia, + DocumentationCommentExteriorTrivia, DisabledTextTrivia. + + + The actual text of this token. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + The "#" token in a preprocessor directive. + + + The "Const" keyword. + + + The name of the pre-processing constant being defined. + + + The "=" token. + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #Else pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #End If pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of a #Region directive appearing in source. + + + The "#" token in a preprocessor directive. + + + The "Region" keyword. + + + The label of the code region being defined. + + + + + Represents an #End Region directive appearing in source. + + + The "#" token in a preprocessor directive. + + + The "End" keyword. + + + The "Region" keyword. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #r directive appearing in scripts. + + + The "#" token in a preprocessor directive. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + The "#" token in a preprocessor directive. + + + + + Create an identifier node without brackets or type character. + + + + + Create an identifier node with brackets or type character. + + + + + Create an identifier node without brackets or type character or trivia. + + + + + Create a missing identifier. + + + + + Create a missing contextual keyword. + + + + + Create a missing keyword. + + + + + Create a missing punctuation mark. + + + + + Create a missing string literal. + + + + + Create a missing character literal. + + + + + Create a missing integer literal. + + + + + Creates a copy of a token. + + + + The new token + + + + Create an end-of-text token. + + + + + Create an end-of-text token. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + An empty token because all non terminals must have a token. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + A representing the specific kind of + EndBlockStatementSyntax. One of EndIfStatement, EndUsingStatement, + EndWithStatement, EndSelectStatement, EndStructureStatement, EndEnumStatement, + EndInterfaceStatement, EndClassStatement, EndModuleStatement, + EndNamespaceStatement, EndSubStatement, EndFunctionStatement, EndGetStatement, + EndSetStatement, EndPropertyStatement, EndOperatorStatement, EndEventStatement, + EndAddHandlerStatement, EndRemoveHandlerStatement, EndRaiseEventStatement, + EndWhileStatement, EndTryStatement, EndSyncLockStatement. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an entire source file of VB code. + + + Represents the list of Option statements at the beginning of a source file. + + + Represents the list of Imports statements at the beginning of a source file. + + + Represents the list of AttributeStatements at the beginning of a source file + that contain the Assembly and Module attributes. + + + Represents the members of the default namespace for this source file: all the + top-level type and namespace declarations in the file. May also contain + Statements that are not valid + + + Represents the end of the source file. This token may have trivia (whitespace, + comments, ...) attached to it. + + + + + Represents an Option statement, such as "Option Strict On". + + + The "Option" keyword. + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + The keyword that identifiers the value being set for the option: On, Off, Text + or Binary. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + The "Imports" keyword. + + + A list of one or more import clauses. Each clause is either an alias, namespace + or XML namespace import. + + + + + Represents the clause of an Imports statement that imports all members of a + type or namespace or aliases a type or namespace. + + + An optional alias for the namespace or type being imported. + + + The namespace or type being imported. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + The identifier being introduced. + + + The "=" token. + + + + + Defines a XML namespace for XML expressions. + + + Identifies the XML namespace alias and URI. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + The statement that begins the NamespaceBlock. + + + The declarations contained in the namespace statement. + + + The End Namespace statement that ends the block. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + The "Namespace" keyword. + + + A (possibly dotted) name denoting the namespace being declared. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + The "Module" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Module" statement that ends the block. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + The "Structure" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Structure" statement that ends the block. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + The "Interface" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Interface" statement that ends the block. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + The "Class" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Class" statement that ends the block. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + The statement that begins the type or module. + + + The declarations contained in the enumeration. + + + The End XXX statement that ends the block. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + The "Inherits" keyword. + + + A list of the types being inherited. + + + + + Represents an Implements statement in a Class or Structure. + + + The "Implements" keyword. + + + A list of the types being implemented. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Module" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Structure" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Interface" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Class" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Enum" keyword. + + + The name of the enum being declared. + + + Optional "As XXX" clause describing the underlying type of the enumeration. If + no As clause was specified, Nothing is returned. + + + + + Represents the type parameter list in a declaration. + + + The "(" token. + + + The "Of" keyword. + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + The ")" token. + + + + + Represents a type parameter on a generic type declaration. + + + Represents the "In" or "Out" variance keyword on a type parameter, if present. + If no variance modifier was present, Nothing is returned. + + + The name of the type parameter + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + A list of the supplied constraints. If no constraints were supplied, Nothing is + returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + The "As" keyword. + + + The "{" token. + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + The "}" token. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + A representing the specific kind of + SpecialConstraintSyntax. One of NewConstraint, ClassConstraint, + StructureConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + Represents a type parameter constraint that is a type. + + + The type describing the constraint. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + An optional value for the enum member. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + A representing the specific kind of MethodBlockSyntax. + One of SubBlock, FunctionBlock. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + The "Sub New" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" statement that ends the block declaration. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Operator" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Operator" statement that ends the block declaration. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + A representing the specific kind of AccessorBlockSyntax. + One of GetAccessorBlock, SetAccessorBlock, AddHandlerAccessorBlock, + RemoveHandlerAccessorBlock, RaiseEventAccessorBlock. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + The property declaration that begins the block. + + + The accessor blocks contained in the property, between the Property and the End + Property statements. + + + The End Property statement that ends the block. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + The event declaration that begins the block. + + + The accessor blocks contained in the custom event declaration, between the + Event statement and the End Event statement. + + + The End Event statement that ends the block. + + + + + Represents the parameter list in a method declaration. + + + The "(" token that introduces the parameter list. If no parameter list was + present, Nothing is returned. + + + The list of parameters. If no parameter list was present, Nothing is returned. + + + The ")" token that concludes the parameter list. If no parameter list was + present, Nothing is returned. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A representing the specific kind of + MethodStatementSyntax. One of SubStatement, FunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" keyword. + + + The "New" keyword in the constructor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A representing the specific kind of + DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A representing the specific kind of + DelegateStatementSyntax. One of DelegateSubStatement, + DelegateFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The optional Custom keyword for custom event declarations. + + + The "Event" keyword that introduces this event declaration. + + + The name of the event being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an Implements clause indicates the interface methods that this + method implements. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Operator" keyword that introduces this operator declaration. + + + The operator being defined. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Property" keyword that introduces this property declaration. + + + The name of the property being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + property. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A representing the specific kind of + AccessorStatementSyntax. One of GetAccessorStatement, SetAccessorStatement, + AddHandlerAccessorStatement, RemoveHandlerAccessorStatement, + RaiseEventAccessorStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + The "Implements" keyword. + + + The list of interface members being implemented. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + The "Handles" keyword. + + + The list of event members being handled. + + + + + Represents event container specified through special keywords "Me", "MyBase" or + "MyClass".. + + + The container of the event. This can be one of the special keywords: "Me", + "MyBase" or "MyClass". + + + + + Represents event container that refers to a WithEvents member. + + + The container of the event. It is a simple identifier that refers to a + WithEvents member of the containing type. + + + + + Represents event container that refers to a WithEvents member's property. + + + The container of the event. + + + The "." token. + + + The provider of the event. It is a property of a WithEvents member of the + containing type. + + + + + Represents a single handled event in a "Handles ..." clause. + + + The container of the event. This can either be a simple identifier (identifying + a members of the containing type) or one of the special keywords "Me", "MyBase" + or "MyClass". + + + The "." token. + + + The event being handled. This must be a simple identifier. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The missing identifier token for this incomplete member. Should only be used to + have a location for error reporting. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + The "As" clause that describes the return type, and possibly includes "New", + "With" or "From". If no As clause was present, Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + variable or the value of the constant. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + The "As" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type-name part of the As clause. + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + The "As" keyword. + + + The New expression + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + The "With" keyword. + + + The "{" token. + + + The comma-separated list of field initializers. + + + The "}" token. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + The "From" keyword. + + + The initializer including the braces. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + The optional "Key" keyword. + + + The value being assigned. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + The optional "Key" keyword. + + + The "." token. + + + The name of the field being initialized. + + + The "=" token. + + + The value being assigned to the field. + + + + + Represents an "= initializer" clause in a declaration for a variable, parameter + or automatic property. + + + The "=" token. + + + The expression used as the initial value. + + + + + Represent a parameter to a method, property, constructor, etc. + + + A list of all attribute lists on this parameter. If no attributes were + specified, Nothing is returned. + + + A list of the modifier tokens "ByVal", "ByRef", "Optional" or "ParamArray" that + modify this parameter. + + + The name of the parameter, including any "?" or "()" modifiers. + + + If present, the "As type-name" clause describing the type of the parameter. If + no As clause is present, Nothing is returned. + + + If present, an initializer with the default value of the parameter. If no + default value is present, Nothing is returned. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + The identifier that names the item being declared. + + + The "?" token that indicates a nullable type. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + A list of array modifiers for the type. If no array modifiers were present, an + empty list is returned. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + The "(" token. + + + The comma tokens in the array type. There is one less comma than the rank. + + + The ")" token. + + + + + Represents a group of attributes within "<" and ">" brackets. + + + The "<" token. + + + A comma separated list of attribute declarations in this attribute list. + + + The ">" token. + + + + + Represents a single attribute declaration within an attribute list. + + + Optional attribute target. Assembly|Module : + + + The name of the attribute. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + + + Represents a single attribute declaration within an attribute list. + + + The "Assembly" or "Module" attribute modifier, is present. If no attribute + modifier is present, Nothing is returned. + + + The ":" token, if an attribute modifier is present. If no attribute modifier is + present, Nothing is returned. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + The list of attribute lists. + + + + + Represent an expression in a statement context. This may only be a invocation + or await expression in standard code but may be any expression in VB + Interactive code. + + + The expression. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + "?" token. + + + The expression whose value is being output. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + The While statement that begins the block. + + + The statements contained in the While...End While. This might be an empty list. + + + The End While statement that ends the block. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + The UsingStatement that begins the Using...End Using block. + + + The statements contained in the Using...End Using block. This might be an empty + list. + + + The End Using statement that ends the block. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + The SyncLock statement that begins the block. + + + The statements contained in the SyncLock...End SyncLock statement. This might + be an empty list. + + + The End SyncLock statement that ends the block. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + The WithStatement that begins the With...End With block. + + + The statements contained in the With...End With block. This might be an empty + list. + + + The End With statement that ends the block. + + + + + Represents the declaration of one or more local variables or constants. + + + The modifier token (Static, Dim or Const) that introduces this local variable + declaration. + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents a label statement. + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + The ":" token of the label statement. + + + + + Represents a "GoTo" statement. + + + The "GoTo" keyword. + + + The name of the label. If the label is a line number, wraps an IntegerLiteral + that is the line number, otherwise, wraps an Identifier. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + A representing the specific kind of LabelSyntax. One of + IdentifierLabel, NumericLabel, NextLabel. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + The "Stop" or "End" keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + The "Stop" or "End" keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + A representing the specific kind of + StopOrEndStatementSyntax. One of StopStatement, EndStatement. + + + The "Stop" or "End" keyword. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + A representing the specific kind of ExitStatementSyntax. + One of ExitDoStatement, ExitForStatement, ExitSubStatement, + ExitFunctionStatement, ExitOperatorStatement, ExitPropertyStatement, + ExitTryStatement, ExitSelectStatement, ExitWhileStatement. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + A representing the specific kind of + ContinueStatementSyntax. One of ContinueWhileStatement, ContinueDoStatement, + ContinueForStatement. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Return" statement. + + + The "Return" keyword. + + + The expression being returned, if present. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + The "If" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + A list of statements to be executed if the condition expression evaluates as + true. Multiple statements must be separated by colons. + + + An "Else" clause to be executed if the condition expression evaluates as false. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + The "Else" keyword. + + + A list of statements to be executed. Multiple statements must be separated by + colons. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + The "If" statement that begins the "If" block. + + + A list of statements to be executed if the condition expression evaluates as + true. + + + A list of "ElseIf" blocks to be evaluated, in order, if the condition + expression of the "If" statement evaluates as false. + + + An "Else" block to be executed if the condition expression of the "If" + statement and all "ElseIf" blocks evaluate as false. + + + Then "End If" statement. + + + + + Represents the "If ... Then" statement that begins a multi-line "If" block. + + + The "If" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + + + Represents an "ElseIf ... Then ..." block. + + + The "ElseIf ... Then" statement the begins the "ElseIf" block. + + + A list of statements to be executed if the condition expression of the "ElseIf" + statement evaluates as true. + + + + + Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. + + + The "ElseIf" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + + + Represents an "Else ..." block. + + + The "Else" statement that begins the "Else" block. + + + A list of statements to be executed. + + + + + Represents the "Else" statement that begins an "Else" block. + + + The "Else" keyword. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + The "Try" statement that begins the "Try" block. + + + A list of statements to be executed. + + + A list of "Catch" blocks which may be executed if an exception is thrown while + executing the statements in the "Try" block. + + + A "Finally" block to be executed before execution leaves the "Try" block. + + + The "End Try" statement. + + + + + Represents the "Try" statement that begins a "Try" block. + + + The "Try" keyword. + + + + + Represents a "Catch ..." block. + + + The "Catch" statement that begins the "Catch" block. + + + A list of statements to be executed if an exception is caught by the "Catch" + block. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + The "Catch" keyword. + + + An identifier declaring a new variable or naming an existing variable to store + the exception caught by the "Catch" statement. + + + A simple "As" clause specifying the type of exception to catch. + + + A "When" clause to filter exceptions before catching. + + + + + Represents the "When ..." clause of a "Catch" statement. + + + The "When" keyword. + + + The filter expression to be evaluated. + + + + + Represents a "Finally ..." block of a "Try" block. + + + The "Finally" statement that begins the "Finally" block. + + + A list of statements to be executed. + + + + + Represents the "Finally" statement that begins a "Finally" block. + + + The "Finally" keyword. + + + + + Represents the "Error" statement. + + + The "Error" keyword. + + + The expression that represents the error number. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + A representing the specific kind of + OnErrorGoToStatementSyntax. One of OnErrorGoToZeroStatement, + OnErrorGoToMinusOneStatement, OnErrorGoToLabelStatement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Resume Next statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "Resume" keyword. + + + The "Next" + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + The Select Case statement that begins the block. + + + A list of the contained Case blocks. + + + The End Select statement that ends the block. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + The "Select" keyword. + + + The "Case" keyword, if present. + + + The value that branching is based on. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + The "Else" part in a Case Else statement. + + + The "Else" keyword. + + + + + Represents a single value in a Case. + + + The expression that denotes the value being tested against. + + + + + Represents a range "expression To expression" in a Case. + + + The lower bound of the range. + + + The "To" keyword + + + The upper bound of the range. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + A representing the specific kind of + RelationalCaseClauseSyntax. One of CaseEqualsClause, CaseNotEqualsClause, + CaseLessThanClause, CaseLessThanOrEqualClause, CaseGreaterThanOrEqualClause, + CaseGreaterThanClause. + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + The "SyncLock" keyword. + + + The expression being synchronized on. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + A representing the specific kind of DoLoopBlockSyntax. + One of SimpleDoLoopBlock, DoWhileLoopBlock, DoUntilLoopBlock, DoLoopWhileBlock, + DoLoopUntilBlock. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + A representing the specific kind of DoStatementSyntax. + One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + A representing the specific kind of LoopStatementSyntax. + One of SimpleLoopStatement, LoopWhileStatement, LoopUntilStatement. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + A representing the specific kind of + WhileOrUntilClauseSyntax. One of WhileClause, UntilClause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + The While statement that begins a While...End While block. This statement + always occurs as the Begin of a WhileBlock. + + + The "While" keyword. + + + The boolean expression that controls the While loop. + + + + + Represents a For block, including the introducing statement, the body and the + "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For statement that begins the block. + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + + + Represents a For Each block, including the introducing statement, the body and + the "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For Each statement that begins the block. + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + The "For" keyword. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The "=" token. + + + The expression denoting the initial value of the iteration. + + + The "To" keyword. + + + The expression denoting the final value of the iteration. + + + The optional Step clause. + + + + + The Step clause in a For Statement. + + + The "Step" keyword. + + + The expression denoting the step increment. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + The "For" keyword. + + + The "Each" keyword. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The "In" keyword. + + + The expression denoting the collection to iterate over. + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + The "Next" keyword. + + + The variables in the Next statement, if present + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + The "Using" keyword. + + + If the Using statement is of a form that does not declare a new variable, this + is the expression used in the using. Otherwise, Nothing is returned. + + + If the Using statement is of a form that declares one or more new variables, + this is the list of variable declarations. Otherwise, Nothing is returned. + + + + + Represents a Throw statement. + + + The "Throw" keyword + + + The expression denoting the value being thrown. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + A representing the specific kind of + AssignmentStatementSyntax. One of SimpleAssignmentStatement, + MidAssignmentStatement, AddAssignmentStatement, SubtractAssignmentStatement, + MultiplyAssignmentStatement, DivideAssignmentStatement, + IntegerDivideAssignmentStatement, ExponentiateAssignmentStatement, + LeftShiftAssignmentStatement, RightShiftAssignmentStatement, + ConcatenateAssignmentStatement. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a left-hand side of a MidAssignment statement. + + + The "Mid" possibly followed by a type character. + + + The argument list. + + + + + Represent a call statement (also known as a invocation statement). + + + The "Call" keyword. + + + The expression denoting the call. This could be an Invocation or a MemberAccess + (in the case where no parentheses were supplied.) + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + A representing the specific kind of + AddRemoveHandlerStatementSyntax. One of AddHandlerStatement, + RemoveHandlerStatement. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represent a RaiseEvent statement. + + + The "RaiseEvent" keyword + + + The name of the event being raised. + + + The argument list, if present. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + The "With" keyword. + + + The expression that is the operand of the With statement. + + + + + Represents a ReDim statement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement clause. + + + The target of the ReDim statement. + + + The ArraySizeInitializationModifier. + + + + + Represents an "Erase" statement. + + + The "Erase" keyword. + + + A list of expressions denoting the arrays to erase. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + A representing the specific kind of + LiteralExpressionSyntax. One of CharacterLiteralExpression, + TrueLiteralExpression, FalseLiteralExpression, NumericLiteralExpression, + DateLiteralExpression, StringLiteralExpression, NothingLiteralExpression. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a parenthesized expression. + + + The "(" token + + + The expression inside the parentheses. + + + The ")" token + + + + + Represents a tuple literal expression. + + + The "(" token + + + The list of tuple arguments. + + + The ")" token + + + + + Represents a tuple type expression. + + + The "(" token + + + The list of tuple elements. + + + The ")" token + + + + + Represents a single declaration of a tuple element supplying only the type. + + + The type-name part of the tuple element syntax. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + The name of the element. + + + A simple "As" clause specifying the type of the tuple element. + + + + + Identifies the special instance "Me" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "MyBase" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "MyClass" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Represents a GetType expression. + + + The "GetType" keyword. + + + The "(" token. + + + The type to get the Type object for. This can be an open generic type. + + + The ")" token. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + A representing the specific kind of + TypeOfExpressionSyntax. One of TypeOfIsExpression, TypeOfIsNotExpression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a GetXmlNamespace expression. + + + The "GetXmlNamespace" keyword. + + + The "(" token. + + + The Xml namespace name being referenced. + + + The ")" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + A representing the specific kind of + MemberAccessExpressionSyntax. One of SimpleMemberAccessExpression, + DictionaryAccessExpression. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + A representing the specific kind of + XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, + XmlDescendantAccessExpression, XmlAttributeAccessExpression. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + The target of the call or index expression. + + + The argument list. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type of the object being initialized. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + An optional From or With clause to initialize the new object. + + + + + Represents a New expression that create an object of anonymous type. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The With clause to initialize the new object. + + + + + Represents an expression that creates a new array. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The element type of the array being created. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + A list of array modifiers such as "()" or "(,)". If no array modifiers were + present, an empty list is returned. + + + The initializer including the braces. + + + + + Represents an expression that creates a new array without naming the element + type. + + + The "{" token. + + + The list of initializers between the braces. + + + The "}" token. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + The keyword that was used in the cast operation. + + + The "(" token. + + + The expression being cast. + + + The ")" token. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + A representing the specific kind of + BinaryExpressionSyntax. One of AddExpression, SubtractExpression, + MultiplyExpression, DivideExpression, IntegerDivideExpression, + ExponentiateExpression, LeftShiftExpression, RightShiftExpression, + ConcatenateExpression, ModuloExpression, EqualsExpression, NotEqualsExpression, + LessThanExpression, LessThanOrEqualExpression, GreaterThanOrEqualExpression, + GreaterThanExpression, IsExpression, IsNotExpression, LikeExpression, + OrExpression, ExclusiveOrExpression, AndExpression, OrElseExpression, + AndAlsoExpression. + + + The left operand. + + + The right operand. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + A representing the specific kind of + UnaryExpressionSyntax. One of UnaryPlusExpression, UnaryMinusExpression, + NotExpression, AddressOfExpression. + + + The token that is the operator. + + + The expression being operated on. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The "If" keyword + + + The "(" token + + + The first expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The ")" token + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The "If" keyword + + + The "(" token + + + The first expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The ")" token + + + + + Represents a single line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a single line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a single line lambda expression. + + + A representing the specific kind of + SingleLineLambdaExpressionSyntax. One of SingleLineFunctionLambdaExpression, + SingleLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + A representing the specific kind of + MultiLineLambdaExpressionSyntax. One of MultiLineFunctionLambdaExpression, + MultiLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A representing the specific kind of LambdaHeaderSyntax. + One of SubLambdaHeader, FunctionLambdaHeader. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents a parenthesized argument list. + + + The "(" token. + + + The list of arguments. This may be empty. Omitted argument are represented by + an OmittedArgumentSyntax node. + + + The ")" token. + + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + An empty token because all non terminals must have a token. + + + + + Represents an argument that is just an optional argument name and an + expression. + + + The optional name and ":=" prefix of a named argument. + + + The expression that is the argument. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + The name used to identify the named argument. + + + The ":=" token. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + The lower bound of the range. This is typically the integer constant zero. + + + The "To" keyword. + + + The upper bound of the range. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + A list of all the query operators in this query expression. This list always + contains at least one operator. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + The name of the range variable being defined. + + + Describes the type of the variable being defined. + + + The "In" keyword. + + + The expression that serves as the source of items for the range variable. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the expression. + + + The expression used to initialize the expression variable. + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the aggregation + expression. + + + The name of the aggregation function. The "Group" aggregation function is + represented by the identifier "Group". + + + + + Represents the name and optional type of an expression range variable. + + + The name of the variable being defined. + + + Describes the type of the variable being defined. + + + The "=" token. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + The name of the aggregation function. + + + The "(" token if present. + + + The argument to the aggregation function. + + + The ")" token, if present. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + The "Group" keyword. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + The "From" keyword. + + + The list of collection variables declared by this From operator. + + + + + Represents a "Let" query operator. + + + The "Let" keyword. + + + The list of expression range variable being defined by the Let operator. + + + + + Represents an Aggregate query operator. + + + The "Aggregate" keyword. + + + The list of collection range variables declared by this Aggregate operator. + + + A list of additional query operators. It may be empty. + + + The "Into" keyword. + + + The list of new variables being defined by the aggregation. + + + + + Represents the "Distinct" query operator. + + + The "Distinct" keyword. + + + + + Represents a "Where" query operator. + + + The "Where" keyword. + + + The boolean expression used for filtering. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + A representing the specific kind of + PartitionWhileClauseSyntax. One of SkipWhileClause, TakeWhileClause. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + A representing the specific kind of + PartitionClauseSyntax. One of SkipClause, TakeClause. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents the "Group By" query operator. + + + The "Group" keyword. + + + The optional list of variables being grouped; the contents of the Group clause. + If none were specified, an empty list is returned. + + + The "By" keyword. + + + The key values being used for grouping. + + + The list of new variables that calculate aggregations. + + + + + Represents the "expression Equals expression" condition in a Join. + + + The left expression in the Join condition. + + + The "Equals" keyword. + + + The right expression in the Join condition. + + + + + Represents a Join query operator. + + + The "Join" keyword. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The "On" keyword. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Represents the "Group Join" query operator. + + + The "Group" keyword. + + + The "Join" keyword. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The "On" keyword. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + The "Into" keyword. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Order By" query operator. + + + The "Order" keyword + + + The "By" keyword. + + + The list of OrderExpression's to sort by. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + A representing the specific kind of OrderingSyntax. One + of AscendingOrdering, DescendingOrdering. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + Represents the "Select" query operator. + + + The "Select" keyword. + + + The list of expression range variables being defined by the Select query + operator. + + + + + Represents an XML Document literal expression. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + + + Represents an XML element with content in an XML literal expression. + + + + + Represents Xml text. + + + A list of all the text tokens in the Xml text. This list always contains at + least one token. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + Represents an empty XML element of the form <element /> + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + + + Represents an XML CDATA section in an XML literal expression. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + The type of the elements of the array. + + + Represents the list of "()" or "(,,)" modifiers on the array type. + + + + + A type name that represents a nullable type, such as "Integer?". + + + The kind of type that is this type is a nullable of. Cannot be an array type or + a nullable type. + + + The "?" token. + + + + + Represents an occurrence of a Visual Basic built-in type such as Integer or + String in source code. + + + The keyword that was used to describe the built-in type. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + The identifier in the name. + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + The identifier in the name. + + + The generic argument list. + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + The part of the name that appears to the left of the dot. This can itself be + any name. + + + The "." token that separates the names. + + + The part of the name that appears to the right of the dot. This must be a + simple identifier. + + + + + Represents a name in the global namespace. + + + The "Global" keyword. + + + + + Represents a parenthesized list of generic type arguments. + + + The "(" token. + + + The "Of" keyword. + + + A list of all the type arguments. + + + The ")" token. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + Represent a Yield statement. + + + The "Yield" keyword. + + + The expression whose value is being yielded. + + + + + Represents an Await expression. + + + The "Await" keyword. + + + The expression being awaited. + + + + + Represents an Xml NCName per Namespaces in XML 1.0 + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + A representing the specific kind of XmlTextTokenSyntax. + One of XmlTextLiteralToken, XmlEntityLiteralToken, + DocumentationCommentLineBreakToken. + + + The actual text of this token. + + + + + Represents literal character data in interpolated string expression. + + + The actual text of this token. + + + + + Represents a Decimal literal token. + + + The actual text of this token. + + + + + Represents a Date literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + The list of tokens that were skipped by the parser. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in + source. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + The expression on the left-hand-side of the "?". + + + "?" token. + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + Represents a NameOf expression. + + + The "NameOf" keyword. + + + The "(" token. + + + The argument. + + + The ")" token. + + + + + Represents an interpolated string expression. + + + The opening '$"', '$“', or '$”' token. + + + The contents of the interpolated string. + + + The closing '"', '”', or '“' token. + + + + + Represents literal text content in an interpolated string. + + + The text token. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + The opening curly brace '{' token. + + + The expression whose formatted value should be embedded in the resultant + string. + + + Optional. The alignment clause ',alignment' of the embedded expression. + + + Optional. The format string clause ':formatString' of the embedded expression. + + + The closing curly brace '}' token of the embedded expression. + + + + + Represents an alignment clause ',alignment' of an interpolated string embedded + expression. + + + The comma ',' token. + + + An expression representing the alignment of the interpolated expression. + + + + + Represents a format string clause ':formatString' of an interpolated string + embedded expression. + + + The ':' token. + + + The format string. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + A representing the specific kind of SyntaxTrivia. One of + WhitespaceTrivia, EndOfLineTrivia, ColonTrivia, CommentTrivia, + ConflictMarkerTrivia, LineContinuationTrivia, + DocumentationCommentExteriorTrivia, DisabledTextTrivia. + + + The actual text of this token. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + The "#" token in a preprocessor directive. + + + The "Const" keyword. + + + The name of the pre-processing constant being defined. + + + The "=" token. + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #Else pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #End If pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of a #Region directive appearing in source. + + + The "#" token in a preprocessor directive. + + + The "Region" keyword. + + + The label of the code region being defined. + + + + + Represents an #End Region directive appearing in source. + + + The "#" token in a preprocessor directive. + + + The "End" keyword. + + + The "Region" keyword. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #r directive appearing in scripts. + + + The "#" token in a preprocessor directive. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + The "#" token in a preprocessor directive. + + + + + Returns the statement if there is exactly one in the body, + otherwise returns Nothing. + + + + + Return an empty body if the body is a single, zero-width EmptyStatement, + otherwise returns the entire body. + + + + + Parse GetType, + GetTypeExpression -> GetType OpenParenthesis GetTypeTypeName CloseParenthesis + + + + + + + Parse NameOf, + NameOfExpression -> NameOf OpenParenthesis Name CloseParenthesis + + + + + + + Parse TypeOf ... Is ... or TypeOf ... IsNot ... + TypeOfExpression -> "TypeOf" Expression "Is|IsNot" LineTerminator? TypeName + + + + + + + Transition from scanning XML to scanning VB. As a result, + any single line trivia is consumed and appended to the token + which is assumed to be the token at the transition point. + + + + After VB15.5 it is possible to use named arguments in non-trailing position, except in attribute lists (where it remains disallowed) + + + + ParseCast parses CType, DirectCast, TryCast. + CCCastExpression -> DirectCast ( CCExpression , TypeName ) + | TryCast ( CCExpression , TypeName ) + | CType ( CCExpression , TypeName ) + { | CastTarget ( CCExpression ) } + + Cast + Dev10 ParseCType does not parse exact grammar in the spec, since dev10 accepts Expression whereas the grammar uses CCExpression. + This function only does not parse CastTarget ( ... ), it is parsed in ParseTerm + + + + + gets the last token that has nonzero FullWidth. + NOTE: this helper will not descend into structured trivia. + + + + + gets the last token regardless if it has zero FullWidth or not + NOTE: this helper will not descend into structured trivia. + + + + + Adjust the trivia on a node so that missing tokens are always before newline and colon trivia. + Because new lines and colons are eagerly attached as trivia, missing tokens can end up incorrectly after the new line. + This method moves the trailing non-whitespace trivia from the last token to the last zero with token. + + + + + Slow part of AdjustTriviaForMissingTokensCore where we actually do the work when we need to. + + + + + Parses a CollectionInitializer + CollectionInitializer -> "{" CollectionInitializerList "}" + CollectionInitializerList -> CollectionElement {"," CollectionElement}* + CollectionElement -> Expression | CollectionInitializer + + CollectionInitializerSyntax + In the grammar ArrayLiteralExpression is a rename of CollectionInitializer + + + + Parses + "With "{" FieldInitializerList "}" + FieldInitializerList -> FieldInitializer {"," FieldInitializer}* + FieldInitializer -> {Key? "." IdentifierOrKeyword "="}? Expression + + e.g. + Dim x as new Customer With {.Id = 1, .Name = "A"} + + ObjectMemberInitializer + + + + Parses an ObjectCollectionInitializer + ObjectCollectionInitializer -> "from" CollectionInitializer + + + ObjectCollectionInitializer + In Dev10 this was called ParseInitializerList. It also took several boolean parameters. + These were always set as + AllowExpressionInitializers = true + AllowAssignmentInitializers = false + AnonymousTypeInitializer = false + RequireAtleastOneInitializer = false + + While the grammar uses the nonterminal CollectionInitializer is modeled as an + AnonymousArrayCreationExpression which has the identical syntax "{" Expression {"," Expression }* "}" + + + + + + Parses a FieldInitializer + + FieldInitializer -> ("key"? "." IdentifierOrKeyword "=")? Expression + + If true then allow the keyword "key" to prefix the field initializer + + + + + Parse and return a TypeName. Assumes the CurrentToken is on the name. + + Controls generic argument parsing + Controls generic argument parsing + TypeName + + + + Parameter -> Attributes? ParameterModifiers* ParameterIdentifier ("as" TypeName)? ("=" ConstantExpression)? + + + + + >This replaces both ParseParameter and ParseOptionalParameter in Dev10 + + + + Parse a CustomEventMemberDeclaration + + + + + This code used to be in ParseEventDefinition. + + + + Peeks in a stream of VB tokens. + Note that the first token will be picked according to _allowLeadingMultilineTrivia + The rest will be picked as regular VB as scanner does not always know what to do with + line terminators and we assume that multiple token lookahead makes sense inside a single statement. + + + + + Consumes current token and gets the next one with desired state. + + + + + Consumes current node and gets next one. + + + + + Check to see if the given is available with the + of the parser. If it is not available a diagnostic will be added to the returned value. + + + + + Returns false and reports an error if the feature is un-available + + + + + Create a bad statement. Report an error only if the statement doesn't have one already + + + + + If set to true a new missing identifier will be created and added to the incomplete member. + If set to true the error will be attached to the first skipped token of the incomplete member. + + + + + + Resyncs to next statement terminator. Used in Preprocessor + + + + + If the current token is a newline statement terminator, then consume the token. + + True if the statement terminator was consumed + + + + Parses StringLiteral + + LiteralNode + If the current Token is not StringLiteral then returns LiteralNode with missing token. + + + + Check that the current token is the expected kind, the current node is consumed and optionally a new line + after the token. + + The expected node kind. + A token of the expected kind. This node may be an empty token with an error attached to it + Since nodes are immutable, the only way to create nodes with errors attached is to create a node without an error, + then add an error with this method to create another node. + + + + Checks if the resulting Cref or Name attribute value has valid trivia + Note, this may be applicable not only to regular trivia, but also to syntax + nodes added to trivia when the parser was recovering from errors + + + + + Checks if the given is a colon trivia whose string representation is the COLON (U+003A) character from ASCII range + (specifically excluding cases when it is the FULLWIDTH COLON (U+FF1A) character). + See also: http://fileformat.info/info/unicode/char/FF1A + + A VB syntax node to check. + + + + Base class of a compile time constant. + + + + + Represents a compile time constant. + + + + + Candidate nodes that may be reused. + + + + + The text changes combined into a single region. + + + + + The range from which we cannot reuse nodes. + + + + + Current node. Not necessarily reusable or even a NonTerminal. + Can be null if we are out of nodes. + + + + + preprocessor state before _currentNode + + + + + preprocessor state getter after _currentNode + + + + + Expand the span in the tree to encompass the + nearest statements that the span overlaps. + + + + + Not guaranteed to return the span of a StatementSyntax. + + + + + Expand the span in the tree by the maximum number + of tokens required for look ahead and the maximum + number of characters for look behind. + + + + + Moving to the next node on the stack. + returns false if we are out of nodes. + + + + + Crumbles current node onto the stack and pops one node into current. + Returns false if current node cannot be crumbled. + + + + + Certain syntax node kinds should not be crumbled since + re-using individual child nodes may complicate parsing. + + + + + Advances to given position if needed (note: no way back) + Gets a nonterminal that can be used for incremental. + May return Nothing if such node is not available. + Typically it is _currentNode. + + + + + Returns current candidate for reuse if there is one. + + + + + Checks if node is reusable. + The reasons for it not be usable are typically that it intersects affected range. + + + + + Creates red tokens for a stream of text + + + + + Entry point to directive processing for Scanner. + + + + + Gets an initial preprocessor state and applies all directives from a given node. + Entry point for blender + + + + + The possible states that the mini scanning can be in. + + + + + DO NOT USE DIRECTLY. + USE GetScratch() + + + + + Gets a chunk of text as a DisabledCode node. + + The range of text. + The DisabledCode node. + + + + Accept a CR/LF pair or either in isolation as a newline. + Make it a statement separator + + + + + Accept a CR/LF pair or either in isolation as a newline. + Make it a whitespace + + + + + Consumes all trivia until a nontrivia char is found + + + + + Scans a single piece of trivia + + + + + Scan trivia on one LOGICAL line + Will check for whitespace, comment, EoL, implicit line break + EoL may be consumed as whitespace only as a part of line continuation ( _ ) + + + + + Return True if the builder is a (possibly empty) list of + WhitespaceTrivia followed by an EndOfLineTrivia. + + + + + Return True if the character is a colon, and not part of ":=". + + + + + Not intended for use in Expression Compiler scenarios. + + + + + Try to convert an Identifier to a Keyword. Called by the parser when it wants to force + an identifier to be a keyword. + + + + + page represents a cached array of chars. + + + + + where page maps in the stream. Used to validate pages + + + + + page's buffer + + + + + current page we are reading. + + + + + gets a page for the position. + will initialize it if we have cache miss + + + + + 0 - not a surrogate, 2 - is valid surrogate + 1 is an error + + + + + Crumbles currently available node (if available) into its components. + The leftmost child becomes the current node. + If operation is not possible (node has no children, there is no node), then returns false. + + + + + Gets current reusable syntax node. + If node is returned its start will be aligned with the start of current token. + NOTE: Line offset may not match start of current token because of lookahead. + + + + + Indicates that previously returned node has been consumed + and scanner needs to advance by the size of the node. + + NOTE: the advancement is done relative to the start of the current token. + Line offset may not match start of current token because of lookahead. + + This operation will discard lookahead tokens and reset preprocessor state + to the state of current token. + + + + + Indicates that previously returned node has been consumed + and scanner needs to advance by the size of the node. + + NOTE: the advancement is done relative to the _lineBufferOffset. + Line offset will likely not match start of current token because this operation + is done while constructing the content of current token. + + NOTE: This operation assumes that there is no tokens read ahead. + + NOTE: This operation does not change preprocessor state. + The assumption is that it is responsibility of the node consumer to update preprocessor + state if needed when using nodes that change preprocessor state. + + + + + note that state is applied only to the token #1 + + + + See description in TryScanXmlDocComment(...) + + + + This method is only to be used for parsing Cref and Name attributes as stand-alone entities + + + + + Returns False if trivia ends line. + + + + + Scan VB tokens + + + + + Scan VB tokens but consume multiline trivia before token. Done at the start of a new statement except after line if. + + + + + Scan tokens in Xml misc state, these are tokens between document declaration and the root element + + + + + Scan tokens inside of <!DOCTYPE ... > + + + + + Scan tokens inside of < ... > + + + + + Scan tokens inside of </ ...> + + + + + Scan a single quoted string + + + + + Scan a single quoted string RIGHT_SINGLE_QUOTATION_MARK + + + + + Scan a quoted string + + + + + Scan a quoted string RIGHT_DOUBLE_QUOTATION_MARK + + + + + Scan a string that is missing quotes (error recovery) + + + + + Scan text between markup + + + + + Scan text inside of <![CDATA[ ... ]]> + + + + + Scan first text inside f <? ... ?>, the first text can have leading trivia + + + + + Scan remaining text inside of <? ... ?> + + + + + Scan text inside of <!-- ... --> + + + + + Scan punctuation in an interpolated string. + + + + + Scan interpolated string text content. + + + + + Scan interpolated string format string text content (no newlines). + + + + + Contextual Nodekind + + + + + If true, the identifier was enclosed in brackets, such as "[End]". + + + + + The text of the identifier, not including the brackets or type character. + + + + + The type character suffix, if present. Returns TypeCharacter.None if no type + character was present. The only allowed values are None, Integer, Long, + Decimal, Single, Double, and String. + + + + + Represents an identifier token. This might include brackets around the name, + and a type character. + + + + + Contextual Nodekind + + + + + If true, the identifier was enclosed in brackets, such as "[End]". + + + + + The text of the identifier, not including the brackets or type character. + + + + + The type character suffix, if present. Returns TypeCharacter.None if no type + character was present. The only allowed values are None, Integer, Long, + Decimal, Single, Double, and String. + + + + + Contextual Nodekind + + + + + If true, the identifier was enclosed in brackets, such as "[End]". + + + + + The text of the identifier, not including the brackets or type character. + + + + + The type character suffix, if present. Returns TypeCharacter.None if no type + character was present. The only allowed values are None, Integer, Long, + Decimal, Single, Double, and String. + + + + + The value of the token. + + + + + Represents an integer literal token. + + + + + Whether the token was specified in base 10, 16, 8, or 2. + + + + + The type suffix or type character that was on the literal, if any. If no suffix + was present, TypeCharacter.None is returned. + + + + + Represents a floating literal token. + + + + + The value of the token. + + + + + Represents a floating literal token. + + + + + The type suffix or type character that was on the literal, if any. If no suffix + was present, TypeCharacter.None is returned. + + + + + Return the length of the common ending between the two + sets of trivia. The valid trivia (following skipped tokens) + of one must be contained in the valid trivia of the other. + + + + + Return the index within the trivia of what would be considered trailing + single-line trivia by the Scanner. This behavior must match ScanSingleLineTrivia. + In short, search walks backwards and stops at the second terminator + (colon or EOL) from the end, ignoring EOLs preceded by line continuations. + + + + + Add all the tokens in this node and children to the build token list builder. While doing this, add any + diagnostics not on tokens to the given diagnostic info list. + + + + + Represents one of the type characters or literal suffixes of VB. Used to + describe a) the type character suffixes that can be placed on identifiers, and + b) the suffixes that can be placed on integer literals. + + + + + The "%" type character." + + + + + The "&" type character." + + + + + The "@" type character." + + + + + The "!" type character." + + + + + The "#" type character." + + + + + The "$" type character." + + + + + The "S" literal suffix denoting "Short" + + + + + The "US" literal suffix denoting "UShort" + + + + + The "I" literal suffix denoting "Integer" + + + + + The "UI" literal suffix denoting "UInteger" + + + + + The "L" literal suffix denoting "Long" + + + + + The "UL" literal suffix denoting "ULong" + + + + + The "F" literal suffix denoting "Single" + + + + + The "R" literal suffix denoting "Double" + + + + + The "D" literal suffix denoting "Decimal" + + + + + The four possible number bases that a literal can be written in. + + + + + The base class for all nodes that represent statements. This includes both + declaration statements, such as class declarations as well as executable + statements. + + + + + The base class for all nodes that represent executable statements. + + + + + The base class for all nodes that represent statements that declare options, + imports, members, etc. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + This node is associated with the following syntax kinds: + + + + + + + + An empty token because all non terminals must have a token. + + + + + Returns a copy of this with the Empty property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Empty property. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The "End" keyword + + + + + Returns a copy of this with the EndKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Returns a copy of this with the BlockKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the EndKeyword property. + + + The value for the BlockKeyword property. + + + + + Represents an entire source file of VB code. + + + This node is associated with the following syntax kinds: + + + + + + + + Represents the list of Option statements at the beginning of a source file. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Options property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents the list of Imports statements at the beginning of a source file. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Imports] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents the list of AttributeStatements at the beginning of a source file + that contain the Assembly and Module attributes. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Attributes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents the members of the default namespace for this source file: all the + top-level type and namespace declarations in the file. May also contain + Statements that are not valid + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents the end of the source file. This token may have trivia (whitespace, + comments, ...) attached to it. + + + + + Returns a copy of this with the EndOfFileToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Options property. + + + The value for the Imports property. + + + The value for the Attributes property. + + + The value for the Members property. + + + The value for the EndOfFileToken property. + + + + + Returns #r directives specified in the compilation. + + + + + Represents an Option statement, such as "Option Strict On". + + + This node is associated with the following syntax kinds: + + + + + + + + The "Option" keyword. + + + + + Returns a copy of this with the OptionKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + + + Returns a copy of this with the NameKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The keyword that identifiers the value being set for the option: On, Off, Text + or Binary. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ValueKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OptionKeyword property. + + + The value for the NameKeyword property. + + + The value for the ValueKeyword property. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Imports" keyword. + + + + + Returns a copy of this with the ImportsKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of one or more import clauses. Each clause is either an alias, namespace + or XML namespace import. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the ImportsClauses property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ImportsKeyword property. + + + The value for the ImportsClauses property. + + + + + The base class for the possible clauses of an Imports statement. + + + + + Represents the clause of an Imports statement that imports all members of a + type or namespace or aliases a type or namespace. + + + This node is associated with the following syntax kinds: + + + + + + + + An optional alias for the namespace or type being imported. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the [Alias] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The namespace or type being imported. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Alias property. + + + The value for the Name property. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + This node is associated with the following syntax kinds: + + + + + + + + The identifier being introduced. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "=" token. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + The value for the EqualsToken property. + + + + + Defines a XML namespace for XML expressions. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Identifies the XML namespace alias and URI. + + + + + Returns a copy of this with the XmlNamespace property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the GreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanToken property. + + + The value for the XmlNamespace property. + + + The value for the GreaterThanToken property. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The statement that begins the NamespaceBlock. + + + + + Returns a copy of this with the NamespaceStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The declarations contained in the namespace statement. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End Namespace statement that ends the block. + + + + + Returns a copy of this with the EndNamespaceStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NamespaceStatement property. + + + The value for the Members property. + + + The value for the EndNamespaceStatement property. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Namespace" keyword. + + + + + Returns a copy of this with the NamespaceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A (possibly dotted) name denoting the namespace being declared. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NamespaceKeyword property. + + + The value for the Name property. + + + + + Represents a declaration of a Class, Interface, Structure, Module, its contents + and the End statement that ends it. + + + + + A list of the Inherits declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Inherits] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the Implements declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Implements] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The declarations contained in the type or module. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The statement that begins the block declaration. + + + + + The statement that ends the block declaration. + + + + + Returns a copy of this with the property changed to the + specified value. Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the property changed to the + specified value. Returns this instance if the specified value is the same as the current value. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Module" statement that begins the block. + + + + + Returns a copy of this with the ModuleStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the Inherits declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Inherits] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the Implements declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Implements] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The declarations contained in the type or module. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Module" statement that ends the block. + + + + + Returns a copy of this with the EndModuleStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ModuleStatement property. + + + The value for the Inherits property. + + + The value for the Implements property. + + + The value for the Members property. + + + The value for the EndModuleStatement property. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Structure" statement that begins the block. + + + + + Returns a copy of this with the StructureStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the Inherits declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Inherits] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the Implements declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Implements] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The declarations contained in the type or module. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Structure" statement that ends the block. + + + + + Returns a copy of this with the EndStructureStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the StructureStatement property. + + + The value for the Inherits property. + + + The value for the Implements property. + + + The value for the Members property. + + + The value for the EndStructureStatement property. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Interface" statement that begins the block. + + + + + Returns a copy of this with the InterfaceStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the Inherits declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Inherits] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the Implements declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Implements] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The declarations contained in the type or module. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Interface" statement that ends the block. + + + + + Returns a copy of this with the EndInterfaceStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the InterfaceStatement property. + + + The value for the Inherits property. + + + The value for the Implements property. + + + The value for the Members property. + + + The value for the EndInterfaceStatement property. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Class" statement that begins the block. + + + + + Returns a copy of this with the ClassStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the Inherits declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Inherits] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the Implements declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Implements] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The declarations contained in the type or module. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Class" statement that ends the block. + + + + + Returns a copy of this with the EndClassStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ClassStatement property. + + + The value for the Inherits property. + + + The value for the Implements property. + + + The value for the Members property. + + + The value for the EndClassStatement property. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + This node is associated with the following syntax kinds: + + + + + + + + The statement that begins the type or module. + + + + + Returns a copy of this with the EnumStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The declarations contained in the enumeration. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End XXX statement that ends the block. + + + + + Returns a copy of this with the EndEnumStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the EnumStatement property. + + + The value for the Members property. + + + The value for the EndEnumStatement property. + + + + + Represents an Inherits or Implements statement in a Class, Structure or + Interface. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Inherits" keyword. + + + + + Returns a copy of this with the InheritsKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the types being inherited. + + + + + Returns a copy of this with the Types property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the InheritsKeyword property. + + + The value for the Types property. + + + + + Represents an Implements statement in a Class or Structure. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Implements" keyword. + + + + + Returns a copy of this with the ImplementsKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the types being implemented. + + + + + Returns a copy of this with the Types property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ImplementsKeyword property. + + + The value for the Types property. + + + + + Abstract class for the beginning statement of a Module, Class, Interface or + Structure declaration. This node always appears as the Begin of a TypeBlock + with Kind=ModuleDeclarationBlock, ClassDeclarationBlock, + InterfaceDeclarationBlock or StructureDeclarationBlock. + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the type being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns the keyword indicating the kind of declaration being made: "Class", "Structure", "Module", "Interface", etc. + + + + + Returns a copy of this with the property changed to the + specified value. Returns this instance if the specified value is the same as the current value. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Module" keyword. + + + + + Returns a copy of this with the ModuleKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the type being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the ModuleKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterList property. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Structure" keyword. + + + + + Returns a copy of this with the StructureKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the type being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the StructureKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterList property. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Interface" keyword. + + + + + Returns a copy of this with the InterfaceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the type being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the InterfaceKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterList property. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Class" keyword. + + + + + Returns a copy of this with the ClassKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the type being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the ClassKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterList property. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Enum" keyword. + + + + + Returns a copy of this with the EnumKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the enum being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Optional "As XXX" clause describing the underlying type of the enumeration. If + no As clause was specified, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the UnderlyingType property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the EnumKeyword property. + + + The value for the Identifier property. + + + The value for the UnderlyingType property. + + + + + Represents the type parameter list in a declaration. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "Of" keyword. + + + + + Returns a copy of this with the OfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + + + Returns a copy of this with the Parameters property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the OfKeyword property. + + + The value for the Parameters property. + + + The value for the CloseParenToken property. + + + + + Represents a type parameter on a generic type declaration. + + + This node is associated with the following syntax kinds: + + + + + + + + Represents the "In" or "Out" variance keyword on a type parameter, if present. + If no variance modifier was present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the VarianceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the type parameter + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterConstraintClause property changed + to the specified value. Returns this instance if the specified value is the + same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the VarianceKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterConstraintClause property. + + + + + An abstract node class that is the parent of classes that describe type + parameter constraint clauses. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + This node is associated with the following syntax kinds: + + + + + + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + + + Returns a copy of this with the AsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the supplied constraints. If no constraints were supplied, Nothing is + returned. + + + + + Returns a copy of this with the Constraint property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AsKeyword property. + + + The value for the Constraint property. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + This node is associated with the following syntax kinds: + + + + + + + + The "As" keyword. + + + + + Returns a copy of this with the AsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "{" token. + + + + + Returns a copy of this with the OpenBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + + + Returns a copy of this with the Constraints property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "}" token. + + + + + Returns a copy of this with the CloseBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AsKeyword property. + + + The value for the OpenBraceToken property. + + + The value for the Constraints property. + + + The value for the CloseBraceToken property. + + + + + An abstract node class that is the parent of classes that describe type + parameter constraints. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + Returns a copy of this with the ConstraintKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the ConstraintKeyword property. + + + + + Represents a type parameter constraint that is a type. + + + This node is associated with the following syntax kinds: + + + + + + + + The type describing the constraint. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Type property. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An optional value for the enum member. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Identifier property. + + + The value for the Initializer property. + + + + + Represents a block member declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. Examples + include methods, constructors, operators, property accessors and custom event + accessors. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The statement that begins the block declaration. + + + + + The statement that ends the block declaration. + + + + + Returns a copy of this with the property changed to the + specified value. Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the property changed to the + specified value. Returns this instance if the specified value is the same as the current value. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "Sub" or "Function" statement that begins the block. + + + + + Returns a copy of this with the SubOrFunctionStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Returns a copy of this with the EndSubOrFunctionStatement property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the SubOrFunctionStatement property. + + + The value for the Statements property. + + + The value for the EndSubOrFunctionStatement property. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Sub New" statement that begins the block. + + + + + Returns a copy of this with the SubNewStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Sub" statement that ends the block declaration. + + + + + Returns a copy of this with the EndSubStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the SubNewStatement property. + + + The value for the Statements property. + + + The value for the EndSubStatement property. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Operator" statement that begins the block. + + + + + Returns a copy of this with the OperatorStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Operator" statement that ends the block declaration. + + + + + Returns a copy of this with the EndOperatorStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OperatorStatement property. + + + The value for the Statements property. + + + The value for the EndOperatorStatement property. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + Returns a copy of this with the AccessorStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Returns a copy of this with the EndAccessorStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AccessorStatement property. + + + The value for the Statements property. + + + The value for the EndAccessorStatement property. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The property declaration that begins the block. + + + + + Returns a copy of this with the PropertyStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The accessor blocks contained in the property, between the Property and the End + Property statements. + + + + + Returns a copy of this with the Accessors property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End Property statement that ends the block. + + + + + Returns a copy of this with the EndPropertyStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the PropertyStatement property. + + + The value for the Accessors property. + + + The value for the EndPropertyStatement property. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The event declaration that begins the block. + + + + + Returns a copy of this with the EventStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The accessor blocks contained in the custom event declaration, between the + Event statement and the End Event statement. + + + + + Returns a copy of this with the Accessors property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End Event statement that ends the block. + + + + + Returns a copy of this with the EndEventStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the EventStatement property. + + + The value for the Accessors property. + + + The value for the EndEventStatement property. + + + + + An abstract node class that is the parent for declarations that are + "method-like"; i.e., that have a parameter list and return type. This includes + methods, constructors, properties, events, operators, declares, delegates, + property accessors and custom event accessors. + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns the keyword indicating the kind of declaration being made: "Sub", "Function", "Event", "Property", etc. Does not return either the "Declare" or "Delegate" keywords. + + + + + Returns a copy of this with the property changed to the + specified value. Returns this instance if the specified value is the same as the current value. + + + + + Represents the parameter list in a method declaration. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token that introduces the parameter list. If no parameter list was + present, Nothing is returned. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of parameters. If no parameter list was present, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Parameters property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token that concludes the parameter list. If no parameter list was + present, Nothing is returned. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the Parameters property. + + + The value for the CloseParenToken property. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + This node is associated with the following syntax kinds: + + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + + + Returns a copy of this with the SubOrFunctionKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the method being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a Handles clause indicated the events that this method handles. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the HandlesClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ImplementsClause property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the SubOrFunctionKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterList property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + The value for the HandlesClause property. + + + The value for the ImplementsClause property. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Sub" keyword. + + + + + Returns a copy of this with the SubKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "New" keyword in the constructor declaration. + + + + + Returns a copy of this with the NewKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the SubKeyword property. + + + The value for the NewKeyword property. + + + The value for the ParameterList property. + + + + + A Declare statement that declares an external DLL method. + + + This node is associated with the following syntax kinds: + + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Declare" keyword. + + + + + Returns a copy of this with the DeclareKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + If present, the keyword that defines the string translation semantics of the + external method. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the CharsetKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "Sub" or "Function" keyword. + + + + + Returns a copy of this with the SubOrFunctionKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the method being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Lib" keyword. + + + + + Returns a copy of this with the LibKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The string literal with the library name. + + + + + Returns a copy of this with the LibraryName property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AliasKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The string literal with the alias. If not present, returns Nothing. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AliasName property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the DeclareKeyword property. + + + The value for the CharsetKeyword property. + + + The value for the SubOrFunctionKeyword property. + + + The value for the Identifier property. + + + The value for the LibKeyword property. + + + The value for the LibraryName property. + + + The value for the AliasKeyword property. + + + The value for the AliasName property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + + + A statement that declares a delegate type. + + + This node is associated with the following syntax kinds: + + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Delegate" keyword. + + + + + Returns a copy of this with the DelegateKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "Sub" or "Function" keyword. + + + + + Returns a copy of this with the SubOrFunctionKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the delegate being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the DelegateKeyword property. + + + The value for the SubOrFunctionKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterList property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The optional Custom keyword for custom event declarations. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the CustomKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Event" keyword that introduces this event declaration. + + + + + Returns a copy of this with the EventKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the event being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, an Implements clause indicates the interface methods that this + method implements. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ImplementsClause property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the CustomKeyword property. + + + The value for the EventKeyword property. + + + The value for the Identifier property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + The value for the ImplementsClause property. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Operator" keyword that introduces this operator declaration. + + + + + Returns a copy of this with the OperatorKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The operator being defined. + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the OperatorKeyword property. + + + The value for the OperatorToken property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Property" keyword that introduces this property declaration. + + + + + Returns a copy of this with the PropertyKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the property being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, an "= initial-value" clause describing the initial value of the + property. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ImplementsClause property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the PropertyKeyword property. + + + The value for the Identifier property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + The value for the Initializer property. + + + The value for the ImplementsClause property. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + + + Returns a copy of this with the AccessorKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the AccessorKeyword property. + + + The value for the ParameterList property. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Implements" keyword. + + + + + Returns a copy of this with the ImplementsKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of interface members being implemented. + + + + + Returns a copy of this with the InterfaceMembers property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ImplementsKeyword property. + + + The value for the InterfaceMembers property. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Handles" keyword. + + + + + Returns a copy of this with the HandlesKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of event members being handled. + + + + + Returns a copy of this with the Events property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HandlesKeyword property. + + + The value for the Events property. + + + + + Represents container of an event in a Handles clause item. + + + + + Represents event container specified through special keywords "Me", "MyBase" or + "MyClass".. + + + This node is associated with the following syntax kinds: + + + + + + + + The container of the event. This can be one of the special keywords: "Me", + "MyBase" or "MyClass". + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + + + Represents event container that refers to a WithEvents member. + + + This node is associated with the following syntax kinds: + + + + + + + + The container of the event. It is a simple identifier that refers to a + WithEvents member of the containing type. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + + + Represents event container that refers to a WithEvents member's property. + + + This node is associated with the following syntax kinds: + + + + + + + + The container of the event. + + + + + Returns a copy of this with the WithEventsContainer property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "." token. + + + + + Returns a copy of this with the DotToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The provider of the event. It is a property of a WithEvents member of the + containing type. + + + + + Returns a copy of this with the [Property] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WithEventsContainer property. + + + The value for the DotToken property. + + + The value for the Property property. + + + + + Represents a single handled event in a "Handles ..." clause. + + + This node is associated with the following syntax kinds: + + + + + + + + The container of the event. This can either be a simple identifier (identifying + a members of the containing type) or one of the special keywords "Me", "MyBase" + or "MyClass". + + + + + Returns a copy of this with the EventContainer property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "." token. + + + + + Returns a copy of this with the DotToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The event being handled. This must be a simple identifier. + + + + + Returns a copy of this with the EventMember property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the EventContainer property. + + + The value for the DotToken property. + + + The value for the EventMember property. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The missing identifier token for this incomplete member. Should only be used to + have a location for error reporting. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the MissingIdentifier property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the MissingIdentifier property. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Returns a copy of this with the Declarators property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the Declarators property. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + This node is associated with the following syntax kinds: + + + + + + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + + + Returns a copy of this with the Names property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "As" clause that describes the return type, and possibly includes "New", + "With" or "From". If no As clause was present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, an "= initial-value" clause describing the initial value of the + variable or the value of the constant. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Names property. + + + The value for the AsClause property. + + + The value for the Initializer property. + + + + + Abstract node class that represents the different kinds of "As {type-name}" + clauses in a declaration: simple "As" clauses and "As New" clauses. The type + has optional attributes associated with it, although attributes are not + permitted in all possible places where this node occurs. + + + + + The "As" keyword. + + + + + Returns a copy of this with the AsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + This node is associated with the following syntax kinds: + + + + + + + + The "As" keyword. + + + + + Returns a copy of this with the AsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The type-name part of the As clause. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AsKeyword property. + + + The value for the AttributeLists property. + + + The value for the Type property. + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + This node is associated with the following syntax kinds: + + + + + + + + The "As" keyword. + + + + + Returns a copy of this with the AsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The New expression + + + + + Returns a copy of this with the NewExpression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AsKeyword property. + + + The value for the NewExpression property. + + + + + An abstract node class that represents a "With" or "From" clause used to + initialize a new object. + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + This node is associated with the following syntax kinds: + + + + + + + + The "With" keyword. + + + + + Returns a copy of this with the WithKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "{" token. + + + + + Returns a copy of this with the OpenBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The comma-separated list of field initializers. + + + + + Returns a copy of this with the Initializers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "}" token. + + + + + Returns a copy of this with the CloseBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WithKeyword property. + + + The value for the OpenBraceToken property. + + + The value for the Initializers property. + + + The value for the CloseBraceToken property. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + This node is associated with the following syntax kinds: + + + + + + + + The "From" keyword. + + + + + Returns a copy of this with the FromKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The initializer including the braces. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the FromKeyword property. + + + The value for the Initializer property. + + + + + Abstract class that represent a single field initializer used in a "With {...}" + field initializer list. + + + + + The optional "Key" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the KeyKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The optional "Key" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the KeyKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The value being assigned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the KeyKeyword property. + + + The value for the Expression property. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + This node is associated with the following syntax kinds: + + + + + + + + The optional "Key" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the KeyKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "." token. + + + + + Returns a copy of this with the DotToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the field being initialized. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "=" token. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The value being assigned to the field. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the KeyKeyword property. + + + The value for the DotToken property. + + + The value for the Name property. + + + The value for the EqualsToken property. + + + The value for the Expression property. + + + + + Represents an "= initializer" clause in a declaration for a variable, parameter + or automatic property. + + + This node is associated with the following syntax kinds: + + + + + + + + The "=" token. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression used as the initial value. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the EqualsToken property. + + + The value for the Value property. + + + + + Represent a parameter to a method, property, constructor, etc. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this parameter. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the modifier tokens "ByVal", "ByRef", "Optional" or "ParamArray" that + modify this parameter. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the parameter, including any "?" or "()" modifiers. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, the "As type-name" clause describing the type of the parameter. If + no As clause is present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, an initializer with the default value of the parameter. If no + default value is present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the [Default] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the Identifier property. + + + The value for the AsClause property. + + + The value for the Default property. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + This node is associated with the following syntax kinds: + + + + + + + + The identifier that names the item being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "?" token that indicates a nullable type. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Nullable property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ArrayBounds property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of array modifiers for the type. If no array modifiers were present, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the ArrayRankSpecifiers property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + The value for the Nullable property. + + + The value for the ArrayBounds property. + + + The value for the ArrayRankSpecifiers property. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The comma tokens in the array type. There is one less comma than the rank. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the CommaTokens property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the CommaTokens property. + + + The value for the CloseParenToken property. + + + + + Returns the ranks of this array rank specifier. + + + + + Represents a group of attributes within "<" and ">" brackets. + + + This node is associated with the following syntax kinds: + + + + + + + + The "<" token. + + + + + Returns a copy of this with the LessThanToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A comma separated list of attribute declarations in this attribute list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Attributes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ">" token. + + + + + Returns a copy of this with the GreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanToken property. + + + The value for the Attributes property. + + + The value for the GreaterThanToken property. + + + + + Represents a single attribute declaration within an attribute list. + + + This node is associated with the following syntax kinds: + + + + + + + + Optional attribute target. Assembly|Module : + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Target property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The name of the attribute. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ArgumentList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Target property. + + + The value for the Name property. + + + The value for the ArgumentList property. + + + + + Represents a single attribute declaration within an attribute list. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Assembly" or "Module" attribute modifier, is present. If no attribute + modifier is present, Nothing is returned. + + + + + Returns a copy of this with the AttributeModifier property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The ":" token, if an attribute modifier is present. If no attribute modifier is + present, Nothing is returned. + + + + + Returns a copy of this with the ColonToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeModifier property. + + + The value for the ColonToken property. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + This node is associated with the following syntax kinds: + + + + + + + + The list of attribute lists. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + + + Represent an expression in a statement context. This may only be a invocation + or await expression in standard code but may be any expression in VB + Interactive code. + + + This node is associated with the following syntax kinds: + + + + + + + + The expression. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Expression property. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + This node is associated with the following syntax kinds: + + + + + + + + "?" token. + + + + + Returns a copy of this with the QuestionToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression whose value is being output. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the QuestionToken property. + + + The value for the Expression property. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + This node is associated with the following syntax kinds: + + + + + + + + The While statement that begins the block. + + + + + Returns a copy of this with the WhileStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the While...End While. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End While statement that ends the block. + + + + + Returns a copy of this with the EndWhileStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WhileStatement property. + + + The value for the Statements property. + + + The value for the EndWhileStatement property. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + This node is associated with the following syntax kinds: + + + + + + + + The UsingStatement that begins the Using...End Using block. + + + + + Returns a copy of this with the UsingStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the Using...End Using block. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End Using statement that ends the block. + + + + + Returns a copy of this with the EndUsingStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the UsingStatement property. + + + The value for the Statements property. + + + The value for the EndUsingStatement property. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The SyncLock statement that begins the block. + + + + + Returns a copy of this with the SyncLockStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the SyncLock...End SyncLock statement. This might + be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End SyncLock statement that ends the block. + + + + + Returns a copy of this with the EndSyncLockStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the SyncLockStatement property. + + + The value for the Statements property. + + + The value for the EndSyncLockStatement property. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The WithStatement that begins the With...End With block. + + + + + Returns a copy of this with the WithStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The statements contained in the With...End With block. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End With statement that ends the block. + + + + + Returns a copy of this with the EndWithStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WithStatement property. + + + The value for the Statements property. + + + The value for the EndWithStatement property. + + + + + Represents the declaration of one or more local variables or constants. + + + This node is associated with the following syntax kinds: + + + + + + + + The modifier token (Static, Dim or Const) that introduces this local variable + declaration. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Returns a copy of this with the Declarators property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Modifiers property. + + + The value for the Declarators property. + + + + + Represents a label statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + + + Returns a copy of this with the LabelToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ":" token of the label statement. + + + + + Returns a copy of this with the ColonToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LabelToken property. + + + The value for the ColonToken property. + + + + + Represents a "GoTo" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "GoTo" keyword. + + + + + Returns a copy of this with the GoToKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the label. If the label is a line number, wraps an IntegerLiteral + that is the line number, otherwise, wraps an Identifier. + + + + + Returns a copy of this with the Label property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GoToKeyword property. + + + The value for the Label property. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + Returns a copy of this with the LabelToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the LabelToken property. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "Stop" or "End" keyword. + + + + + Returns a copy of this with the StopOrEndKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the StopOrEndKeyword property. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + + + + + The "Exit" keyword. + + + + + Returns a copy of this with the ExitKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The keyword describing the block to exit. + + + + + Returns a copy of this with the BlockKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the ExitKeyword property. + + + The value for the BlockKeyword property. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The "Continue" keyword. + + + + + Returns a copy of this with the ContinueKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Returns a copy of this with the BlockKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the ContinueKeyword property. + + + The value for the BlockKeyword property. + + + + + Represents a "Return" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Return" keyword. + + + + + Returns a copy of this with the ReturnKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression being returned, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ReturnKeyword property. + + + The value for the Expression property. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "If" keyword. + + + + + Returns a copy of this with the IfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The condition expression to be evaluated. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Then" keyword. + + + + + Returns a copy of this with the ThenKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of statements to be executed if the condition expression evaluates as + true. Multiple statements must be separated by colons. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An "Else" clause to be executed if the condition expression evaluates as false. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ElseClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the IfKeyword property. + + + The value for the Condition property. + + + The value for the ThenKeyword property. + + + The value for the Statements property. + + + The value for the ElseClause property. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Else" keyword. + + + + + Returns a copy of this with the ElseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of statements to be executed. Multiple statements must be separated by + colons. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElseKeyword property. + + + The value for the Statements property. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "If" statement that begins the "If" block. + + + + + Returns a copy of this with the IfStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of statements to be executed if the condition expression evaluates as + true. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of "ElseIf" blocks to be evaluated, in order, if the condition + expression of the "If" statement evaluates as false. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the ElseIfBlocks property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An "Else" block to be executed if the condition expression of the "If" + statement and all "ElseIf" blocks evaluate as false. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ElseBlock property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Then "End If" statement. + + + + + Returns a copy of this with the EndIfStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the IfStatement property. + + + The value for the Statements property. + + + The value for the ElseIfBlocks property. + + + The value for the ElseBlock property. + + + The value for the EndIfStatement property. + + + + + Represents the "If ... Then" statement that begins a multi-line "If" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "If" keyword. + + + + + Returns a copy of this with the IfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The condition expression to be evaluated. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Then" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ThenKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the IfKeyword property. + + + The value for the Condition property. + + + The value for the ThenKeyword property. + + + + + Represents an "ElseIf ... Then ..." block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "ElseIf ... Then" statement the begins the "ElseIf" block. + + + + + Returns a copy of this with the ElseIfStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of statements to be executed if the condition expression of the "ElseIf" + statement evaluates as true. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElseIfStatement property. + + + The value for the Statements property. + + + + + Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "ElseIf" keyword. + + + + + Returns a copy of this with the ElseIfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The condition expression to be evaluated. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Then" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ThenKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElseIfKeyword property. + + + The value for the Condition property. + + + The value for the ThenKeyword property. + + + + + Represents an "Else ..." block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Else" statement that begins the "Else" block. + + + + + Returns a copy of this with the ElseStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of statements to be executed. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElseStatement property. + + + The value for the Statements property. + + + + + Represents the "Else" statement that begins an "Else" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Else" keyword. + + + + + Returns a copy of this with the ElseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElseKeyword property. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Try" statement that begins the "Try" block. + + + + + Returns a copy of this with the TryStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of statements to be executed. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of "Catch" blocks which may be executed if an exception is thrown while + executing the statements in the "Try" block. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the CatchBlocks property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A "Finally" block to be executed before execution leaves the "Try" block. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the FinallyBlock property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Try" statement. + + + + + Returns a copy of this with the EndTryStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the TryStatement property. + + + The value for the Statements property. + + + The value for the CatchBlocks property. + + + The value for the FinallyBlock property. + + + The value for the EndTryStatement property. + + + + + Represents the "Try" statement that begins a "Try" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Try" keyword. + + + + + Returns a copy of this with the TryKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the TryKeyword property. + + + + + Represents a "Catch ..." block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Catch" statement that begins the "Catch" block. + + + + + Returns a copy of this with the CatchStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of statements to be executed if an exception is caught by the "Catch" + block. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the CatchStatement property. + + + The value for the Statements property. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Catch" keyword. + + + + + Returns a copy of this with the CatchKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An identifier declaring a new variable or naming an existing variable to store + the exception caught by the "Catch" statement. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the IdentifierName property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A simple "As" clause specifying the type of exception to catch. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A "When" clause to filter exceptions before catching. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the WhenClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the CatchKeyword property. + + + The value for the IdentifierName property. + + + The value for the AsClause property. + + + The value for the WhenClause property. + + + + + Represents the "When ..." clause of a "Catch" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "When" keyword. + + + + + Returns a copy of this with the WhenKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The filter expression to be evaluated. + + + + + Returns a copy of this with the Filter property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WhenKeyword property. + + + The value for the Filter property. + + + + + Represents a "Finally ..." block of a "Try" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Finally" statement that begins the "Finally" block. + + + + + Returns a copy of this with the FinallyStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of statements to be executed. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the FinallyStatement property. + + + The value for the Statements property. + + + + + Represents the "Finally" statement that begins a "Finally" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Finally" keyword. + + + + + Returns a copy of this with the FinallyKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the FinallyKeyword property. + + + + + Represents the "Error" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Error" keyword. + + + + + Returns a copy of this with the ErrorKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression that represents the error number. + + + + + Returns a copy of this with the ErrorNumber property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ErrorKeyword property. + + + The value for the ErrorNumber property. + + + + + Represents an OnError Goto statement. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The "On" keyword + + + + + Returns a copy of this with the OnKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Error" keyword. + + + + + Returns a copy of this with the ErrorKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "GoTo" keyword + + + + + Returns a copy of this with the GoToKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An optional minus for On Error Goto -1 + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Minus property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Returns a copy of this with the Label property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the OnKeyword property. + + + The value for the ErrorKeyword property. + + + The value for the GoToKeyword property. + + + The value for the Minus property. + + + The value for the Label property. + + + + + Represents an OnError Resume Next statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "On" keyword + + + + + Returns a copy of this with the OnKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Error" keyword. + + + + + Returns a copy of this with the ErrorKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Resume" keyword. + + + + + Returns a copy of this with the ResumeKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Next" + + + + + Returns a copy of this with the NextKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OnKeyword property. + + + The value for the ErrorKeyword property. + + + The value for the ResumeKeyword property. + + + The value for the NextKeyword property. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The "Resume" keyword. + + + + + Returns a copy of this with the ResumeKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Label property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the ResumeKeyword property. + + + The value for the Label property. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + This node is associated with the following syntax kinds: + + + + + + + + The Select Case statement that begins the block. + + + + + Returns a copy of this with the SelectStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the contained Case blocks. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the CaseBlocks property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End Select statement that ends the block. + + + + + Returns a copy of this with the EndSelectStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the SelectStatement property. + + + The value for the CaseBlocks property. + + + The value for the EndSelectStatement property. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Select" keyword. + + + + + Returns a copy of this with the SelectKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Case" keyword, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the CaseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The value that branching is based on. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the SelectKeyword property. + + + The value for the CaseKeyword property. + + + The value for the Expression property. + + + + + Represents a case statement and its subsequent block. + + + This node is associated with the following syntax kinds: + + + + + + + + + The statement that begins the case block. + + + + + Returns a copy of this with the CaseStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The statements contained in the case block. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the CaseStatement property. + + + The value for the Statements property. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "Case" keyword + + + + + Returns a copy of this with the CaseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Returns a copy of this with the Cases property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the CaseKeyword property. + + + The value for the Cases property. + + + + + Represents a single clause in a case statement. An abstract node that is the + parent of different kinds of Case clauses. + + + + + The "Else" part in a Case Else statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Else" keyword. + + + + + Returns a copy of this with the ElseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElseKeyword property. + + + + + Represents a single value in a Case. + + + This node is associated with the following syntax kinds: + + + + + + + + The expression that denotes the value being tested against. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Value property. + + + + + Represents a range "expression To expression" in a Case. + + + This node is associated with the following syntax kinds: + + + + + + + + The lower bound of the range. + + + + + Returns a copy of this with the LowerBound property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "To" keyword + + + + + Returns a copy of this with the ToKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The upper bound of the range. + + + + + Returns a copy of this with the UpperBound property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LowerBound property. + + + The value for the ToKeyword property. + + + The value for the UpperBound property. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + + The "Is" keyword, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the IsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression that denotes the value being tested against. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the IsKeyword property. + + + The value for the OperatorToken property. + + + The value for the Value property. + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + The "SyncLock" keyword. + + + + + Returns a copy of this with the SyncLockKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression being synchronized on. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the SyncLockKeyword property. + + + The value for the Expression property. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + The Do statement that begins the block. + + + + + Returns a copy of this with the DoStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The Loop statement that ends the block. + + + + + Returns a copy of this with the LoopStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the DoStatement property. + + + The value for the Statements property. + + + The value for the LoopStatement property. + + + + + The Do statement that begins a Do-Loop block. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The "Do" keyword. + + + + + Returns a copy of this with the DoKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the WhileOrUntilClause property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the DoKeyword property. + + + The value for the WhileOrUntilClause property. + + + + + The Loop statement that begins a Do-Loop block. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The "Loop" keyword. + + + + + Returns a copy of this with the LoopKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the WhileOrUntilClause property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the LoopKeyword property. + + + The value for the WhileOrUntilClause property. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "While" or "Until" keyword. + + + + + Returns a copy of this with the WhileOrUntilKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The boolean expression after the While or Until. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the WhileOrUntilKeyword property. + + + The value for the Condition property. + + + + + The While statement that begins a While...End While block. This statement + always occurs as the Begin of a WhileBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + The "While" keyword. + + + + + Returns a copy of this with the WhileKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The boolean expression that controls the While loop. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WhileKeyword property. + + + The value for the Condition property. + + + + + Represents a For or For Each block. + + + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the NextStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The For or For Each statement that begins the block. + + + + + Represents a For block, including the introducing statement, the body and the + "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + This node is associated with the following syntax kinds: + + + + + + + + The For statement that begins the block. + + + + + Returns a copy of this with the ForStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the NextStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ForStatement property. + + + The value for the Statements property. + + + The value for the NextStatement property. + + + + + Represents a For Each block, including the introducing statement, the body and + the "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + This node is associated with the following syntax kinds: + + + + + + + + The For Each statement that begins the block. + + + + + Returns a copy of this with the ForEachStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the NextStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ForEachStatement property. + + + The value for the Statements property. + + + The value for the NextStatement property. + + + + + Represents a For or For Each statement. + + + + + The "For" keyword. + + + + + Returns a copy of this with the ForKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + + + Returns a copy of this with the ControlVariable property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + This node is associated with the following syntax kinds: + + + + + + + + The "For" keyword. + + + + + Returns a copy of this with the ForKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + + + Returns a copy of this with the ControlVariable property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "=" token. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression denoting the initial value of the iteration. + + + + + Returns a copy of this with the FromValue property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "To" keyword. + + + + + Returns a copy of this with the ToKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression denoting the final value of the iteration. + + + + + Returns a copy of this with the ToValue property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The optional Step clause. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the StepClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ForKeyword property. + + + The value for the ControlVariable property. + + + The value for the EqualsToken property. + + + The value for the FromValue property. + + + The value for the ToKeyword property. + + + The value for the ToValue property. + + + The value for the StepClause property. + + + + + The Step clause in a For Statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Step" keyword. + + + + + Returns a copy of this with the StepKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression denoting the step increment. + + + + + Returns a copy of this with the StepValue property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the StepKeyword property. + + + The value for the StepValue property. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + This node is associated with the following syntax kinds: + + + + + + + + The "For" keyword. + + + + + Returns a copy of this with the ForKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Each" keyword. + + + + + Returns a copy of this with the EachKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + + + Returns a copy of this with the ControlVariable property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "In" keyword. + + + + + Returns a copy of this with the InKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression denoting the collection to iterate over. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ForKeyword property. + + + The value for the EachKeyword property. + + + The value for the ControlVariable property. + + + The value for the InKeyword property. + + + The value for the Expression property. + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Next" keyword. + + + + + Returns a copy of this with the NextKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The variables in the Next statement, if present + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the ControlVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NextKeyword property. + + + The value for the ControlVariables property. + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Using" keyword. + + + + + Returns a copy of this with the UsingKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If the Using statement is of a form that does not declare a new variable, this + is the expression used in the using. Otherwise, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If the Using statement is of a form that declares one or more new variables, + this is the list of variable declarations. Otherwise, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Variables property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the UsingKeyword property. + + + The value for the Expression property. + + + The value for the Variables property. + + + + + Represents a Throw statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Throw" keyword + + + + + Returns a copy of this with the ThrowKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression denoting the value being thrown. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ThrowKeyword property. + + + The value for the Expression property. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + + + + + + + The target (left hand side) of the assignment. + + + + + Returns a copy of this with the Left property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The source (right hand side) of the assignment. + + + + + Returns a copy of this with the Right property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the Left property. + + + The value for the OperatorToken property. + + + The value for the Right property. + + + + + Represents a left-hand side of a MidAssignment statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Mid" possibly followed by a type character. + + + + + Returns a copy of this with the Mid property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The argument list. + + + + + Returns a copy of this with the ArgumentList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Mid property. + + + The value for the ArgumentList property. + + + + + Represent a call statement (also known as a invocation statement). + + + This node is associated with the following syntax kinds: + + + + + + + + The "Call" keyword. + + + + + Returns a copy of this with the CallKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression denoting the call. This could be an Invocation or a MemberAccess + (in the case where no parentheses were supplied.) + + + + + Returns a copy of this with the Invocation property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the CallKeyword property. + + + The value for the Invocation property. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "AddHandler" or "RemoveHandler" keyword. + + + + + Returns a copy of this with the AddHandlerOrRemoveHandlerKeyword property + changed to the specified value. Returns this instance if the specified value is + the same as the current value. + + + + + The event being accessed. + + + + + Returns a copy of this with the EventExpression property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "," token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The delegate being added or removed. + + + + + Returns a copy of this with the DelegateExpression property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AddHandlerOrRemoveHandlerKeyword property. + + + The value for the EventExpression property. + + + The value for the CommaToken property. + + + The value for the DelegateExpression property. + + + + + Represent a RaiseEvent statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "RaiseEvent" keyword + + + + + Returns a copy of this with the RaiseEventKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the event being raised. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The argument list, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ArgumentList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the RaiseEventKeyword property. + + + The value for the Name property. + + + The value for the ArgumentList property. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + The "With" keyword. + + + + + Returns a copy of this with the WithKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression that is the operand of the With statement. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WithKeyword property. + + + The value for the Expression property. + + + + + Represents a ReDim statement. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "ReDim" keyword. + + + + + Returns a copy of this with the ReDimKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the PreserveKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of ReDim clauses. + + + + + Returns a copy of this with the Clauses property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the ReDimKeyword property. + + + The value for the PreserveKeyword property. + + + The value for the Clauses property. + + + + + Represents a ReDim statement clause. + + + This node is associated with the following syntax kinds: + + + + + + + + The target of the ReDim statement. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ArraySizeInitializationModifier. + + + + + Returns a copy of this with the ArrayBounds property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Expression property. + + + The value for the ArrayBounds property. + + + + + Represents an "Erase" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Erase" keyword. + + + + + Returns a copy of this with the EraseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of expressions denoting the arrays to erase. + + + + + Returns a copy of this with the Expressions property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the EraseKeyword property. + + + The value for the Expressions property. + + + + + An abstract base class for all node classes that define expressions. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Returns a copy of this with the Token property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the Token property. + + + + + Represents a parenthesized expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression inside the parentheses. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the Expression property. + + + The value for the CloseParenToken property. + + + + + Represents a tuple literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of tuple arguments. + + + + + Returns a copy of this with the Arguments property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the Arguments property. + + + The value for the CloseParenToken property. + + + + + Represents a tuple type expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of tuple elements. + + + + + Returns a copy of this with the Elements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the Elements property. + + + The value for the CloseParenToken property. + + + + + Represents a single declaration of a tuple element. + + + + + Represents a single declaration of a tuple element supplying only the type. + + + This node is associated with the following syntax kinds: + + + + + + + + The type-name part of the tuple element syntax. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Type property. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + This node is associated with the following syntax kinds: + + + + + + + + The name of the element. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A simple "As" clause specifying the type of the tuple element. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + The value for the AsClause property. + + + + + Identifies one of the special instances "Me", "MyClass" or "MyBase". The Kind + property identifies which. + + + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Identifies the special instance "Me" + + + This node is associated with the following syntax kinds: + + + + + + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + + + Identifies the special instance "MyBase" + + + This node is associated with the following syntax kinds: + + + + + + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + + + Identifies the special instance "MyClass" + + + This node is associated with the following syntax kinds: + + + + + + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + + + Represents a GetType expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "GetType" keyword. + + + + + Returns a copy of this with the GetTypeKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The type to get the Type object for. This can be an open generic type. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GetTypeKeyword property. + + + The value for the OpenParenToken property. + + + The value for the Type property. + + + The value for the CloseParenToken property. + + + + + Represents a TypeOf...Is or IsNot expression. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "TypeOf" keyword. + + + + + Returns a copy of this with the TypeOfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression being tested. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Is" or "IsNot" keyword. + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the type being tested against. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the TypeOfKeyword property. + + + The value for the Expression property. + + + The value for the OperatorToken property. + + + The value for the Type property. + + + + + Represents a GetXmlNamespace expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "GetXmlNamespace" keyword. + + + + + Returns a copy of this with the GetXmlNamespaceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The Xml namespace name being referenced. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GetXmlNamespaceKeyword property. + + + The value for the OpenParenToken property. + + + The value for the Name property. + + + The value for the CloseParenToken property. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + This node is associated with the following syntax kinds: + + + + + + + + + The expression on the left-hand-side of the "." or "!" token. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "." or "!" token. + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The identifier after the "." or "!" token. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the Expression property. + + + The value for the OperatorToken property. + + + The value for the Name property. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Base property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The initial dot "." part of the separator. + + + + + Returns a copy of this with the Token1 property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "@" part of .@ or the second "." of "...". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Token2 property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The third "." in a "..." separator. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Token3 property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The identifier after the ".", ".@" or "..." + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the Base property. + + + The value for the Token1 property. + + + The value for the Token2 property. + + + The value for the Token3 property. + + + The value for the Name property. + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + This node is associated with the following syntax kinds: + + + + + + + + The target of the call or index expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The argument list. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ArgumentList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Expression property. + + + The value for the ArgumentList property. + + + + + Base class for object, array and anonymous object creation expressions + + + + + The "New" keyword. + + + + + Returns a copy of this with the NewKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + This node is associated with the following syntax kinds: + + + + + + + + The "New" keyword. + + + + + Returns a copy of this with the NewKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The type of the object being initialized. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ArgumentList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An optional From or With clause to initialize the new object. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NewKeyword property. + + + The value for the AttributeLists property. + + + The value for the Type property. + + + The value for the ArgumentList property. + + + The value for the Initializer property. + + + + + Represents a New expression that create an object of anonymous type. + + + This node is associated with the following syntax kinds: + + + + + + + + The "New" keyword. + + + + + Returns a copy of this with the NewKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The With clause to initialize the new object. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NewKeyword property. + + + The value for the AttributeLists property. + + + The value for the Initializer property. + + + + + Represents an expression that creates a new array. + + + This node is associated with the following syntax kinds: + + + + + + + + The "New" keyword. + + + + + Returns a copy of this with the NewKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The element type of the array being created. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ArrayBounds property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of array modifiers such as "()" or "(,)". If no array modifiers were + present, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the RankSpecifiers property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The initializer including the braces. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NewKeyword property. + + + The value for the AttributeLists property. + + + The value for the Type property. + + + The value for the ArrayBounds property. + + + The value for the RankSpecifiers property. + + + The value for the Initializer property. + + + + + Represents an expression that creates a new array without naming the element + type. + + + This node is associated with the following syntax kinds: + + + + + + + + The "{" token. + + + + + Returns a copy of this with the OpenBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of initializers between the braces. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Initializers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "}" token. + + + + + Returns a copy of this with the CloseBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenBraceToken property. + + + The value for the Initializers property. + + + The value for the CloseBraceToken property. + + + + + Represents a CType, DirectCast or TryCast conversion expression. The Kind + property determines which kind of cast it is. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression being cast. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "," token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The type the expression is being cast to. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + This node is associated with the following syntax kinds: + + + + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression being cast. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "," token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The type the expression is being cast to. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + The value for the OpenParenToken property. + + + The value for the Expression property. + + + The value for the CommaToken property. + + + The value for the Type property. + + + The value for the CloseParenToken property. + + + + + This node is associated with the following syntax kinds: + + + + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression being cast. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "," token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The type the expression is being cast to. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + The value for the OpenParenToken property. + + + The value for the Expression property. + + + The value for the CommaToken property. + + + The value for the Type property. + + + The value for the CloseParenToken property. + + + + + This node is associated with the following syntax kinds: + + + + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression being cast. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "," token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The type the expression is being cast to. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + The value for the OpenParenToken property. + + + The value for the Expression property. + + + The value for the CommaToken property. + + + The value for the Type property. + + + The value for the CloseParenToken property. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + This node is associated with the following syntax kinds: + + + + + + + + The keyword that was used in the cast operation. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression being cast. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + The value for the OpenParenToken property. + + + The value for the Expression property. + + + The value for the CloseParenToken property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The left operand. + + + + + Returns a copy of this with the Left property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The right operand. + + + + + Returns a copy of this with the Right property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the Left property. + + + The value for the OperatorToken property. + + + The value for the Right property. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + The token that is the operator. + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression being operated on. + + + + + Returns a copy of this with the Operand property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the OperatorToken property. + + + The value for the Operand property. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + This node is associated with the following syntax kinds: + + + + + + + + The "If" keyword + + + + + Returns a copy of this with the IfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The first expression inside the parentheses. + + + + + Returns a copy of this with the FirstExpression property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "," token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The second expression inside the parentheses. + + + + + Returns a copy of this with the SecondExpression property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The ")" token + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the IfKeyword property. + + + The value for the OpenParenToken property. + + + The value for the FirstExpression property. + + + The value for the CommaToken property. + + + The value for the SecondExpression property. + + + The value for the CloseParenToken property. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + This node is associated with the following syntax kinds: + + + + + + + + The "If" keyword + + + + + Returns a copy of this with the IfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The first expression inside the parentheses. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "," token. + + + + + Returns a copy of this with the FirstCommaToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The second expression inside the parentheses. + + + + + Returns a copy of this with the WhenTrue property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "," token. + + + + + Returns a copy of this with the SecondCommaToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The second expression inside the parentheses. + + + + + Returns a copy of this with the WhenFalse property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the IfKeyword property. + + + The value for the OpenParenToken property. + + + The value for the Condition property. + + + The value for the FirstCommaToken property. + + + The value for the WhenTrue property. + + + The value for the SecondCommaToken property. + + + The value for the WhenFalse property. + + + The value for the CloseParenToken property. + + + + + Represents a lambda expression, either single line or multi-line. + + + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + + + Returns a copy of this with the SubOrFunctionHeader property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Represents a single line lambda expression. + + + This node is associated with the following syntax kinds: + + + + + + + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + + + Returns a copy of this with the SubOrFunctionHeader property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Returns a copy of this with the Body property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the SubOrFunctionHeader property. + + + The value for the Body property. + + + + + Single line subs only have a single statement. However, when binding it is convenient to have a statement list. For example, + dim statements are not valid in a single line lambda. However, it is nice to be able to provide semantic info about the local. + The only way to create locals is to have a statement list. This method is friend because the statement list should not be part + of the public api. + + + + + Represents a multi-line lambda expression. + + + This node is associated with the following syntax kinds: + + + + + + + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + + + Returns a copy of this with the SubOrFunctionHeader property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Returns a copy of this with the EndSubOrFunctionStatement property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the SubOrFunctionHeader property. + + + The value for the Statements property. + + + The value for the EndSubOrFunctionStatement property. + + + + + Represents the header part of a lambda expression + + + This node is associated with the following syntax kinds: + + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + + + Returns a copy of this with the SubOrFunctionKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the SubOrFunctionKeyword property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + + + Represents a parenthesized argument list. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of arguments. This may be empty. Omitted argument are represented by + an OmittedArgumentSyntax node. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Arguments property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the Arguments property. + + + The value for the CloseParenToken property. + + + + + Base class for the possible kinds of arguments that can appear in an argument + list. + + + + + Gets a value indicating whether this argument is a named argument. + + True if this argument is a named argument; otherwise false. + + + + Gets a value indicating whether this argument is an omitted argument. + + True if this argument is an omitted argument; otherwise false. + + + + Gets the expression of this argument, if any. + + The expression of this argument if it is a simple argument; otherwise null. + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + This node is associated with the following syntax kinds: + + + + + + + + An empty token because all non terminals must have a token. + + + + + Returns a copy of this with the Empty property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Empty property. + + + + + Represents an argument that is just an optional argument name and an + expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The optional name and ":=" prefix of a named argument. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the NameColonEquals property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression that is the argument. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NameColonEquals property. + + + The value for the Expression property. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + This node is associated with the following syntax kinds: + + + + + + + + The name used to identify the named argument. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ":=" token. + + + + + Returns a copy of this with the ColonEqualsToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the ColonEqualsToken property. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + This node is associated with the following syntax kinds: + + + + + + + + The lower bound of the range. This is typically the integer constant zero. + + + + + Returns a copy of this with the LowerBound property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "To" keyword. + + + + + Returns a copy of this with the ToKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The upper bound of the range. + + + + + Returns a copy of this with the UpperBound property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LowerBound property. + + + The value for the ToKeyword property. + + + The value for the UpperBound property. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all the query operators in this query expression. This list always + contains at least one operator. + + + + + Returns a copy of this with the Clauses property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Clauses property. + + + + + This is a base class for all query operators. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + This node is associated with the following syntax kinds: + + + + + + + + The name of the range variable being defined. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Describes the type of the variable being defined. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "In" keyword. + + + + + Returns a copy of this with the InKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression that serves as the source of items for the range variable. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + The value for the AsClause property. + + + The value for the InKeyword property. + + + The value for the Expression property. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + This node is associated with the following syntax kinds: + + + + + + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the NameEquals property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression used to initialize the expression variable. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NameEquals property. + + + The value for the Expression property. + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + This node is associated with the following syntax kinds: + + + + + + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the aggregation + expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the NameEquals property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the aggregation function. The "Group" aggregation function is + represented by the identifier "Group". + + + + + Returns a copy of this with the Aggregation property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NameEquals property. + + + The value for the Aggregation property. + + + + + Represents the name and optional type of an expression range variable. + + + This node is associated with the following syntax kinds: + + + + + + + + The name of the variable being defined. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Describes the type of the variable being defined. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "=" token. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + The value for the AsClause property. + + + The value for the EqualsToken property. + + + + + Represents aggregation in aggregation range variable declaration of a Group By, + Group Join or Aggregate query operator. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The name of the aggregation function. + + + + + Returns a copy of this with the FunctionName property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The argument to the aggregation function. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Argument property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the FunctionName property. + + + The value for the OpenParenToken property. + + + The value for the Argument property. + + + The value for the CloseParenToken property. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Group" keyword. + + + + + Returns a copy of this with the GroupKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GroupKeyword property. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + This node is associated with the following syntax kinds: + + + + + + + + The "From" keyword. + + + + + Returns a copy of this with the FromKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of collection variables declared by this From operator. + + + + + Returns a copy of this with the Variables property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the FromKeyword property. + + + The value for the Variables property. + + + + + Represents a "Let" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Let" keyword. + + + + + Returns a copy of this with the LetKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of expression range variable being defined by the Let operator. + + + + + Returns a copy of this with the Variables property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LetKeyword property. + + + The value for the Variables property. + + + + + Represents an Aggregate query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Aggregate" keyword. + + + + + Returns a copy of this with the AggregateKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of collection range variables declared by this Aggregate operator. + + + + + Returns a copy of this with the Variables property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of additional query operators. It may be empty. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AdditionalQueryOperators property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + The "Into" keyword. + + + + + Returns a copy of this with the IntoKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of new variables being defined by the aggregation. + + + + + Returns a copy of this with the AggregationVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AggregateKeyword property. + + + The value for the Variables property. + + + The value for the AdditionalQueryOperators property. + + + The value for the IntoKeyword property. + + + The value for the AggregationVariables property. + + + + + Represents the "Distinct" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Distinct" keyword. + + + + + Returns a copy of this with the DistinctKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the DistinctKeyword property. + + + + + Represents a "Where" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Where" keyword. + + + + + Returns a copy of this with the WhereKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The boolean expression used for filtering. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WhereKeyword property. + + + The value for the Condition property. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "Skip" or "Take" keyword. + + + + + Returns a copy of this with the SkipOrTakeKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "While" keyword. + + + + + Returns a copy of this with the WhileKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The boolean expression used for partitioning. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the SkipOrTakeKeyword property. + + + The value for the WhileKeyword property. + + + The value for the Condition property. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "Skip" or "Take" keyword. + + + + + Returns a copy of this with the SkipOrTakeKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Represents the expression with the number of items to take or skip. + + + + + Returns a copy of this with the Count property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the SkipOrTakeKeyword property. + + + The value for the Count property. + + + + + Represents the "Group By" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Group" keyword. + + + + + Returns a copy of this with the GroupKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The optional list of variables being grouped; the contents of the Group clause. + If none were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Items property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "By" keyword. + + + + + Returns a copy of this with the ByKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The key values being used for grouping. + + + + + Returns a copy of this with the Keys property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the IntoKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of new variables that calculate aggregations. + + + + + Returns a copy of this with the AggregationVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GroupKeyword property. + + + The value for the Items property. + + + The value for the ByKeyword property. + + + The value for the Keys property. + + + The value for the IntoKeyword property. + + + The value for the AggregationVariables property. + + + + + Represents a Join or a Group Join query operator. + + + + + The "Join" keyword. + + + + + Returns a copy of this with the JoinKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Defines the collection range variables being joined to. + + + + + Returns a copy of this with the JoinedVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + An additional Join or Group Join query operator. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AdditionalJoins property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "On" keyword. + + + + + Returns a copy of this with the OnKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Returns a copy of this with the JoinConditions property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Represents the "expression Equals expression" condition in a Join. + + + This node is associated with the following syntax kinds: + + + + + + + + The left expression in the Join condition. + + + + + Returns a copy of this with the Left property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "Equals" keyword. + + + + + Returns a copy of this with the EqualsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The right expression in the Join condition. + + + + + Returns a copy of this with the Right property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Left property. + + + The value for the EqualsKeyword property. + + + The value for the Right property. + + + + + Represents a Join query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Join" keyword. + + + + + Returns a copy of this with the JoinKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Defines the collection range variables being joined to. + + + + + Returns a copy of this with the JoinedVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + An additional Join or Group Join query operator. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AdditionalJoins property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "On" keyword. + + + + + Returns a copy of this with the OnKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Returns a copy of this with the JoinConditions property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the JoinKeyword property. + + + The value for the JoinedVariables property. + + + The value for the AdditionalJoins property. + + + The value for the OnKeyword property. + + + The value for the JoinConditions property. + + + + + Represents the "Group Join" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Group" keyword. + + + + + Returns a copy of this with the GroupKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Join" keyword. + + + + + Returns a copy of this with the JoinKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Defines the collection range variables being joined to. + + + + + Returns a copy of this with the JoinedVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + An additional Join or Group Join query operator. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AdditionalJoins property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "On" keyword. + + + + + Returns a copy of this with the OnKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Returns a copy of this with the JoinConditions property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "Into" keyword. + + + + + Returns a copy of this with the IntoKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of new variables that calculate aggregations. + + + + + Returns a copy of this with the AggregationVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GroupKeyword property. + + + The value for the JoinKeyword property. + + + The value for the JoinedVariables property. + + + The value for the AdditionalJoins property. + + + The value for the OnKeyword property. + + + The value for the JoinConditions property. + + + The value for the IntoKeyword property. + + + The value for the AggregationVariables property. + + + + + Represents the "Order By" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Order" keyword + + + + + Returns a copy of this with the OrderKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "By" keyword. + + + + + Returns a copy of this with the ByKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of OrderExpression's to sort by. + + + + + Returns a copy of this with the Orderings property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OrderKeyword property. + + + The value for the ByKeyword property. + + + The value for the Orderings property. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + This node is associated with the following syntax kinds: + + + + + + + + + The expression to sort by. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AscendingOrDescendingKeyword property changed + to the specified value. Returns this instance if the specified value is the + same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the Expression property. + + + The value for the AscendingOrDescendingKeyword property. + + + + + Represents the "Select" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Select" keyword. + + + + + Returns a copy of this with the SelectKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of expression range variables being defined by the Select query + operator. + + + + + Returns a copy of this with the Variables property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the SelectKeyword property. + + + The value for the Variables property. + + + + + This is the base class for all XML expression syntax nodes (XmlDocument and + XmlElement). + + + + + Represents an XML Document literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Declaration property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the PrecedingMisc property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Root property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the FollowingMisc property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Declaration property. + + + The value for the PrecedingMisc property. + + + The value for the Root property. + + + The value for the FollowingMisc property. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanQuestionToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the XmlKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Version property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Encoding property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Standalone property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the QuestionGreaterThanToken property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanQuestionToken property. + + + The value for the XmlKeyword property. + + + The value for the Version property. + + + The value for the Encoding property. + + + The value for the Standalone property. + + + The value for the QuestionGreaterThanToken property. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the Equals property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the Equals property. + + + The value for the Value property. + + + + + Represents an XML element with content in an XML literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the StartTag property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Content property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndTag property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the StartTag property. + + + The value for the Content property. + + + The value for the EndTag property. + + + + + Represents Xml text. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all the text tokens in the Xml text. This list always contains at + least one token. + + + + + Returns a copy of this with the TextTokens property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the TextTokens property. + + + + + Represents the start tag of an XML element of the form <element>. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Attributes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the GreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanToken property. + + + The value for the Name property. + + + The value for the Attributes property. + + + The value for the GreaterThanToken property. + + + + + Represents the end tag of an XML element of the form </element>. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanSlashToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the GreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanSlashToken property. + + + The value for the Name property. + + + The value for the GreaterThanToken property. + + + + + Represents an empty XML element of the form <element /> + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Attributes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the SlashGreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanToken property. + + + The value for the Name property. + + + The value for the Attributes property. + + + The value for the SlashGreaterThanToken property. + + + + + Represents an XML attribute in an XML literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the EqualsToken property. + + + The value for the Value property. + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the StartQuoteToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the TextTokens property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndQuoteToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the StartQuoteToken property. + + + The value for the TextTokens property. + + + The value for the EndQuoteToken property. + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + This node is associated with the following syntax kinds: + + + + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Prefix property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the LocalName property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Prefix property. + + + The value for the LocalName property. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the GreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanToken property. + + + The value for the Name property. + + + The value for the GreaterThanToken property. + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the ColonToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the ColonToken property. + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanExclamationMinusMinusToken property + changed to the specified value. Returns this instance if the specified value is + the same as the current value. + + + + + Returns a copy of this with the TextTokens property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the MinusMinusGreaterThanToken property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanExclamationMinusMinusToken property. + + + The value for the TextTokens property. + + + The value for the MinusMinusGreaterThanToken property. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanQuestionToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the TextTokens property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the QuestionGreaterThanToken property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanQuestionToken property. + + + The value for the Name property. + + + The value for the TextTokens property. + + + The value for the QuestionGreaterThanToken property. + + + + + Represents an XML CDATA section in an XML literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the BeginCDataToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the TextTokens property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndCDataToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the BeginCDataToken property. + + + The value for the TextTokens property. + + + The value for the EndCDataToken property. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanPercentEqualsToken property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the PercentGreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanPercentEqualsToken property. + + + The value for the Expression property. + + + The value for the PercentGreaterThanToken property. + + + + + Abstract node class that represents the textual description of a type, possibly + include generic type arguments, qualified names, array specifiers, nullable + specifier and the like. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + This node is associated with the following syntax kinds: + + + + + + + + The type of the elements of the array. + + + + + Returns a copy of this with the ElementType property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents the list of "()" or "(,,)" modifiers on the array type. + + + + + Returns a copy of this with the RankSpecifiers property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElementType property. + + + The value for the RankSpecifiers property. + + + + + A type name that represents a nullable type, such as "Integer?". + + + This node is associated with the following syntax kinds: + + + + + + + + The kind of type that is this type is a nullable of. Cannot be an array type or + a nullable type. + + + + + Returns a copy of this with the ElementType property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "?" token. + + + + + Returns a copy of this with the QuestionMarkToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElementType property. + + + The value for the QuestionMarkToken property. + + + + + Represents an occurrence of a Visual Basic built-in type such as Integer or + String in source code. + + + This node is associated with the following syntax kinds: + + + + + + + + The keyword that was used to describe the built-in type. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + + + Abstract node class that represents a name, possibly include generic arguments + and qualified names. + + + + + Abstract node class that represents a name, possibly include generic arguments. + + + + + The identifier in the name. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + This node is associated with the following syntax kinds: + + + + + + + + The identifier in the name. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + This node is associated with the following syntax kinds: + + + + + + + + The identifier in the name. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The generic argument list. + + + + + Returns a copy of this with the TypeArgumentList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + The value for the TypeArgumentList property. + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + This node is associated with the following syntax kinds: + + + + + + + + The part of the name that appears to the left of the dot. This can itself be + any name. + + + + + Returns a copy of this with the Left property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "." token that separates the names. + + + + + Returns a copy of this with the DotToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The part of the name that appears to the right of the dot. This must be a + simple identifier. + + + + + Returns a copy of this with the Right property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Left property. + + + The value for the DotToken property. + + + The value for the Right property. + + + + + Represents a name in the global namespace. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Global" keyword. + + + + + Returns a copy of this with the GlobalKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GlobalKeyword property. + + + + + Represents a parenthesized list of generic type arguments. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "Of" keyword. + + + + + Returns a copy of this with the OfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of all the type arguments. + + + + + Returns a copy of this with the Arguments property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the OfKeyword property. + + + The value for the Arguments property. + + + The value for the CloseParenToken property. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Signature property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the Signature property. + + + The value for the AsClause property. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the ArgumentTypes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the ArgumentTypes property. + + + The value for the CloseParenToken property. + + + + + This node is associated with the following syntax kinds: + + + + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Modifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Modifier property. + + + The value for the Type property. + + + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the OperatorKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OperatorKeyword property. + + + The value for the OperatorToken property. + + + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Left property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the DotToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Right property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Left property. + + + The value for the DotToken property. + + + The value for the Right property. + + + + + Represent a Yield statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Yield" keyword. + + + + + Returns a copy of this with the YieldKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression whose value is being yielded. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the YieldKeyword property. + + + The value for the Expression property. + + + + + Represents an Await expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Await" keyword. + + + + + Returns a copy of this with the AwaitKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression being awaited. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AwaitKeyword property. + + + The value for the Expression property. + + + + + Abstract class that represent structured trivia. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + This node is associated with the following syntax kinds: + + + + + + + + The list of tokens that were skipped by the parser. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Tokens property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Tokens property. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in + source. + + + This node is associated with the following syntax kinds: + + + + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Content property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Content property. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the StartQuoteToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Reference property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndQuoteToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the EqualsToken property. + + + The value for the StartQuoteToken property. + + + The value for the Reference property. + + + The value for the EndQuoteToken property. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the StartQuoteToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Reference property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndQuoteToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the EqualsToken property. + + + The value for the StartQuoteToken property. + + + The value for the Reference property. + + + The value for the EndQuoteToken property. + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + This node is associated with the following syntax kinds: + + + + + + + + The expression on the left-hand-side of the "?". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + "?" token. + + + + + Returns a copy of this with the QuestionMarkToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + Returns a copy of this with the WhenNotNull property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Expression property. + + + The value for the QuestionMarkToken property. + + + The value for the WhenNotNull property. + + + + + Represents a NameOf expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "NameOf" keyword. + + + + + Returns a copy of this with the NameOfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The argument. + + + + + Returns a copy of this with the Argument property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NameOfKeyword property. + + + The value for the OpenParenToken property. + + + The value for the Argument property. + + + The value for the CloseParenToken property. + + + + + Represents an interpolated string expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The opening '$"', '$“', or '$”' token. + + + + + Returns a copy of this with the DollarSignDoubleQuoteToken property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + The contents of the interpolated string. + + + + + Returns a copy of this with the Contents property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The closing '"', '”', or '“' token. + + + + + Returns a copy of this with the DoubleQuoteToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the DollarSignDoubleQuoteToken property. + + + The value for the Contents property. + + + The value for the DoubleQuoteToken property. + + + + + Represents either text content or an interpolation. + + + + + Represents literal text content in an interpolated string. + + + This node is associated with the following syntax kinds: + + + + + + + + The text token. + + + + + Returns a copy of this with the TextToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the TextToken property. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + This node is associated with the following syntax kinds: + + + + + + + + The opening curly brace '{' token. + + + + + Returns a copy of this with the OpenBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression whose formatted value should be embedded in the resultant + string. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Optional. The alignment clause ',alignment' of the embedded expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AlignmentClause property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Optional. The format string clause ':formatString' of the embedded expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the FormatClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The closing curly brace '}' token of the embedded expression. + + + + + Returns a copy of this with the CloseBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenBraceToken property. + + + The value for the Expression property. + + + The value for the AlignmentClause property. + + + The value for the FormatClause property. + + + The value for the CloseBraceToken property. + + + + + Represents an alignment clause ',alignment' of an interpolated string embedded + expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The comma ',' token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An expression representing the alignment of the interpolated expression. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the CommaToken property. + + + The value for the Value property. + + + + + Represents a format string clause ':formatString' of an interpolated string + embedded expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The ':' token. + + + + + Returns a copy of this with the ColonToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The format string. + + + + + Returns a copy of this with the FormatStringToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ColonToken property. + + + The value for the FormatStringToken property. + + + + + Represents a pre-processing directive (such as #If, #Const or #Region) + appearing in source. + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Const" keyword. + + + + + Returns a copy of this with the ConstKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the pre-processing constant being defined. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "=" token. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the ConstKeyword property. + + + The value for the Name property. + + + The value for the EqualsToken property. + + + The value for the Value property. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ElseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the IfOrElseIfKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ThenKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the HashToken property. + + + The value for the ElseKeyword property. + + + The value for the IfOrElseIfKeyword property. + + + The value for the Condition property. + + + The value for the ThenKeyword property. + + + + + Represents an #Else pre-processing directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the ElseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the ElseKeyword property. + + + + + Represents an #End If pre-processing directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the IfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the EndKeyword property. + + + The value for the IfKeyword property. + + + + + Represents the beginning of a #Region directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Region" keyword. + + + + + Returns a copy of this with the RegionKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The label of the code region being defined. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the RegionKeyword property. + + + The value for the Name property. + + + + + Represents an #End Region directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End" keyword. + + + + + Returns a copy of this with the EndKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Region" keyword. + + + + + Returns a copy of this with the RegionKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the EndKeyword property. + + + The value for the RegionKeyword property. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the ExternalSourceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the ExternalSource property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the LineStart property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the ExternalSourceKeyword property. + + + The value for the OpenParenToken property. + + + The value for the ExternalSource property. + + + The value for the CommaToken property. + + + The value for the LineStart property. + + + The value for the CloseParenToken property. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the ExternalSourceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the EndKeyword property. + + + The value for the ExternalSourceKeyword property. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the ExternalChecksumKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the ExternalSource property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the FirstCommaToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Guid property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the SecondCommaToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Checksum property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the ExternalChecksumKeyword property. + + + The value for the OpenParenToken property. + + + The value for the ExternalSource property. + + + The value for the FirstCommaToken property. + + + The value for the Guid property. + + + The value for the SecondCommaToken property. + + + The value for the Checksum property. + + + The value for the CloseParenToken property. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EnableKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the WarningKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the ErrorCodes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the EnableKeyword property. + + + The value for the WarningKeyword property. + + + The value for the ErrorCodes property. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the DisableKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the WarningKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the ErrorCodes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the DisableKeyword property. + + + The value for the WarningKeyword property. + + + The value for the ErrorCodes property. + + + + + Represents an #r directive appearing in scripts. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the ReferenceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the File property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the ReferenceKeyword property. + + + The value for the File property. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + + + Creates a syntax trivia normalizing visitor + + The whitespace to indent with + The whitespace to use for end of line + Whether to use elastic trivia or not + Whether to rewrite keywords in default casing or not + + + + + indentation depth is the declaration depth for statements within the block. for start/end statements + of these blocks (e.g. the if statement), it is a level less + + + + + We each element of option, imports and attributes on a separate line, where the last element of this the list if + followed by an empty line: + Option Strict On + + Imports System + Imports Goo + + [...] + + Namespace + [...] + + + + + Add an empty line after the begin, except the first member is a nested namespace. + Separate each member of a namespace with an empty line. + + + + + We want to display type blocks (Modules, Classes, Structures and Interfaces) like follows + Class Goo + implements IBar1, IBar2 + implements IBar3 + inherits Bar1 + + Public Sub Boo() + End Sub + End Class + + or + + Class Goo + + Public Sub Boo() + End Sub + End Class + + Basically it's an empty line between implements and inherits and between each member. If there are no + inherits or implements, add an empty line before the first member. + + + + + Each statement and the begin will be displayed on a separate line. No empty lines. + + + + + Adds VB specific parts to the line directive map + + + + + + Represents a visitor that visits only the single SyntaxNode + passed into its method and produces + a value of the type specified by the parameter. + + + The type of the return value of this visitor's Visit method. + + + + + Represents a visitor that visits only the single SyntaxNode + passed into its method. + + + + + Represents a which descends an entire graph and + may replace or remove visited SyntaxNodes in depth-first order. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + An empty token because all non terminals must have a token. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + A representing the specific kind of + EndBlockStatementSyntax. One of EndIfStatement, EndUsingStatement, + EndWithStatement, EndSelectStatement, EndStructureStatement, EndEnumStatement, + EndInterfaceStatement, EndClassStatement, EndModuleStatement, + EndNamespaceStatement, EndSubStatement, EndFunctionStatement, EndGetStatement, + EndSetStatement, EndPropertyStatement, EndOperatorStatement, EndEventStatement, + EndAddHandlerStatement, EndRemoveHandlerStatement, EndRaiseEventStatement, + EndWhileStatement, EndTryStatement, EndSyncLockStatement. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + A representing the specific kind of + EndBlockStatementSyntax. One of EndIfStatement, EndUsingStatement, + EndWithStatement, EndSelectStatement, EndStructureStatement, EndEnumStatement, + EndInterfaceStatement, EndClassStatement, EndModuleStatement, + EndNamespaceStatement, EndSubStatement, EndFunctionStatement, EndGetStatement, + EndSetStatement, EndPropertyStatement, EndOperatorStatement, EndEventStatement, + EndAddHandlerStatement, EndRemoveHandlerStatement, EndRaiseEventStatement, + EndWhileStatement, EndTryStatement, EndSyncLockStatement. + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an entire source file of VB code. + + + Represents the list of Option statements at the beginning of a source file. + + + Represents the list of Imports statements at the beginning of a source file. + + + Represents the list of AttributeStatements at the beginning of a source file + that contain the Assembly and Module attributes. + + + Represents the members of the default namespace for this source file: all the + top-level type and namespace declarations in the file. May also contain + Statements that are not valid + + + Represents the end of the source file. This token may have trivia (whitespace, + comments, ...) attached to it. + + + + + Represents an entire source file of VB code. + + + Represents the list of Option statements at the beginning of a source file. + + + Represents the list of Imports statements at the beginning of a source file. + + + Represents the list of AttributeStatements at the beginning of a source file + that contain the Assembly and Module attributes. + + + Represents the members of the default namespace for this source file: all the + top-level type and namespace declarations in the file. May also contain + Statements that are not valid + + + + + Represents an entire source file of VB code. + + + + + Represents an Option statement, such as "Option Strict On". + + + The "Option" keyword. + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + The keyword that identifiers the value being set for the option: On, Off, Text + or Binary. + + + + + Represents an Option statement, such as "Option Strict On". + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + The keyword that identifiers the value being set for the option: On, Off, Text + or Binary. + + + + + Represents an Option statement, such as "Option Strict On". + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + The "Imports" keyword. + + + A list of one or more import clauses. Each clause is either an alias, namespace + or XML namespace import. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + A list of one or more import clauses. Each clause is either an alias, namespace + or XML namespace import. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + + + Represents the clause of an Imports statement that imports all members of a + type or namespace or aliases a type or namespace. + + + An optional alias for the namespace or type being imported. + + + The namespace or type being imported. + + + + + Represents the clause of an Imports statement that imports all members of a + type or namespace or aliases a type or namespace. + + + The namespace or type being imported. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + The identifier being introduced. + + + The "=" token. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + The identifier being introduced. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + The identifier being introduced. + + + + + Defines a XML namespace for XML expressions. + + + Identifies the XML namespace alias and URI. + + + + + Defines a XML namespace for XML expressions. + + + Identifies the XML namespace alias and URI. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + The statement that begins the NamespaceBlock. + + + The declarations contained in the namespace statement. + + + The End Namespace statement that ends the block. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + The statement that begins the NamespaceBlock. + + + The declarations contained in the namespace statement. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + The statement that begins the NamespaceBlock. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + The "Namespace" keyword. + + + A (possibly dotted) name denoting the namespace being declared. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + A (possibly dotted) name denoting the namespace being declared. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + The "Module" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Module" statement that ends the block. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + The "Module" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + The "Module" statement that begins the block. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + The "Structure" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Structure" statement that ends the block. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + The "Structure" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + The "Structure" statement that begins the block. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + The "Interface" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Interface" statement that ends the block. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + The "Interface" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + The "Interface" statement that begins the block. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + The "Class" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Class" statement that ends the block. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + The "Class" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + The "Class" statement that begins the block. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + The statement that begins the type or module. + + + The declarations contained in the enumeration. + + + The End XXX statement that ends the block. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + The statement that begins the type or module. + + + The declarations contained in the enumeration. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + The statement that begins the type or module. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + The "Inherits" keyword. + + + A list of the types being inherited. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + A list of the types being inherited. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + A list of the types being inherited. + + + + + Represents an Implements statement in a Class or Structure. + + + The "Implements" keyword. + + + A list of the types being implemented. + + + + + Represents an Implements statement in a Class or Structure. + + + A list of the types being implemented. + + + + + Represents an Implements statement in a Class or Structure. + + + A list of the types being implemented. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Module" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Structure" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Interface" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Class" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Enum" keyword. + + + The name of the enum being declared. + + + Optional "As XXX" clause describing the underlying type of the enumeration. If + no As clause was specified, Nothing is returned. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The name of the enum being declared. + + + Optional "As XXX" clause describing the underlying type of the enumeration. If + no As clause was specified, Nothing is returned. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + The name of the enum being declared. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + The name of the enum being declared. + + + + + Represents the type parameter list in a declaration. + + + The "(" token. + + + The "Of" keyword. + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + The ")" token. + + + + + Represents the type parameter list in a declaration. + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + + + Represents the type parameter list in a declaration. + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + + + Represents a type parameter on a generic type declaration. + + + Represents the "In" or "Out" variance keyword on a type parameter, if present. + If no variance modifier was present, Nothing is returned. + + + The name of the type parameter + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + + + Represents a type parameter on a generic type declaration. + + + The name of the type parameter + + + + + Represents a type parameter on a generic type declaration. + + + The name of the type parameter + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + A list of the supplied constraints. If no constraints were supplied, Nothing is + returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + A list of the supplied constraints. If no constraints were supplied, Nothing is + returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + The "As" keyword. + + + The "{" token. + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + The "}" token. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + A representing the specific kind of + SpecialConstraintSyntax. One of NewConstraint, ClassConstraint, + StructureConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + Represents a type parameter constraint that is a type. + + + The type describing the constraint. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + An optional value for the enum member. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + A representing the specific kind of MethodBlockSyntax. + One of SubBlock, FunctionBlock. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + A representing the specific kind of MethodBlockSyntax. + One of SubBlock, FunctionBlock. + + + The "Sub" or "Function" statement that begins the block. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + The "Sub New" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" statement that ends the block declaration. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + The "Sub New" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + The "Sub New" statement that begins the block. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Operator" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Operator" statement that ends the block declaration. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Operator" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Operator" statement that begins the block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + A representing the specific kind of AccessorBlockSyntax. + One of GetAccessorBlock, SetAccessorBlock, AddHandlerAccessorBlock, + RemoveHandlerAccessorBlock, RaiseEventAccessorBlock. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + A representing the specific kind of AccessorBlockSyntax. + One of GetAccessorBlock, SetAccessorBlock, AddHandlerAccessorBlock, + RemoveHandlerAccessorBlock, RaiseEventAccessorBlock. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + The property declaration that begins the block. + + + The accessor blocks contained in the property, between the Property and the End + Property statements. + + + The End Property statement that ends the block. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + The property declaration that begins the block. + + + The accessor blocks contained in the property, between the Property and the End + Property statements. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + The event declaration that begins the block. + + + The accessor blocks contained in the custom event declaration, between the + Event statement and the End Event statement. + + + The End Event statement that ends the block. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + The event declaration that begins the block. + + + The accessor blocks contained in the custom event declaration, between the + Event statement and the End Event statement. + + + + + Represents the parameter list in a method declaration. + + + The "(" token that introduces the parameter list. If no parameter list was + present, Nothing is returned. + + + The list of parameters. If no parameter list was present, Nothing is returned. + + + The ")" token that concludes the parameter list. If no parameter list was + present, Nothing is returned. + + + + + Represents the parameter list in a method declaration. + + + The list of parameters. If no parameter list was present, Nothing is returned. + + + + + Represents the parameter list in a method declaration. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + The name of the method being declared. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + The name of the method being declared. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + The name of the method being declared. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + The name of the method being declared. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A representing the specific kind of + MethodStatementSyntax. One of SubStatement, FunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A representing the specific kind of + MethodStatementSyntax. One of SubStatement, FunctionStatement. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A representing the specific kind of + MethodStatementSyntax. One of SubStatement, FunctionStatement. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" keyword. + + + The "New" keyword in the constructor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The name of the method being declared. + + + The string literal with the library name. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + The name of the method being declared. + + + The string literal with the library name. + + + + + A Declare statement that declares an external DLL method. + + + The name of the method being declared. + + + The string literal with the library name. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The name of the method being declared. + + + The string literal with the library name. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + The name of the method being declared. + + + The string literal with the library name. + + + + + A Declare statement that declares an external DLL method. + + + The name of the method being declared. + + + The string literal with the library name. + + + + + A Declare statement that declares an external DLL method. + + + A representing the specific kind of + DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A representing the specific kind of + DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The string literal with the library name. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A representing the specific kind of + DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The string literal with the library name. + + + + + A Declare statement that declares an external DLL method. + + + A representing the specific kind of + DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The string literal with the library name. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + The name of the delegate being declared. + + + + + A statement that declares a delegate type. + + + The name of the delegate being declared. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + The name of the delegate being declared. + + + + + A statement that declares a delegate type. + + + The name of the delegate being declared. + + + + + A statement that declares a delegate type. + + + A representing the specific kind of + DelegateStatementSyntax. One of DelegateSubStatement, + DelegateFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A representing the specific kind of + DelegateStatementSyntax. One of DelegateSubStatement, + DelegateFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A representing the specific kind of + DelegateStatementSyntax. One of DelegateSubStatement, + DelegateFunctionStatement. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + + + A statement that declares a delegate type. + + + A representing the specific kind of + DelegateStatementSyntax. One of DelegateSubStatement, + DelegateFunctionStatement. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The optional Custom keyword for custom event declarations. + + + The "Event" keyword that introduces this event declaration. + + + The name of the event being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an Implements clause indicates the interface methods that this + method implements. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The name of the event being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an Implements clause indicates the interface methods that this + method implements. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + The name of the event being declared. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + The name of the event being declared. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Operator" keyword that introduces this operator declaration. + + + The operator being defined. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The operator being defined. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + The operator being defined. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Property" keyword that introduces this property declaration. + + + The name of the property being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + property. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The name of the property being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + property. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + The name of the property being declared. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + The name of the property being declared. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A representing the specific kind of + AccessorStatementSyntax. One of GetAccessorStatement, SetAccessorStatement, + AddHandlerAccessorStatement, RemoveHandlerAccessorStatement, + RaiseEventAccessorStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A representing the specific kind of + AccessorStatementSyntax. One of GetAccessorStatement, SetAccessorStatement, + AddHandlerAccessorStatement, RemoveHandlerAccessorStatement, + RaiseEventAccessorStatement. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + The "Implements" keyword. + + + The list of interface members being implemented. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + The list of interface members being implemented. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + The list of interface members being implemented. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + The "Handles" keyword. + + + The list of event members being handled. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + The list of event members being handled. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + The list of event members being handled. + + + + + Represents event container specified through special keywords "Me", "MyBase" or + "MyClass".. + + + The container of the event. This can be one of the special keywords: "Me", + "MyBase" or "MyClass". + + + + + Represents event container that refers to a WithEvents member. + + + The container of the event. It is a simple identifier that refers to a + WithEvents member of the containing type. + + + + + Represents event container that refers to a WithEvents member. + + + The container of the event. It is a simple identifier that refers to a + WithEvents member of the containing type. + + + + + Represents event container that refers to a WithEvents member's property. + + + The container of the event. + + + The "." token. + + + The provider of the event. It is a property of a WithEvents member of the + containing type. + + + + + Represents event container that refers to a WithEvents member's property. + + + The container of the event. + + + The provider of the event. It is a property of a WithEvents member of the + containing type. + + + + + Represents a single handled event in a "Handles ..." clause. + + + The container of the event. This can either be a simple identifier (identifying + a members of the containing type) or one of the special keywords "Me", "MyBase" + or "MyClass". + + + The "." token. + + + The event being handled. This must be a simple identifier. + + + + + Represents a single handled event in a "Handles ..." clause. + + + The container of the event. This can either be a simple identifier (identifying + a members of the containing type) or one of the special keywords "Me", "MyBase" + or "MyClass". + + + The event being handled. This must be a simple identifier. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The missing identifier token for this incomplete member. Should only be used to + have a location for error reporting. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + The "As" clause that describes the return type, and possibly includes "New", + "With" or "From". If no As clause was present, Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + variable or the value of the constant. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + The "As" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type-name part of the As clause. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type-name part of the As clause. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + The type-name part of the As clause. + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + The "As" keyword. + + + The New expression + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + The New expression + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + The "With" keyword. + + + The "{" token. + + + The comma-separated list of field initializers. + + + The "}" token. + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + The comma-separated list of field initializers. + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + The comma-separated list of field initializers. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + The "From" keyword. + + + The initializer including the braces. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + The initializer including the braces. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + The optional "Key" keyword. + + + The value being assigned. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + The value being assigned. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + The optional "Key" keyword. + + + The "." token. + + + The name of the field being initialized. + + + The "=" token. + + + The value being assigned to the field. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + The name of the field being initialized. + + + The value being assigned to the field. + + + + + Represents an "= initializer" clause in a declaration for a variable, parameter + or automatic property. + + + The "=" token. + + + The expression used as the initial value. + + + + + Represents an "= initializer" clause in a declaration for a variable, parameter + or automatic property. + + + The expression used as the initial value. + + + + + Represent a parameter to a method, property, constructor, etc. + + + A list of all attribute lists on this parameter. If no attributes were + specified, Nothing is returned. + + + A list of the modifier tokens "ByVal", "ByRef", "Optional" or "ParamArray" that + modify this parameter. + + + The name of the parameter, including any "?" or "()" modifiers. + + + If present, the "As type-name" clause describing the type of the parameter. If + no As clause is present, Nothing is returned. + + + If present, an initializer with the default value of the parameter. If no + default value is present, Nothing is returned. + + + + + Represent a parameter to a method, property, constructor, etc. + + + The name of the parameter, including any "?" or "()" modifiers. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + The identifier that names the item being declared. + + + The "?" token that indicates a nullable type. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + A list of array modifiers for the type. If no array modifiers were present, an + empty list is returned. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + The identifier that names the item being declared. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + The identifier that names the item being declared. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + The identifier that names the item being declared. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + The "(" token. + + + The comma tokens in the array type. There is one less comma than the rank. + + + The ")" token. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + + + Represents a group of attributes within "<" and ">" brackets. + + + The "<" token. + + + A comma separated list of attribute declarations in this attribute list. + + + The ">" token. + + + + + Represents a group of attributes within "<" and ">" brackets. + + + A comma separated list of attribute declarations in this attribute list. + + + + + Represents a group of attributes within "<" and ">" brackets. + + + + + Represents a single attribute declaration within an attribute list. + + + Optional attribute target. Assembly|Module : + + + The name of the attribute. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + + + Represents a single attribute declaration within an attribute list. + + + The name of the attribute. + + + + + Represents a single attribute declaration within an attribute list. + + + The "Assembly" or "Module" attribute modifier, is present. If no attribute + modifier is present, Nothing is returned. + + + The ":" token, if an attribute modifier is present. If no attribute modifier is + present, Nothing is returned. + + + + + Represents a single attribute declaration within an attribute list. + + + The "Assembly" or "Module" attribute modifier, is present. If no attribute + modifier is present, Nothing is returned. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + The list of attribute lists. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + + + Represent an expression in a statement context. This may only be a invocation + or await expression in standard code but may be any expression in VB + Interactive code. + + + The expression. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + "?" token. + + + The expression whose value is being output. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + The expression whose value is being output. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + The While statement that begins the block. + + + The statements contained in the While...End While. This might be an empty list. + + + The End While statement that ends the block. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + The While statement that begins the block. + + + The statements contained in the While...End While. This might be an empty list. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + The While statement that begins the block. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + The UsingStatement that begins the Using...End Using block. + + + The statements contained in the Using...End Using block. This might be an empty + list. + + + The End Using statement that ends the block. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + The UsingStatement that begins the Using...End Using block. + + + The statements contained in the Using...End Using block. This might be an empty + list. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + The UsingStatement that begins the Using...End Using block. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + The SyncLock statement that begins the block. + + + The statements contained in the SyncLock...End SyncLock statement. This might + be an empty list. + + + The End SyncLock statement that ends the block. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + The SyncLock statement that begins the block. + + + The statements contained in the SyncLock...End SyncLock statement. This might + be an empty list. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + The SyncLock statement that begins the block. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + The WithStatement that begins the With...End With block. + + + The statements contained in the With...End With block. This might be an empty + list. + + + The End With statement that ends the block. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + The WithStatement that begins the With...End With block. + + + The statements contained in the With...End With block. This might be an empty + list. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + The WithStatement that begins the With...End With block. + + + + + Represents the declaration of one or more local variables or constants. + + + The modifier token (Static, Dim or Const) that introduces this local variable + declaration. + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents a label statement. + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + The ":" token of the label statement. + + + + + Represents a label statement. + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + + + Represents a label statement. + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + + + Represents a "GoTo" statement. + + + The "GoTo" keyword. + + + The name of the label. If the label is a line number, wraps an IntegerLiteral + that is the line number, otherwise, wraps an Identifier. + + + + + Represents a "GoTo" statement. + + + The name of the label. If the label is a line number, wraps an IntegerLiteral + that is the line number, otherwise, wraps an Identifier. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + A representing the specific kind of LabelSyntax. One of + IdentifierLabel, NumericLabel, NextLabel. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + A representing the specific kind of LabelSyntax. One of + IdentifierLabel, NumericLabel, NextLabel. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + The "Stop" or "End" keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + The "Stop" or "End" keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + A representing the specific kind of + StopOrEndStatementSyntax. One of StopStatement, EndStatement. + + + The "Stop" or "End" keyword. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + A representing the specific kind of ExitStatementSyntax. + One of ExitDoStatement, ExitForStatement, ExitSubStatement, + ExitFunctionStatement, ExitOperatorStatement, ExitPropertyStatement, + ExitTryStatement, ExitSelectStatement, ExitWhileStatement. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + A representing the specific kind of ExitStatementSyntax. + One of ExitDoStatement, ExitForStatement, ExitSubStatement, + ExitFunctionStatement, ExitOperatorStatement, ExitPropertyStatement, + ExitTryStatement, ExitSelectStatement, ExitWhileStatement. + + + The keyword describing the block to exit. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + A representing the specific kind of + ContinueStatementSyntax. One of ContinueWhileStatement, ContinueDoStatement, + ContinueForStatement. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + A representing the specific kind of + ContinueStatementSyntax. One of ContinueWhileStatement, ContinueDoStatement, + ContinueForStatement. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Return" statement. + + + The "Return" keyword. + + + The expression being returned, if present. + + + + + Represents a "Return" statement. + + + The expression being returned, if present. + + + + + Represents a "Return" statement. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + The "If" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + A list of statements to be executed if the condition expression evaluates as + true. Multiple statements must be separated by colons. + + + An "Else" clause to be executed if the condition expression evaluates as false. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + The condition expression to be evaluated. + + + A list of statements to be executed if the condition expression evaluates as + true. Multiple statements must be separated by colons. + + + An "Else" clause to be executed if the condition expression evaluates as false. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + The condition expression to be evaluated. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + The "Else" keyword. + + + A list of statements to be executed. Multiple statements must be separated by + colons. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + A list of statements to be executed. Multiple statements must be separated by + colons. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + The "If" statement that begins the "If" block. + + + A list of statements to be executed if the condition expression evaluates as + true. + + + A list of "ElseIf" blocks to be evaluated, in order, if the condition + expression of the "If" statement evaluates as false. + + + An "Else" block to be executed if the condition expression of the "If" + statement and all "ElseIf" blocks evaluate as false. + + + Then "End If" statement. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + The "If" statement that begins the "If" block. + + + A list of statements to be executed if the condition expression evaluates as + true. + + + A list of "ElseIf" blocks to be evaluated, in order, if the condition + expression of the "If" statement evaluates as false. + + + An "Else" block to be executed if the condition expression of the "If" + statement and all "ElseIf" blocks evaluate as false. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + The "If" statement that begins the "If" block. + + + + + Represents the "If ... Then" statement that begins a multi-line "If" block. + + + The "If" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + + + Represents the "If ... Then" statement that begins a multi-line "If" block. + + + The condition expression to be evaluated. + + + + + Represents an "ElseIf ... Then ..." block. + + + The "ElseIf ... Then" statement the begins the "ElseIf" block. + + + A list of statements to be executed if the condition expression of the "ElseIf" + statement evaluates as true. + + + + + Represents an "ElseIf ... Then ..." block. + + + The "ElseIf ... Then" statement the begins the "ElseIf" block. + + + + + Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. + + + The "ElseIf" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + + + Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. + + + The condition expression to be evaluated. + + + + + Represents an "Else ..." block. + + + The "Else" statement that begins the "Else" block. + + + A list of statements to be executed. + + + + + Represents an "Else ..." block. + + + A list of statements to be executed. + + + + + Represents an "Else ..." block. + + + + + Represents the "Else" statement that begins an "Else" block. + + + The "Else" keyword. + + + + + Represents the "Else" statement that begins an "Else" block. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + The "Try" statement that begins the "Try" block. + + + A list of statements to be executed. + + + A list of "Catch" blocks which may be executed if an exception is thrown while + executing the statements in the "Try" block. + + + A "Finally" block to be executed before execution leaves the "Try" block. + + + The "End Try" statement. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + A list of statements to be executed. + + + A list of "Catch" blocks which may be executed if an exception is thrown while + executing the statements in the "Try" block. + + + A "Finally" block to be executed before execution leaves the "Try" block. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + + + Represents the "Try" statement that begins a "Try" block. + + + The "Try" keyword. + + + + + Represents the "Try" statement that begins a "Try" block. + + + + + Represents a "Catch ..." block. + + + The "Catch" statement that begins the "Catch" block. + + + A list of statements to be executed if an exception is caught by the "Catch" + block. + + + + + Represents a "Catch ..." block. + + + The "Catch" statement that begins the "Catch" block. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + The "Catch" keyword. + + + An identifier declaring a new variable or naming an existing variable to store + the exception caught by the "Catch" statement. + + + A simple "As" clause specifying the type of exception to catch. + + + A "When" clause to filter exceptions before catching. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + An identifier declaring a new variable or naming an existing variable to store + the exception caught by the "Catch" statement. + + + A simple "As" clause specifying the type of exception to catch. + + + A "When" clause to filter exceptions before catching. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + + + Represents the "When ..." clause of a "Catch" statement. + + + The "When" keyword. + + + The filter expression to be evaluated. + + + + + Represents the "When ..." clause of a "Catch" statement. + + + The filter expression to be evaluated. + + + + + Represents a "Finally ..." block of a "Try" block. + + + The "Finally" statement that begins the "Finally" block. + + + A list of statements to be executed. + + + + + Represents a "Finally ..." block of a "Try" block. + + + A list of statements to be executed. + + + + + Represents a "Finally ..." block of a "Try" block. + + + + + Represents the "Finally" statement that begins a "Finally" block. + + + The "Finally" keyword. + + + + + Represents the "Finally" statement that begins a "Finally" block. + + + + + Represents the "Error" statement. + + + The "Error" keyword. + + + The expression that represents the error number. + + + + + Represents the "Error" statement. + + + The expression that represents the error number. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + A representing the specific kind of + OnErrorGoToStatementSyntax. One of OnErrorGoToZeroStatement, + OnErrorGoToMinusOneStatement, OnErrorGoToLabelStatement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + A representing the specific kind of + OnErrorGoToStatementSyntax. One of OnErrorGoToZeroStatement, + OnErrorGoToMinusOneStatement, OnErrorGoToLabelStatement. + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Resume Next statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "Resume" keyword. + + + The "Next" + + + + + Represents an OnError Resume Next statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + A representing the specific kind of + ResumeStatementSyntax. One of ResumeStatement, ResumeLabelStatement, + ResumeNextStatement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + A representing the specific kind of + ResumeStatementSyntax. One of ResumeStatement, ResumeLabelStatement, + ResumeNextStatement. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + A representing the specific kind of + ResumeStatementSyntax. One of ResumeStatement, ResumeLabelStatement, + ResumeNextStatement. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + The Select Case statement that begins the block. + + + A list of the contained Case blocks. + + + The End Select statement that ends the block. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + The Select Case statement that begins the block. + + + A list of the contained Case blocks. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + The Select Case statement that begins the block. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + The "Select" keyword. + + + The "Case" keyword, if present. + + + The value that branching is based on. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + The value that branching is based on. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + + + Represents a case statement and its subsequent block. + + + A representing the specific kind of CaseBlockSyntax. One + of CaseBlock, CaseElseBlock. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a case statement and its subsequent block. + + + A representing the specific kind of CaseBlockSyntax. One + of CaseBlock, CaseElseBlock. + + + The statement that begins the case block. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A representing the specific kind of CaseStatementSyntax. + One of CaseStatement, CaseElseStatement. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A representing the specific kind of CaseStatementSyntax. + One of CaseStatement, CaseElseStatement. + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A representing the specific kind of CaseStatementSyntax. + One of CaseStatement, CaseElseStatement. + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + The "Else" part in a Case Else statement. + + + The "Else" keyword. + + + + + The "Else" part in a Case Else statement. + + + + + Represents a single value in a Case. + + + The expression that denotes the value being tested against. + + + + + Represents a range "expression To expression" in a Case. + + + The lower bound of the range. + + + The "To" keyword + + + The upper bound of the range. + + + + + Represents a range "expression To expression" in a Case. + + + The lower bound of the range. + + + The upper bound of the range. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + A representing the specific kind of + RelationalCaseClauseSyntax. One of CaseEqualsClause, CaseNotEqualsClause, + CaseLessThanClause, CaseLessThanOrEqualClause, CaseGreaterThanOrEqualClause, + CaseGreaterThanClause. + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + A representing the specific kind of + RelationalCaseClauseSyntax. One of CaseEqualsClause, CaseNotEqualsClause, + CaseLessThanClause, CaseLessThanOrEqualClause, CaseGreaterThanOrEqualClause, + CaseGreaterThanClause. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + The "SyncLock" keyword. + + + The expression being synchronized on. + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + The expression being synchronized on. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + A representing the specific kind of DoLoopBlockSyntax. + One of SimpleDoLoopBlock, DoWhileLoopBlock, DoUntilLoopBlock, DoLoopWhileBlock, + DoLoopUntilBlock. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + A representing the specific kind of DoLoopBlockSyntax. + One of SimpleDoLoopBlock, DoWhileLoopBlock, DoUntilLoopBlock, DoLoopWhileBlock, + DoLoopUntilBlock. + + + The Do statement that begins the block. + + + The Loop statement that ends the block. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + + + The Do statement that begins a Do-Loop block. + + + A representing the specific kind of DoStatementSyntax. + One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + A representing the specific kind of DoStatementSyntax. + One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + A representing the specific kind of DoStatementSyntax. + One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + + + The Loop statement that begins a Do-Loop block. + + + A representing the specific kind of LoopStatementSyntax. + One of SimpleLoopStatement, LoopWhileStatement, LoopUntilStatement. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + A representing the specific kind of LoopStatementSyntax. + One of SimpleLoopStatement, LoopWhileStatement, LoopUntilStatement. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + A representing the specific kind of LoopStatementSyntax. + One of SimpleLoopStatement, LoopWhileStatement, LoopUntilStatement. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + A representing the specific kind of + WhileOrUntilClauseSyntax. One of WhileClause, UntilClause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + The While statement that begins a While...End While block. This statement + always occurs as the Begin of a WhileBlock. + + + The "While" keyword. + + + The boolean expression that controls the While loop. + + + + + The While statement that begins a While...End While block. This statement + always occurs as the Begin of a WhileBlock. + + + The boolean expression that controls the While loop. + + + + + Represents a For block, including the introducing statement, the body and the + "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For statement that begins the block. + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + + + Represents a For block, including the introducing statement, the body and the + "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For statement that begins the block. + + + + + Represents a For Each block, including the introducing statement, the body and + the "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For Each statement that begins the block. + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + + + Represents a For Each block, including the introducing statement, the body and + the "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For Each statement that begins the block. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + The "For" keyword. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The "=" token. + + + The expression denoting the initial value of the iteration. + + + The "To" keyword. + + + The expression denoting the final value of the iteration. + + + The optional Step clause. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The expression denoting the initial value of the iteration. + + + The expression denoting the final value of the iteration. + + + The optional Step clause. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The expression denoting the initial value of the iteration. + + + The expression denoting the final value of the iteration. + + + + + The Step clause in a For Statement. + + + The "Step" keyword. + + + The expression denoting the step increment. + + + + + The Step clause in a For Statement. + + + The expression denoting the step increment. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + The "For" keyword. + + + The "Each" keyword. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The "In" keyword. + + + The expression denoting the collection to iterate over. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The expression denoting the collection to iterate over. + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + The "Next" keyword. + + + The variables in the Next statement, if present + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + The variables in the Next statement, if present + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + The "Using" keyword. + + + If the Using statement is of a form that does not declare a new variable, this + is the expression used in the using. Otherwise, Nothing is returned. + + + If the Using statement is of a form that declares one or more new variables, + this is the list of variable declarations. Otherwise, Nothing is returned. + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + If the Using statement is of a form that does not declare a new variable, this + is the expression used in the using. Otherwise, Nothing is returned. + + + If the Using statement is of a form that declares one or more new variables, + this is the list of variable declarations. Otherwise, Nothing is returned. + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + + + Represents a Throw statement. + + + The "Throw" keyword + + + The expression denoting the value being thrown. + + + + + Represents a Throw statement. + + + The expression denoting the value being thrown. + + + + + Represents a Throw statement. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + A representing the specific kind of + AssignmentStatementSyntax. One of SimpleAssignmentStatement, + MidAssignmentStatement, AddAssignmentStatement, SubtractAssignmentStatement, + MultiplyAssignmentStatement, DivideAssignmentStatement, + IntegerDivideAssignmentStatement, ExponentiateAssignmentStatement, + LeftShiftAssignmentStatement, RightShiftAssignmentStatement, + ConcatenateAssignmentStatement. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a left-hand side of a MidAssignment statement. + + + The "Mid" possibly followed by a type character. + + + The argument list. + + + + + Represents a left-hand side of a MidAssignment statement. + + + The "Mid" possibly followed by a type character. + + + The argument list. + + + + + Represent a call statement (also known as a invocation statement). + + + The "Call" keyword. + + + The expression denoting the call. This could be an Invocation or a MemberAccess + (in the case where no parentheses were supplied.) + + + + + Represent a call statement (also known as a invocation statement). + + + The expression denoting the call. This could be an Invocation or a MemberAccess + (in the case where no parentheses were supplied.) + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The event being accessed. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The event being accessed. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + A representing the specific kind of + AddRemoveHandlerStatementSyntax. One of AddHandlerStatement, + RemoveHandlerStatement. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + A representing the specific kind of + AddRemoveHandlerStatementSyntax. One of AddHandlerStatement, + RemoveHandlerStatement. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The delegate being added or removed. + + + + + Represent a RaiseEvent statement. + + + The "RaiseEvent" keyword + + + The name of the event being raised. + + + The argument list, if present. + + + + + Represent a RaiseEvent statement. + + + The name of the event being raised. + + + The argument list, if present. + + + + + Represent a RaiseEvent statement. + + + The name of the event being raised. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + The "With" keyword. + + + The expression that is the operand of the With statement. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + The expression that is the operand of the With statement. + + + + + Represents a ReDim statement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + A representing the specific kind of + ReDimStatementSyntax. One of ReDimStatement, ReDimPreserveStatement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + A representing the specific kind of + ReDimStatementSyntax. One of ReDimStatement, ReDimPreserveStatement. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + A representing the specific kind of + ReDimStatementSyntax. One of ReDimStatement, ReDimPreserveStatement. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement clause. + + + The target of the ReDim statement. + + + The ArraySizeInitializationModifier. + + + + + Represents an "Erase" statement. + + + The "Erase" keyword. + + + A list of expressions denoting the arrays to erase. + + + + + Represents an "Erase" statement. + + + A list of expressions denoting the arrays to erase. + + + + + Represents an "Erase" statement. + + + A list of expressions denoting the arrays to erase. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + A representing the specific kind of + LiteralExpressionSyntax. One of CharacterLiteralExpression, + TrueLiteralExpression, FalseLiteralExpression, NumericLiteralExpression, + DateLiteralExpression, StringLiteralExpression, NothingLiteralExpression. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a parenthesized expression. + + + The "(" token + + + The expression inside the parentheses. + + + The ")" token + + + + + Represents a parenthesized expression. + + + The expression inside the parentheses. + + + + + Represents a tuple literal expression. + + + The "(" token + + + The list of tuple arguments. + + + The ")" token + + + + + Represents a tuple literal expression. + + + The list of tuple arguments. + + + + + Represents a tuple literal expression. + + + The list of tuple arguments. + + + + + Represents a tuple type expression. + + + The "(" token + + + The list of tuple elements. + + + The ")" token + + + + + Represents a tuple type expression. + + + The list of tuple elements. + + + + + Represents a tuple type expression. + + + The list of tuple elements. + + + + + Represents a single declaration of a tuple element supplying only the type. + + + The type-name part of the tuple element syntax. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + The name of the element. + + + A simple "As" clause specifying the type of the tuple element. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + The name of the element. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + The name of the element. + + + + + Identifies the special instance "Me" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "Me" + + + + + Identifies the special instance "MyBase" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "MyBase" + + + + + Identifies the special instance "MyClass" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "MyClass" + + + + + Represents a GetType expression. + + + The "GetType" keyword. + + + The "(" token. + + + The type to get the Type object for. This can be an open generic type. + + + The ")" token. + + + + + Represents a GetType expression. + + + The type to get the Type object for. This can be an open generic type. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The expression being tested. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The expression being tested. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + A representing the specific kind of + TypeOfExpressionSyntax. One of TypeOfIsExpression, TypeOfIsNotExpression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + A representing the specific kind of + TypeOfExpressionSyntax. One of TypeOfIsExpression, TypeOfIsNotExpression. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a GetXmlNamespace expression. + + + The "GetXmlNamespace" keyword. + + + The "(" token. + + + The Xml namespace name being referenced. + + + The ")" token. + + + + + Represents a GetXmlNamespace expression. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + A representing the specific kind of + MemberAccessExpressionSyntax. One of SimpleMemberAccessExpression, + DictionaryAccessExpression. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + A representing the specific kind of + MemberAccessExpressionSyntax. One of SimpleMemberAccessExpression, + DictionaryAccessExpression. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The "@" part of .@ or the second "." of "...". + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The "@" part of .@ or the second "." of "...". + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The "@" part of .@ or the second "." of "...". + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + A representing the specific kind of + XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, + XmlDescendantAccessExpression, XmlAttributeAccessExpression. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + A representing the specific kind of + XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, + XmlDescendantAccessExpression, XmlAttributeAccessExpression. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The "@" part of .@ or the second "." of "...". + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + A representing the specific kind of + XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, + XmlDescendantAccessExpression, XmlAttributeAccessExpression. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + The target of the call or index expression. + + + The argument list. + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type of the object being initialized. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + An optional From or With clause to initialize the new object. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type of the object being initialized. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + An optional From or With clause to initialize the new object. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + The type of the object being initialized. + + + + + Represents a New expression that create an object of anonymous type. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The With clause to initialize the new object. + + + + + Represents a New expression that create an object of anonymous type. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The With clause to initialize the new object. + + + + + Represents a New expression that create an object of anonymous type. + + + The With clause to initialize the new object. + + + + + Represents an expression that creates a new array. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The element type of the array being created. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + A list of array modifiers such as "()" or "(,)". If no array modifiers were + present, an empty list is returned. + + + The initializer including the braces. + + + + + Represents an expression that creates a new array. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The element type of the array being created. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + The initializer including the braces. + + + + + Represents an expression that creates a new array. + + + The element type of the array being created. + + + The initializer including the braces. + + + + + Represents an expression that creates a new array without naming the element + type. + + + The "{" token. + + + The list of initializers between the braces. + + + The "}" token. + + + + + Represents an expression that creates a new array without naming the element + type. + + + The list of initializers between the braces. + + + + + Represents an expression that creates a new array without naming the element + type. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The expression being cast. + + + The type the expression is being cast to. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The expression being cast. + + + The type the expression is being cast to. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The expression being cast. + + + The type the expression is being cast to. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + The keyword that was used in the cast operation. + + + The "(" token. + + + The expression being cast. + + + The ")" token. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + The keyword that was used in the cast operation. + + + The expression being cast. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + A representing the specific kind of + BinaryExpressionSyntax. One of AddExpression, SubtractExpression, + MultiplyExpression, DivideExpression, IntegerDivideExpression, + ExponentiateExpression, LeftShiftExpression, RightShiftExpression, + ConcatenateExpression, ModuloExpression, EqualsExpression, NotEqualsExpression, + LessThanExpression, LessThanOrEqualExpression, GreaterThanOrEqualExpression, + GreaterThanExpression, IsExpression, IsNotExpression, LikeExpression, + OrExpression, ExclusiveOrExpression, AndExpression, OrElseExpression, + AndAlsoExpression. + + + The left operand. + + + The right operand. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + A representing the specific kind of + UnaryExpressionSyntax. One of UnaryPlusExpression, UnaryMinusExpression, + NotExpression, AddressOfExpression. + + + The token that is the operator. + + + The expression being operated on. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The "If" keyword + + + The "(" token + + + The first expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The ")" token + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The first expression inside the parentheses. + + + The second expression inside the parentheses. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The "If" keyword + + + The "(" token + + + The first expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The ")" token + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The first expression inside the parentheses. + + + The second expression inside the parentheses. + + + The second expression inside the parentheses. + + + + + Represents a single line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a single line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a single line lambda expression. + + + A representing the specific kind of + SingleLineLambdaExpressionSyntax. One of SingleLineFunctionLambdaExpression, + SingleLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + A representing the specific kind of + MultiLineLambdaExpressionSyntax. One of MultiLineFunctionLambdaExpression, + MultiLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + A representing the specific kind of + MultiLineLambdaExpressionSyntax. One of MultiLineFunctionLambdaExpression, + MultiLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + + + Represents the header part of a lambda expression + + + A representing the specific kind of LambdaHeaderSyntax. + One of SubLambdaHeader, FunctionLambdaHeader. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A representing the specific kind of LambdaHeaderSyntax. + One of SubLambdaHeader, FunctionLambdaHeader. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + + + Represents a parenthesized argument list. + + + The "(" token. + + + The list of arguments. This may be empty. Omitted argument are represented by + an OmittedArgumentSyntax node. + + + The ")" token. + + + + + Represents a parenthesized argument list. + + + The list of arguments. This may be empty. Omitted argument are represented by + an OmittedArgumentSyntax node. + + + + + Represents a parenthesized argument list. + + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + An empty token because all non terminals must have a token. + + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + + + Represents an argument that is just an optional argument name and an + expression. + + + The optional name and ":=" prefix of a named argument. + + + The expression that is the argument. + + + + + Represents an argument that is just an optional argument name and an + expression. + + + The expression that is the argument. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + The name used to identify the named argument. + + + The ":=" token. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + The name used to identify the named argument. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + The lower bound of the range. This is typically the integer constant zero. + + + The "To" keyword. + + + The upper bound of the range. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + The lower bound of the range. This is typically the integer constant zero. + + + The upper bound of the range. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + A list of all the query operators in this query expression. This list always + contains at least one operator. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + A list of all the query operators in this query expression. This list always + contains at least one operator. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + The name of the range variable being defined. + + + Describes the type of the variable being defined. + + + The "In" keyword. + + + The expression that serves as the source of items for the range variable. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + The name of the range variable being defined. + + + Describes the type of the variable being defined. + + + The expression that serves as the source of items for the range variable. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + The name of the range variable being defined. + + + The expression that serves as the source of items for the range variable. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the expression. + + + The expression used to initialize the expression variable. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + The expression used to initialize the expression variable. + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the aggregation + expression. + + + The name of the aggregation function. The "Group" aggregation function is + represented by the identifier "Group". + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + The name of the aggregation function. The "Group" aggregation function is + represented by the identifier "Group". + + + + + Represents the name and optional type of an expression range variable. + + + The name of the variable being defined. + + + Describes the type of the variable being defined. + + + The "=" token. + + + + + Represents the name and optional type of an expression range variable. + + + The name of the variable being defined. + + + Describes the type of the variable being defined. + + + + + Represents the name and optional type of an expression range variable. + + + The name of the variable being defined. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + The name of the aggregation function. + + + The "(" token if present. + + + The argument to the aggregation function. + + + The ")" token, if present. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + The name of the aggregation function. + + + The argument to the aggregation function. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + The name of the aggregation function. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + The name of the aggregation function. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + The "Group" keyword. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + The "From" keyword. + + + The list of collection variables declared by this From operator. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + The list of collection variables declared by this From operator. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + The list of collection variables declared by this From operator. + + + + + Represents a "Let" query operator. + + + The "Let" keyword. + + + The list of expression range variable being defined by the Let operator. + + + + + Represents a "Let" query operator. + + + The list of expression range variable being defined by the Let operator. + + + + + Represents a "Let" query operator. + + + The list of expression range variable being defined by the Let operator. + + + + + Represents an Aggregate query operator. + + + The "Aggregate" keyword. + + + The list of collection range variables declared by this Aggregate operator. + + + A list of additional query operators. It may be empty. + + + The "Into" keyword. + + + The list of new variables being defined by the aggregation. + + + + + Represents an Aggregate query operator. + + + The list of collection range variables declared by this Aggregate operator. + + + A list of additional query operators. It may be empty. + + + The list of new variables being defined by the aggregation. + + + + + Represents an Aggregate query operator. + + + The list of collection range variables declared by this Aggregate operator. + + + The list of new variables being defined by the aggregation. + + + + + Represents the "Distinct" query operator. + + + The "Distinct" keyword. + + + + + Represents the "Distinct" query operator. + + + + + Represents a "Where" query operator. + + + The "Where" keyword. + + + The boolean expression used for filtering. + + + + + Represents a "Where" query operator. + + + The boolean expression used for filtering. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + A representing the specific kind of + PartitionWhileClauseSyntax. One of SkipWhileClause, TakeWhileClause. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + A representing the specific kind of + PartitionWhileClauseSyntax. One of SkipWhileClause, TakeWhileClause. + + + The "Skip" or "Take" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + A representing the specific kind of + PartitionClauseSyntax. One of SkipClause, TakeClause. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents the "Group By" query operator. + + + The "Group" keyword. + + + The optional list of variables being grouped; the contents of the Group clause. + If none were specified, an empty list is returned. + + + The "By" keyword. + + + The key values being used for grouping. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Group By" query operator. + + + The optional list of variables being grouped; the contents of the Group clause. + If none were specified, an empty list is returned. + + + The key values being used for grouping. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Group By" query operator. + + + The key values being used for grouping. + + + The list of new variables that calculate aggregations. + + + + + Represents the "expression Equals expression" condition in a Join. + + + The left expression in the Join condition. + + + The "Equals" keyword. + + + The right expression in the Join condition. + + + + + Represents the "expression Equals expression" condition in a Join. + + + The left expression in the Join condition. + + + The right expression in the Join condition. + + + + + Represents a Join query operator. + + + The "Join" keyword. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The "On" keyword. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Represents a Join query operator. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Represents a Join query operator. + + + Defines the collection range variables being joined to. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Represents the "Group Join" query operator. + + + The "Group" keyword. + + + The "Join" keyword. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The "On" keyword. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + The "Into" keyword. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Group Join" query operator. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Group Join" query operator. + + + Defines the collection range variables being joined to. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Order By" query operator. + + + The "Order" keyword + + + The "By" keyword. + + + The list of OrderExpression's to sort by. + + + + + Represents the "Order By" query operator. + + + The list of OrderExpression's to sort by. + + + + + Represents the "Order By" query operator. + + + The list of OrderExpression's to sort by. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + A representing the specific kind of OrderingSyntax. One + of AscendingOrdering, DescendingOrdering. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + A representing the specific kind of OrderingSyntax. One + of AscendingOrdering, DescendingOrdering. + + + The expression to sort by. + + + + + Represents the "Select" query operator. + + + The "Select" keyword. + + + The list of expression range variables being defined by the Select query + operator. + + + + + Represents the "Select" query operator. + + + The list of expression range variables being defined by the Select query + operator. + + + + + Represents the "Select" query operator. + + + The list of expression range variables being defined by the Select query + operator. + + + + + Represents an XML Document literal expression. + + + + + Represents an XML Document literal expression. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + + + Represents an XML element with content in an XML literal expression. + + + + + Represents an XML element with content in an XML literal expression. + + + + + Represents Xml text. + + + A list of all the text tokens in the Xml text. This list always contains at + least one token. + + + + + Represents Xml text. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + Represents an empty XML element of the form <element /> + + + + + Represents an empty XML element of the form <element /> + + + + + Represents an empty XML element of the form <element /> + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + + + Represents an XML CDATA section in an XML literal expression. + + + + + Represents an XML CDATA section in an XML literal expression. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + The type of the elements of the array. + + + Represents the list of "()" or "(,,)" modifiers on the array type. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + The type of the elements of the array. + + + + + A type name that represents a nullable type, such as "Integer?". + + + The kind of type that is this type is a nullable of. Cannot be an array type or + a nullable type. + + + The "?" token. + + + + + A type name that represents a nullable type, such as "Integer?". + + + The kind of type that is this type is a nullable of. Cannot be an array type or + a nullable type. + + + + + Represents an occurrence of a Visual Basic built-in type such as Integer or + String in source code. + + + The keyword that was used to describe the built-in type. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + The identifier in the name. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + The identifier in the name. + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + The identifier in the name. + + + The generic argument list. + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + The identifier in the name. + + + The generic argument list. + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + The part of the name that appears to the left of the dot. This can itself be + any name. + + + The "." token that separates the names. + + + The part of the name that appears to the right of the dot. This must be a + simple identifier. + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + The part of the name that appears to the left of the dot. This can itself be + any name. + + + The part of the name that appears to the right of the dot. This must be a + simple identifier. + + + + + Represents a name in the global namespace. + + + The "Global" keyword. + + + + + Represents a name in the global namespace. + + + + + Represents a parenthesized list of generic type arguments. + + + The "(" token. + + + The "Of" keyword. + + + A list of all the type arguments. + + + The ")" token. + + + + + Represents a parenthesized list of generic type arguments. + + + A list of all the type arguments. + + + + + Represents a parenthesized list of generic type arguments. + + + A list of all the type arguments. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + Represent a Yield statement. + + + The "Yield" keyword. + + + The expression whose value is being yielded. + + + + + Represent a Yield statement. + + + The expression whose value is being yielded. + + + + + Represents an Await expression. + + + The "Await" keyword. + + + The expression being awaited. + + + + + Represents an Await expression. + + + The expression being awaited. + + + + + Represents an Xml NCName per Namespaces in XML 1.0 + + + The actual text of this token. + + + + + Represents an Xml NCName per Namespaces in XML 1.0 + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + A representing the specific kind of XmlTextTokenSyntax. + One of XmlTextLiteralToken, XmlEntityLiteralToken, + DocumentationCommentLineBreakToken. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + A representing the specific kind of XmlTextTokenSyntax. + One of XmlTextLiteralToken, XmlEntityLiteralToken, + DocumentationCommentLineBreakToken. + + + The actual text of this token. + + + + + Represents literal character data in interpolated string expression. + + + The actual text of this token. + + + + + Represents literal character data in interpolated string expression. + + + The actual text of this token. + + + + + Represents a Decimal literal token. + + + The actual text of this token. + + + + + Represents a Decimal literal token. + + + The actual text of this token. + + + + + Represents a Date literal token. + + + The actual text of this token. + + + + + Represents a Date literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + The list of tokens that were skipped by the parser. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in + source. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in + source. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + The expression on the left-hand-side of the "?". + + + "?" token. + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + The expression on the left-hand-side of the "?". + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + Represents a NameOf expression. + + + The "NameOf" keyword. + + + The "(" token. + + + The argument. + + + The ")" token. + + + + + Represents a NameOf expression. + + + The argument. + + + + + Represents an interpolated string expression. + + + The opening '$"', '$“', or '$”' token. + + + The contents of the interpolated string. + + + The closing '"', '”', or '“' token. + + + + + Represents an interpolated string expression. + + + The contents of the interpolated string. + + + + + Represents an interpolated string expression. + + + The contents of the interpolated string. + + + + + Represents literal text content in an interpolated string. + + + The text token. + + + + + Represents literal text content in an interpolated string. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + The opening curly brace '{' token. + + + The expression whose formatted value should be embedded in the resultant + string. + + + Optional. The alignment clause ',alignment' of the embedded expression. + + + Optional. The format string clause ':formatString' of the embedded expression. + + + The closing curly brace '}' token of the embedded expression. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + The expression whose formatted value should be embedded in the resultant + string. + + + Optional. The alignment clause ',alignment' of the embedded expression. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + The expression whose formatted value should be embedded in the resultant + string. + + + + + Represents an alignment clause ',alignment' of an interpolated string embedded + expression. + + + The comma ',' token. + + + An expression representing the alignment of the interpolated expression. + + + + + Represents an alignment clause ',alignment' of an interpolated string embedded + expression. + + + An expression representing the alignment of the interpolated expression. + + + + + Represents a format string clause ':formatString' of an interpolated string + embedded expression. + + + The ':' token. + + + The format string. + + + + + Represents a format string clause ':formatString' of an interpolated string + embedded expression. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + A representing the specific kind of SyntaxTrivia. One of + WhitespaceTrivia, EndOfLineTrivia, ColonTrivia, CommentTrivia, + ConflictMarkerTrivia, LineContinuationTrivia, + DocumentationCommentExteriorTrivia, DisabledTextTrivia. + + + The actual text of this token. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + The "#" token in a preprocessor directive. + + + The "Const" keyword. + + + The name of the pre-processing constant being defined. + + + The "=" token. + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + The name of the pre-processing constant being defined. + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + The name of the pre-processing constant being defined. + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + A representing the specific kind of + IfDirectiveTriviaSyntax. One of IfDirectiveTrivia, ElseIfDirectiveTrivia. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + A representing the specific kind of + IfDirectiveTriviaSyntax. One of IfDirectiveTrivia, ElseIfDirectiveTrivia. + + + + + Represents an #Else pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #Else pre-processing directive appearing in source. + + + + + Represents an #End If pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #End If pre-processing directive appearing in source. + + + + + Represents the beginning of a #Region directive appearing in source. + + + The "#" token in a preprocessor directive. + + + The "Region" keyword. + + + The label of the code region being defined. + + + + + Represents the beginning of a #Region directive appearing in source. + + + + + Represents an #End Region directive appearing in source. + + + The "#" token in a preprocessor directive. + + + The "End" keyword. + + + The "Region" keyword. + + + + + Represents an #End Region directive appearing in source. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + + + Represents an #r directive appearing in scripts. + + + The "#" token in a preprocessor directive. + + + + + Represents an #r directive appearing in scripts. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + The "#" token in a preprocessor directive. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + + + A trivia with kind EndOfLineTrivia containing both the carriage return And line feed characters. + + + + + A trivia with kind EndOfLineTrivia containing a single line feed character. + + + + + A trivia with kind EndOfLineTrivia containing a single carriage return character. + + + + + A trivia with kind WhitespaceTrivia containing a single space character. + + + + + A trivia with kind WhitespaceTrivia containing a single tab character. + + + + + An elastic trivia with kind EndOfLineTrivia containing both the carriage return And line feed characters. + Elastic trivia are used to denote trivia that was Not produced by parsing source text, And are usually Not + preserved during formatting. + + + + + An elastic trivia with kind EndOfLineTrivia containing a single line feed character. Elastic trivia are used + to denote trivia that was Not produced by parsing source text, And are usually Not preserved during + formatting. + + + + + An elastic trivia with kind EndOfLineTrivia containing a single carriage return character. Elastic trivia + are used to denote trivia that was Not produced by parsing source text, And are usually Not preserved during + formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing a single space character. Elastic trivia are used to + denote trivia that was Not produced by parsing source text, And are usually Not preserved during formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing a single tab character. Elastic trivia are used to + denote trivia that was Not produced by parsing source text, And are usually Not preserved during formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing no characters. Elastic marker trivia are included + automatically by factory methods when trivia Is Not specified. Syntax formatting will replace elastic + markers with appropriate trivia. + + + + + Creates a trivia with kind EndOfLineTrivia containing the specified text. + + The text of the end of line. Any text can be specified here, however only carriage return And + line feed characters are recognized by the parser as end of line. + + + + Creates a trivia with kind EndOfLineTrivia containing the specified text. Elastic trivia are used to + denote trivia that was Not produced by parsing source text, And are usually Not preserved during formatting. + + The text of the end of line. Any text can be specified here, however only carriage return And + line feed characters are recognized by the parser as end of line. + + + + Creates a trivia with kind WhitespaceTrivia containing the specified text. + + The text of the whitespace. Any text can be specified here, however only specific + whitespace characters are recognized by the parser. + + + + Creates a trivia with kind WhitespaceTrivia containing the specified text. Elastic trivia are used to + denote trivia that was Not produced by parsing source text, And are usually Not preserved during formatting. + + The text of the whitespace. Any text can be specified here, however only specific + whitespace characters are recognized by the parser. + + + + Names on the right of qualified names and member access expressions are not stand-alone expressions. + This method returns the appropriate parent of name syntax nodes that are on right of these constructs. + + + + Creates a token with kind IntegerLiteralToken from a 4-byte signed integer value. + The 4-byte signed integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 4-byte signed integer value. + The raw text of the literal. The 4-byte signed integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 4-byte signed integer value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte signed integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind IntegerLiteralToken from a 4-byte unsigned integer + value. + The 4-byte unsigned integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 4-byte unsigned integer value. + The raw text of the literal. + The 4-byte unsigned integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 4-byte unsigned integer value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte unsigned integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind IntegerLiteralToken from an 8-byte signed integer value. + The 8-byte signed integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 8-byte signed integer value. + The raw text of the literal. + The 8-byte signed integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 8-byte signed integer value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte signed integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind IntegerLiteralToken from an 8-byte unsigned integer value. + The 8-byte unsigned integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 8-byte unsigned integer value. + The raw text of the literal. + The 8-byte unsigned integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 8-byte unsigned integer value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte unsigned integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind FloatingLiteralToken from a 4-byte floating point value. + The 4-byte floating point value to be represented by the returned token. + + + Creates a token with kind FloatingLiteralToken from the text and corresponding 4-byte floating point value. + The raw text of the literal. + The 4-byte floating point value to be represented by the returned token. + + + Creates a token with kind FloatingLiteralToken from the text and corresponding 4-byte floating point value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte floating point value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind FloatingLiteralToken from an 8-byte floating point value. + The 8-byte floating point value to be represented by the returned token. + + + Creates a token with kind FloatingLiteralToken from the text and corresponding 8-byte floating point value. + The raw text of the literal. + The 8-byte floating point value to be represented by the returned token. + + + Creates a token with kind FloatingLiteralToken from the text and corresponding 8-byte floating point value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte floating point value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind DecimalLiteralToken from a decimal value. + The decimal value to be represented by the returned token. + + + Creates a token with kind DecimalLiteralToken from the text and corresponding decimal value. + The raw text of the literal. + The decimal value to be represented by the returned token. + + + Creates a token with kind DecimalLiteralToken from the text and corresponding decimal value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The decimal value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind StringLiteralToken from a string value. + The string value to be represented by the returned token. + + + Creates a token with kind StringLiteralToken from the text and corresponding string value. + The raw text of the literal, including quotes and escape sequences. + The string value to be represented by the returned token. + + + Creates a token with kind StringLiteralToken from the text and corresponding string value. + A list of trivia immediately preceding the token. + The raw text of the literal, including quotes and escape sequences. + The string value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind CharacterLiteralToken from a character value. + The character value to be represented by the returned token. + + + Creates a token with kind CharacterLiteralToken from the text and corresponding character value. + The raw text of the literal, including quotes and escape sequences. + The character value to be represented by the returned token. + + + Creates a token with kind CharacterLiteralToken from the text and corresponding character value. + A list of trivia immediately preceding the token. + The raw text of the literal, including quotes and escape sequences. + The character value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates an xml documentation comment that abstracts xml syntax creation. + + + A list of xml node syntax that will be the content within the xml documentation comment + (e.g. a summary element, a returns element, exception element and so on). + + + + + Creates a summary element within an xml documentation comment. + + A list of xml node syntax that will be the content within the summary element. + + + + Creates a summary element within an xml documentation comment. + + A list of xml node syntax that will be the content within the summary element. + + + + Creates a see element within an xml documentation comment. + + A cref syntax node that points to the referenced item (e.g. a class, struct). + + + + Creates a seealso element within an xml documentation comment. + + A cref syntax node that points to the referenced item (e.g. a class, struct). + + + + Creates a seealso element within an xml documentation comment. + + The uri of the referenced item. + A list of xml node syntax that will be used as the link text for the referenced item. + + + + Creates a threadsafety element within an xml documentation comment. + + + + + Creates a threadsafety element within an xml documentation comment. + + Indicates whether static member of this type are safe for multi-threaded operations. + Indicates whether instance members of this type are safe for multi-threaded operations. + + + + + Creates a syntax node for a name attribute in a xml element within a xml documentation comment. + + The value of the name attribute. + + + + Creates a syntax node for a preliminary element within a xml documentation comment. + + + + + Creates a syntax node for a cref attribute within a xml documentation comment. + + The used for the xml cref attribute syntax. + + + + Creates a syntax node for a cref attribute within a xml documentation comment. + + The used for the xml cref attribute syntax. + The kind of the quote for the referenced item in the cref attribute. + + + + Creates a remarks element within an xml documentation comment. + + A list of xml node syntax that will be the content within the remarks element. + + + + Creates a remarks element within an xml documentation comment. + + A list of xml node syntax that will be the content within the remarks element. + + + + Creates a returns element within an xml documentation comment. + + A list of xml node syntax that will be the content within the returns element. + + + + Creates a returns element within an xml documentation comment. + + A list of xml node syntax that will be the content within the returns element. + + + + Creates the syntax representation of an xml value element (e.g. for xml documentation comments). + + A list of xml syntax nodes that represents the content of the value element. + + + + Creates the syntax representation of an xml value element (e.g. for xml documentation comments). + + A list of xml syntax nodes that represents the content of the value element. + + + + Creates the syntax representation of an exception element within xml documentation comments. + + Syntax representation of the reference to the exception type. + A list of syntax nodes that represents the content of the exception element. + + + + Creates the syntax representation of an exception element within xml documentation comments. + + Syntax representation of the reference to the exception type. + A list of syntax nodes that represents the content of the exception element. + + + + Creates the syntax representation of a permission element within xml documentation comments. + + Syntax representation of the reference to the permission type. + A list of syntax nodes that represents the content of the permission element. + + + + Creates the syntax representation of a permission element within xml documentation comments. + + Syntax representation of the reference to the permission type. + A list of syntax nodes that represents the content of the permission element. + + + + Creates the syntax representation of an example element within xml documentation comments. + + A list of syntax nodes that represents the content of the example element. + + + + Creates the syntax representation of an example element within xml documentation comments. + + A list of syntax nodes that represents the content of the example element. + + + + Creates the syntax representation of a para element within xml documentation comments. + + A list of syntax nodes that represents the content of the para element. + + + + Creates the syntax representation of a para element within xml documentation comments. + + A list of syntax nodes that represents the content of the para element. + + + + Creates the syntax representation of a param element within xml documentation comments (e.g. for + documentation of method parameters). + + The name of the parameter. + A list of syntax nodes that represents the content of the param element (e.g. + the description and meaning of the parameter). + + + + Creates the syntax representation of a param element within xml documentation comments (e.g. for + documentation of method parameters). + + The name of the parameter. + A list of syntax nodes that represents the content of the param element (e.g. + the description and meaning of the parameter). + + + + Creates the syntax representation of a paramref element within xml documentation comments (e.g. for + referencing particular parameters of a method). + + The name of the referenced parameter. + + + + Creates the syntax representation of a see element within xml documentation comments, + that points to the 'null' language keyword. + + + + + Creates the syntax representation of a see element within xml documentation comments, + that points to a language keyword. + + The language keyword to which the see element points to. + + + + Creates the syntax representation of a placeholder element within xml documentation comments. + + A list of syntax nodes that represents the content of the placeholder element. + + + + Creates the syntax representation of a placeholder element within xml documentation comments. + + A list of syntax nodes that represents the content of the placeholder element. + + + + Creates the syntax representation of a named empty xml element within xml documentation comments. + + The name of the empty xml element. + + + + Creates the syntax representation of a named xml element within xml documentation comments. + + The name of the empty xml element. + A list of syntax nodes that represents the content of the xml element. + + + + Creates the syntax representation of a named xml element within xml documentation comments. + + The name of the empty xml element. + A list of syntax nodes that represents the content of the xml element. + + + + Creates the syntax representation of an xml element that spans multiple text lines. + + The name of the xml element. + A list of syntax nodes that represents the content of the xml multi line element. + + + + Creates the syntax representation of an xml element that spans multiple text lines. + + The name of the xml element. + A list of syntax nodes that represents the content of the xml multi line element. + + + + Creates the syntax representation of an xml text that contains a newline token with a documentation comment + exterior trivia at the end (continued documentation comment). + + The raw text within the new line. + + + + Creates the syntax representation of an xml newline token with a documentation comment exterior trivia at + the end (continued documentation comment). + + The raw text within the new line. + + + + Creates a token with kind XmlTextLiteralNewLineToken. + + The raw text of the literal. + The xml text new line value. + A list of trivia immediately preceding the token. + A list of trivia immediately following the token. + + + + Creates the syntax representation of an xml newline token for xml documentation comments. + + The raw text within the new line. + + If set to true, a documentation comment exterior token will be added to the trailing trivia + of the new token. + + + + Generates the syntax representation of a xml text node (e.g. for xml documentation comments). + + The string literal used as the text of the xml text node. + + + + Generates the syntax representation of a xml text node (e.g. for xml documentation comments). + + A list of text tokens used as the text of the xml text node. + + + + Generates the syntax representation of an xml text literal. + + The text used within the xml text literal. + + + + Generates the syntax representation of an xml text literal. + + The raw text of the literal. + The text used within the xml text literal. + + + + Helper method that replaces less-than and greater-than characters with brackets. + + The original token that is to be replaced. + The new rewritten token. + Returns the new rewritten token with replaced characters. + + + + Determines if two trees are the same, disregarding trivia differences. + + The original tree. + The new tree. + + True to ignore any differences of nodes inside bodies of methods, operators, constructors and accessors, and field and auto-property initializers, + otherwise all nodes and tokens must be equivalent. + + + + + Determines if two syntax nodes are the same, disregarding trivia differences. + + The old node. + The new node. + + True to ignore any differences of nodes inside bodies of methods, operators, constructors and accessors, and field and auto-property initializers, + otherwise all nodes and tokens must be equivalent. + + + + + Determines if two syntax nodes are the same, disregarding trivia differences. + + The old node. + The new node. + + If specified called for every child syntax node (not token) that is visited during the comparison. + It it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Determines if two syntax tokens are the same, disregarding trivia differences. + + The old token. + The new token. + + + + Determines if two lists of tokens are the same, disregarding trivia differences. + + The old token list. + The new token list. + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If specified called for every child syntax node (not token) that is visited during the comparison. + It returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If specified called for every child syntax node (not token) that is visited during the comparison. + It returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Determines if a submission contains a LINQ query not followed by an empty line. + + Examples: + 1. Dim x = 1 returns false since the statement is not a LINQ query + 2. + Dim x = FROM {1, 2, 3} + + return false since the statement is followed by an empty new line. + 3. Dim x = FROM {1, 2, 3} returns true since the LINQ statement is not followed by an empty new line. + + Last expected token of the last statement in a submission. + Top level statement which token is part of. + Token that marks the end of submission. + + + + Determines if a submission is complete. + Returns false if the syntax is valid but incomplete. + Returns true if the syntax is invalid or complete. + Throws in case the tree is null. + Throws in case the tree is not a submission. + + Syntax tree. + + + + Create a new syntax tree from a syntax node. + + + + + Produces a syntax tree by parsing the source text. + + + + + Produces a syntax tree by parsing the source text. + + + + + Produces a syntax tree by parsing the source text. + + + + + Produces a syntax tree by parsing the source text. + + + + +Parse the input for leading trivia. + + The input string + The starting offset in the string + + + + Parse the input for trailing trivia. + + The input string + The starting offset in the string + + + + Parse one token. + + The input string + The starting offset in the string + Scan using rules for the start of a statement + + + + Parse tokens in the input. + Since this API does not create a that owns all produced tokens, + the API may yield surprising results for + the produced tokens and its behavior is generally unspecified. + + The input string + The starting offset in the string + The position of the first token + + + + Parse a name. + + The input string + The starting offset in the string + + + + Parse a type name. + + The input string + The starting offset in the string + + + + Parse a type name. + + The input string + The starting offset in the string + + + + Parse an expression. + + The input string + The starting offset in the string + + + + Parse an executable statement. + + The input string + The starting offset in the string + + + + Parse a compilation unit (a single source file). + + The input string + The starting offset in the string + + + + Parse a parameter list. + + The input string + The starting offset in the string + + + + Parse an argument list. + + The input string + The starting offset in the string + + + + Helper method for wrapping a string and offset in a SourceText. + + + + + Try parse the attribute represented as a stand-alone string like [cref="A.B"] and recognize + 'cref' and 'name' attributes like in documentation-comment mode. This method should only be + used internally from code handling documentation comment includes. + + + + + Create a bracketed identifier. + + + + + Create a bracketed identifier. + + + + + Create a missing identifier. + + + + + Create a missing contextual keyword. + + + + + Create a missing keyword. + + + + + Create a missing punctuation mark. + + + + + Create a missing string literal. + + + + + Create a missing character literal. + + + + + Create a missing integer literal. + + + + + Creates a copy of a token. + + + + The new token + + + + Creates an empty list of syntax nodes. + + The specific type of the element nodes. + + + + Creates a singleton list of syntax nodes. + + The specific type of the element nodes. + The single element node. + + + + Creates a list of syntax nodes. + + The specific type of the element nodes. + A sequence of element nodes. + + + + Creates an empty list of tokens. + + + + + Creates a singleton list of tokens. + + The single token. + + + + Creates a list of tokens. + + An array of tokens. + + + + Creates a list of tokens. + + + + + + Creates an empty list of trivia. + + + + + Creates a singleton list of trivia. + + A single trivia. + + + + Creates a list of trivia. + + An array of trivia. + + + + Creates a list of trivia. + + A sequence of trivia. + + + + Creates an empty separated list. + + The specific type of the element nodes. + + + + Creates a singleton separated list. + + The specific type of the element nodes. + A single node. + + + + Creates a separated list of nodes from a sequence of nodes, synthesizing comma separators in between. + + The specific type of the element nodes. + A sequence of syntax nodes. + + + + Creates a separated list of nodes from a sequence of nodes and a sequence of separator tokens. + + The specific type of the element nodes. + A sequence of syntax nodes. + A sequence of token to be interleaved between the nodes. The number of tokens must + be one less than the number of nodes. + + + + Creates a separated list from a sequence of nodes or tokens. + The sequence must start with a node and alternate between nodes and separator tokens. + + The specific type of the element nodes. + A alternating sequence of nodes and tokens. + + + + Creates a separated list from a . + The must start with a node and alternate between nodes and separator tokens. + + The specific type of the element nodes. + An alternating list of nodes and tokens. + + + + Creates an empty . + + + + + Creates a from a sequence of nodes and tokens. + + A sequence of nodes and tokens. + + + + Creates a from one or more nodes and tokens. + + An array of nodes and tokens. + + + + Provides members for determining Syntax facts about characters and Unicode conversions. + + + + + Return keyword or punctuation text based on SyntaxKind + + + + + Determines if Unicode character represents a whitespace. + + The Unicode character. + A boolean value set to True if character represents whitespace. + + + + Determines if Unicode character represents a XML whitespace. + + The unicode character + A boolean value set to True if character represents XML whitespace. + + + + Determines if the Unicode character is a newline character. + + The Unicode character. + A boolean value set to True if character is a newline character. + + + + Determines if the unicode character is a colon character. + + The unicode character. + A boolean value set to True if character is a colon character. + + + + Determines if the unicode character is a underscore character. + + The unicode character. + A boolean value set to True if character is an underscore character. + + + + Determines if the unicode character is a hash character. + + The unicode character. + A boolean value set to True if character is a hash character. + + + + Determines if the Unicode character can be the starting character of a Visual Basic identifier. + + The Unicode character. + A boolean value set to True if character can be part of a valid start character in an identifier. + + + + Determines if the Unicode character can be a part of a Visual Basic identifier. + + The Unicode character. + A boolean value set to True if character can be part of a valid identifier. + + + + Determines if the name is a valid identifier. + + The identifier name. + A boolean value set to True if name is valid identifier. + + + + Creates a half width form Unicode character string. + + The text representing the original identifier. This can be in full width or half width Unicode form. + A string representing the text in a half width Unicode form. + + + + matches one char or another. + Typical usage is for matching lowercase and uppercase. + + + + + matches one char or another. + it will try normal width and then fullwidth variations. + Typical usage is for matching lowercase and uppercase. + + + + + Determine if the token instance represents a syntax trivia such as comment, whitespace, etc... + + + + + Get all reserved and contextual keywords + + + + + Helper to check whether the token is a predefined type + + True if it is a predefined type + + + + Helper to check whether the token is a predefined type OR Variant keyword + + True if it is a predefined type OR Variant keyword + + + + Returns true if the node is the object of an invocation expression + + + + + Returns true if the node is the operand of an AddressOf expression + + + + + Returns true if the node is the operand of an AddressOf expression, or the object + of an invocation. This is used for special binding rules around the return value variable + inside Functions and Property Get accessors. + + + + + Determines if position is before or within the span of a node, or in the trailing trivia of a node + up to, but not including, a newline or colon trivia (which mark the end of a statement.) + + + + + Determines if position is within the span of a node, or in the trailing trivia of a node + up to, but not including, a newline or colon trivia (which mark the end of a statement.) + + + + + Determines if possibleLambda is a lambda expression and position is in the interior. + + + + + If "node" is a block statement return the Begin statement of "node", otherwise return "node". + + + + + Checks if the SyntaxNode is an attribute name. To be an attribute name, the syntax + must be parented by an Attribute and the node itself must be equal to the Attribute.Name + property. + + + + + Is the node the name of a named argument of an invocation or object creation expression, + but not an attribute. + + + + + Return keyword or punctuation text based on SyntaxKind + + + + + Indicates whether a newline may validly follow the specified SyntaxToken without requiring an explicit line continuation sequence ' _' or terminating the containing statement. + + The token to test. This token must be parented by a SyntaxNode. + True if implicit line continuation is allowed after token. + + Refer to "Statements in Visual Basic", 2010 version, http://msdn.microsoft.com/en-us/library/865x40k4(v=vs.100).aspx + for examples. + Implicit line continuation may be used in Visual Basic: + + After a comma (,). + After a less-than sign (<) or before a greater-than sign (>) when you specify an attribute. + After an open parenthesis (() or before a closing parenthesis ()). + After an open curly brace ({) or before a closing curly brace (}). + After an open embedded expression (<%=) or before the close of an embedded expression (%>) within an XML literal. + + Before and after query operators (Aggregate, Distinct, From, Group By, Group Join, Join, Let, + Order By, Select, Skip, Skip While, Take, Take While, Where, In, Into, On, Ascending, and Descending). + You cannot break a line between the keywords of query operators that are made up of multiple keywords + (Order By, Group Join, Take While, and Skip While). + + After the concatenation operator (&). + After assignment operators (=, &=, :=, +=, -=, *=, /=, \=, ^=, <<=, >>=). + After binary operators (+, -, /, *, Mod, <>, <, >, <=, >=, ^, >>, <<, And, AndAlso, Or, OrElse, Like, Xor) within an expression. + After the Is and IsNot operators. + After a less-than sign (<) or before a greater-than sign (>) when you specify an attribute. + + Also after a greater-than sign (>) when you specify an attribute. + However, you must include a line-continuation character (_) when you specify assembly-level or module-level attributes. + + + After a member qualifier character (.) and before the member name. + However, you must include a line-continuation character (_) following a member qualifier character when you are using the With statement or + supplying values in the initialization list for a type. + + + After an XML axis property qualifier (. or ...). + However, you must include a line-continuation character (_) when you specify a member qualifier when you are using the With keyword. + + After the From keyword in a collection initializer. + After the With keyword in a member initializer. + After the In keyword in a For Each statement. + + + + + + Indicates whether a newline may validly precede the specified SyntaxToken without requiring an explicit line continuation sequence ' _' or terminating the containing statement. + + The token to test. This token must be parented by a SyntaxNode. + True if implicit line continuation is allowed after token. + + Refer to "Statements in Visual Basic", 2010 version, http://msdn.microsoft.com/en-us/library/865x40k4(v=vs.100).aspx + for examples. + Implicit line continuation may be used in Visual Basic: + + After a comma (,). + After a less-than sign (<) or before a greater-than sign (>) when you specify an attribute. + After an open parenthesis (() or before a closing parenthesis ()). + After an open curly brace ({) or before a closing curly brace (}). + After an open embedded expression (<%=) or before the close of an embedded expression (%>) within an XML literal. + + Before and after query operators (Aggregate, Distinct, From, Group By, Group Join, Join, Let, + Order By, Select, Skip, Skip While, Take, Take While, Where, In, Into, On, Ascending, and Descending). + You cannot break a line between the keywords of query operators that are made up of multiple keywords + (Order By, Group Join, Take While, and Skip While). + + After the concatenation operator (&). + After assignment operators (=, &=, :=, +=, -=, *=, /=, \=, ^=, <<=, >>=). + After binary operators (+, -, /, *, Mod, <>, <, >, <=, >=, ^, >>, <<, And, AndAlso, Or, OrElse, Like, Xor) within an expression. + After the Is and IsNot operators. + After a less-than sign (<) or before a greater-than sign (>) when you specify an attribute. + + Also after a greater-than sign (>) when you specify an attribute. + However, you must include a line-continuation character (_) when you specify assembly-level or module-level attributes. + + + After a member qualifier character (.) and before the member name. + However, you must include a line-continuation character (_) following a member qualifier character when you are using the With statement or + supplying values in the initialization list for a type. + + + After an XML axis property qualifier (. or ...). + However, you must include a line-continuation character (_) when you specify a member qualifier when you are using the With keyword. + + After the From keyword in a collection initializer. + After the With keyword in a member initializer. + After the In keyword in a For Each statement. + + + + + + Checks whether the element name is reserved. + + For example: + "Item3" is reserved. + "Rest", "ToString" and other members of System.ValueTuple are reserved. + Names that are not reserved return False. + + + + + A custom equality comparer for + + + PERF: The framework specializes EqualityComparer for enums, but only if the underlying type is System.Int32 + Since SyntaxKind's underlying type is System.UInt16, ObjectEqualityComparer will be chosen instead. + + + + + Determine if the kind represents a reserved keyword + + + + + Determine if the kind represents a contextual keyword + + + + + Determine if the token instance represents 'Me', 'MyBase' or 'MyClass' keywords + + + + + Return correspondent expression syntax for 'Me', 'MyBase' and 'MyClass' + keywords or SyntaxKind.None for other syntax kinds + + + + + Determine if the token instance represents a preprocessor keyword + + + + + Get all reserved keywords + + + + + Get contextual keywords + + + + + Get punctuations + + + + + Get preprocessor keywords + + + + + Return keyword or punctuation text based on SyntaxKind + + + + + Represents a Visual Basic global imports. + + + + + The import clause (a namespace name, an alias, or an XML namespace alias). + + + + + The import name. + + + + + Parses a specified string to create a GlobalImport instance. + + The string containing the text to be parsed. + A GlobalImport instance. + + + + Parses a specified string to create a GlobalImport instance with diagnostics info. + + The string containing the text to be parsed. + An ImmutableArray of diagnostics created during parse. + A GlobalImport instance. + + + + Parses a collection of strings representing imports to create collection of GlobalImports. + + The collection of strings to be parsed. + A collection of GlobalImports + + + + Parses a parameter array of string arrays representing imports to create a collection of GlobalImports. + + The string arrays to be parsed. + A collection of GlobalImports. + + + + Parses a collection of strings representing imports to create a collection of GlobalImport instance and diagnostics + + A collection of strings to be parsed. + A ImmutableArray of diagnostics. + A collection of GlobalImports. + + + + Determines if the current object is equal to another object. + + An object to compare with this object + A boolean value. True if the current object is equal to the other parameter; otherwise, False. + + + + Determines whether the current object is equal to another object of the same type. + + A GlobalImport object to compare with this object + A boolean value. True if the current object is equal to the other parameter; otherwise, False. + + + + Creates a hashcode for this instance. + + A hashcode representing this instance. + + + + Operator for Equality with GlobalImport Objects. + + True if the two items are Equal. + + + + Overloaded Operator for Inequality ith GlobalImport Objects. + + Returns True if the two items are not Equal. + + + + Supported Visual Basic language versions. + + + + + Map a language version (such as Default, Latest, Or VisualBasicN) to a specific version (VisualBasicN). + + + + + Displays the version number in the format understood on the command-line (/langver flag). + For instance, "9", "15", "latest". + + + + + Parse a LanguageVersion from a string input, as the command-line compiler does. + + + + Inference of tuple element names was added in VB 15.3 + + + + A program location in source code. + + + + + A program location in MyTemplate code. + + + + + Represents a VB location in source code or metadata. + + + + + Spill an expression list with a receiver (e.g. array access, method call), + where at least one of the receiver or the arguments contains an await expression. + + + + + Spill a list of expressions (e.g. the arguments of a method call). + + The expressions are processed right-to-left. Once an expression has been found that contains an await + expression, all subsequent expressions are spilled. + + Example: + + (1 + 2, await t1, Goo(), await t2, 3 + 4) + + becomes: + + Spill( + spill1 = 1 + 2, + spill2 = await t1, + spill3 = Goo(), + (spill1, spill2, spill3, await t2, 3 + 4)) + + NOTE: Consider nested array initializers: + + new int[] { + { 1, await t1 }, + { 3, await t2 } + } + + If the arguments of the top-level initializer had already been spilled, we would end up trying to spill + something like this: + + new int[] { + Spill( + spill1 = 1, + { spill1, await t1 }), + Spill( + spill2 = 3, + { spill2, await t2 }) + } + + The normal rewriting would produce: + + Spill( + spill1 = 1, + spill3 = { spill1, await t1 }, + spill2 = 3, + int[] a = new int[] { + spill3, + { spill2, await t2 })) + + Which is invalid, because spill3 does not have a type. + + To solve this problem the expression list spilled descends into nested array initializers. + + + + + + The method being rewritten. + + + + + The field of the generated async class used to store the async method builder: an instance of + AsyncVoidMethodBuilder, AsyncTaskMethodBuilder, or AsyncTaskMethodBuilder(Of T) depending on the + return type of the async method. + + + + + The exprReturnLabel is used to label the return handling code at the end of the async state-machine + method. Return expressions are rewritten as unconditional branches to exprReturnLabel. + + + + + The exitLabel is used to label the final method body return at the end of the async state-machine + method. Is used in rewriting of return statements from Await expressions and a couple of other + places where the return is not accompanied by return of the value. + + + + + The field of the generated async class used in generic task returning async methods to store the value + of rewritten return expressions. The return-handling code then uses SetResult on the async method builder + to make the result available to the caller. + + + + + Generate the body for MoveNext() + + + + + Materialize the capture, e.g. return an expression to be used instead of captured symbol + + + + + Add proxy field(s) if any to the array builder provided + + Note: is used for binding BoundStateMachineScope with + correspondent local/field references + + + + + Create assignment expressions initializing for this capture, is only supposed to be + used for proper handling of reference assignments + + + + + Spill field allocator controls allocation and reuse of the set of fields + used to spilling expressions; current implementation allows reuse of fields + of the same type on high-level statement level + + + + + Rewrite an async method into a state machine class. + + + + + Returns true if any members that we need are missing or have use-site errors. + + + + + Specifies a kind of an Async method + + None is returned for non-Async methods or methods with wrong return type + + + + + Returns method's async kind + + + + + The closure doesn't declare any variables. + Display class Is a singleton And may be shared with other top-level methods. + + + + + The closure only contains a reference to the containing class instance ("Me"). + We don't emit a display class, lambdas are emitted directly to the containing class as its instance methods. + + + + + General closure. + Display class may only contain lambdas defined in the same top-level method. + + + + + Rewrite lambda that are being converted to LINQ expression trees (Expression(Of T)) + + + A lot of code is #If False disabled until it can be tested. + + + + + Rewrite a bound lambda into a bound node that will create the corresponding expression tree at run time. + + + + + Create an Expression Tree Node with the given name and arguments + + + + + Create an Expression node with the given name, type arguments, and arguments. + + + + + Gets the method group for a given method name. Returns Nothing if no methods found. + + + + + The shift count for a left-shift or right-shift operator needs to be masked according to the type + of the left hand side, unless the shift count is an in-range constant. This is similar to what is + done in code gen. + + + + + Given user defined conversion node replace the operand with the coalesce lambda parameter. + + The input bound conversion node must have the following form: + --> BoundConversion [UserDefined] + --> [optional] BoundConversion (OutConversion) + --> BoundCall [shared method, no receiver, one argument] + + The OUTPUT bound conversion node will have the following form: + --> BoundConversion *updated* + --> [optional] BoundConversion *updated* + --> BoundCall [shared method, no receiver, * updated argument *] + --> [optional] BoundConversion (parameter from nullable to value) + --> *parameter* + + + + + + Rewrites a built-in conversion. Doesn't handle user-defined conversions or Nothing literals. + + + + + Get the conversion helper for converting between special types in an expression tree. + These are often different than the ones used in regular code. + + + + + Get the name of the expression tree function for a particular unary operator + + + + + Utility class, provides a convenient way of combining various s in a chain, + allowing each of them to apply specific instrumentations in particular order. + + Default implementation of all APIs delegates to the "previous" passed as a parameter + to the constructor of this class. Usually, derived types are going to let the base (this class) to do its work first + and then operate on the result they get back. + + + + + This type is responsible for adding debugging sequence points for the executable code. + It can be combined with other s. Usually, this class should be + the root of the chain in order to ensure sound debugging experience for the instrumented code. + In other words, sequence points are typically applied after all other changes. + + + + + A singleton object that performs only one type of instrumentation - addition of debugging sequence points. + + + + + This type provides means for instrumenting compiled methods for dynamic analysis. + It can be combined with other s. + + + + + A base class for components that instrument various portions of executable code. + It provides a set of APIs that are called by to instrument + specific portions of the code. These APIs often have two parameters: + - original bound node produced by the for the relevant portion of the code; + - rewritten bound node created by the for the original node. + The APIs are expected to return new state of the rewritten node, after they apply appropriate + modifications, if any. + + The base class provides default implementation for all APIs, which simply returns the rewritten node. + + + + + The singleton NoOp instrumenter, can be used to terminate the chain of s. + + + + + Return a node that is associated with an entry of the block. OK to return Nothing. + + + + + Ok to return Nothing when is Nothing. + + + + + Return a prologue. Ok to return Nothing. + + + + + Return an epilogue. Ok to return Nothing. + + + + + Return an epilogue. Ok to return Nothing. + + + + + Ok to return Nothing when is Nothing. + + + + + Ok to return Nothing when is Nothing. + + + + + Ok to return Nothing when is Nothing. + + + + + Ok to return Nothing when is Nothing. + + + + + Return a node that is associated with an entry of the Else block. Ok to return Nothing. + + + + + Return a node that is associated with an entry of the block. Ok to return Nothing. + Note, this method is only called for a catch block without Filter. + If there is a filter, is called instead. + + + + + Return a node that is associated with an entry of the Finally block. Ok to return Nothing. + + + + + Return a node that is associated with an entry of the Try block. Ok to return Nothing. + + + + + Ok to return Nothing. + + + + + Ok to return Nothing when is Nothing. + If is not Nothing, add to the end, not to the front. + + + + + Ok to return Nothing when is Nothing. + If is not Nothing, add to the end, not to the front. + + + + + Ok to return Nothing. + + + + + Ok to return Nothing. + + + + + Ok to return Nothing. + + + + + Ok to return Nothing. + + + + + The field of the generated iterator class that underlies the Current property. + + + + + Rewrite an iterator method into a state machine class. + + + + + Returns true if any members that we need are missing or have use-site errors. + + + + + A field of a frame class that represents a variable that has been captured in a lambda. + + + + + A class that represents the set of variables in a scope that have been + captured by lambdas within that scope. + + + + + Copy constructor has one parameter of the same type as the enclosing type. + The purpose is to copy all the lifted values from previous version of the + frame if there was any into the new one. + + + + + The rewriter for removing lambda expressions from method bodies and introducing closure classes + as containers for captured variables along the lines of the example in section 6.5.3 of the + C# language specification. + + The entry point is the public method Rewrite. It operates as follows: + + First, an analysis of the whole method body is performed that determines which variables are + captured, what their scopes are, and what the nesting relationship is between scopes that + have captured variables. The result of this analysis is left in LambdaRewriter.analysis. + + Then we make frame, or compiler-generated class, represented by an instance of + LambdaRewriter.Frame for each scope with captured variables. The generated frames are kept + in LambdaRewriter.frames. Each frame is given a single field for each captured + variable in the corresponding scope. These are maintained in LambdaRewriter.proxies. + + Finally, we walk and rewrite the input bound tree, keeping track of the following: + (1) The current set of active frame pointers, in LambdaRewriter.framePointers + (2) The current method being processed (this changes within a lambda's body), in LambdaRewriter.currentMethod + (3) The "this" symbol for the current method in LambdaRewriter.currentFrameThis, and + (4) The symbol that is used to access the innermost frame pointer (it could be a local variable or "this" parameter) + + There are a few key transformations done in the rewriting. + (1) Lambda expressions are turned into delegate creation expressions, and the body of the lambda is + moved into a new, compiler-generated method of a selected frame class. + (2) On entry to a scope with captured variables, we create a frame object and store it in a local variable. + (3) References to captured variables are transformed into references to fields of a frame class. + + In addition, the rewriting deposits into the field LambdaRewriter.generatedMethods a (MethodSymbol, BoundStatement) + pair for each generated method. + + LambdaRewriter.Rewrite produces its output in two forms. First, it returns a new bound statement + for the caller to use for the body of the original method. Second, it returns a collection of + (MethodSymbol, BoundStatement) pairs for additional method that the lambda rewriter produced. + These additional methods contain the bodies of the lambdas moved into ordinary methods of their + respective frame classes, and the caller is responsible for processing them just as it does with + the returned bound node. For example, the caller will typically perform iterator method and + asynchronous method transformations, and emit IL instructions into an assembly. + + + + + Perform a first analysis pass in preparation for removing all lambdas from a method body. The entry point is Analyze. + The results of analysis are placed in the fields seenLambda, blockParent, variableBlock, captured, and captures. + + + + + Set to true of any lambda expressions were seen in the analyzed method body. + + + + + Set to true if method body contains any back branches (loops). + + + + + For each statement with captured variables, identifies the nearest enclosing statement with captured variables. + + + + + For each captured variable, identifies the statement in which it will be moved to a frame class. This is + normally the block where the variable is introduced, but method parameters are moved + to a frame class within the body of the method. + + + + + For a given label, the nearest enclosing block that captures variables + + + + + For a given goto, the nearest enclosing block that captures variables + + + + + Blocks that contain (recursively) a lambda that is lifting. + Such blocks are considered as potentially needing closure initialization when doing jump verification. + + + + + Blocks that are positioned between a block declaring some lifted variables + and a block that contains the lambda that lifts said variables. + If such block itself requires a closure, then it must lift parent frame pointer into the closure + in addition to whatever else needs to be lifted. + + NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. + If someone only needs diagnostics or information about captures, this information is not necessary. + ComputeLambdaScopesAndFrameCaptures needs to be called to compute this. + + + + + Optimized locations of lambdas. + + Lambda does not need to be placed in a frame that corresponds to its lexical scope if lambda does not reference any local state in that scope. + It is advantageous to place lambdas higher in the scope tree, ideally in the innermost scope of all scopes that contain variables captured by a given lambda. + Doing so reduces indirections needed when captured local are accessed. For example locals from the innermost scope can be accessed with no indirection at all. + + NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. + If someone only needs diagnostics or information about captures, this information is not necessary. + ComputeLambdaScopesAndFrameCaptures needs to be called to compute this. + + + + + The set of captured variables seen in the method body. + + + + + For each lambda in the code, the set of variables that it captures. + + + + + The set of variables that were declared anywhere inside an expression lambda. + + + + + Set to true while we are analyzing the interior of an expression lambda. + + + + + All symbols that should never be captured with a copy constructor of a closure. + + + + + Analyzes method body that belongs to the given method symbol. + + + + + Create the optimized plan for the location of lambda methods and whether scopes need access to parent scopes + + + + + Compute the nesting depth of a given block. + Topmost block (where method locals and parameters are defined) are at the depth 0. + + + + + Once we see a lambda lifting something + We mark all scopes from the current up to the one that declares lifted symbol as + containing a lifting lambda. + This is needed so that we could reject jumps that might jump over frame allocations. + + NOTE: because of optimizations lambda _might_ be placed in a frame higher + than its lexical scope and thus make a jump technically legal. + However, we explicitly do not consider frame optimizations in this analysis. + + + + + This method is called on every variable reference. + It checks for cases where variable is declared outside of the lambda in which it is being accessed + If capture is detected, than it marks variable as capturED and all lambdas involved as capturING + + + + + For performance reason we may not want to check if synthetic gotos are legal. + Those are the majority, but should not be ever illegal (how user would fix them?). + + + + WARNING: used ONLY in DEBUG + + + + Rewrite the given node to eliminate lambda expressions. Also returned are the method symbols and their + bound bodies for the extracted lambda bodies. These would typically be emitted by the caller such as + MethodBodyCompiler. See this class' documentation + for a more thorough explanation of the algorithm and its use by clients. + + The bound node to be rewritten + The containing method of the node to be rewritten + Index of the method symbol in its containing type member list. + The caller's buffer into which we produce additional methods to be emitted by the caller + Set of symbols that should not be captured using a copy constructor + The caller's buffer into which we place any diagnostics for problems encountered + + + + Create the frame types. + + + + + Produces a bound expression representing a pointer to a frame of a particular frame type. + + The syntax to attach to the bound nodes produced + The type of frame to be returned + A bound node that computes the pointer to the required frame + + + + Produce a bound expression representing a pointer to a frame of a particular frame class. + Note that for generic frames, the frameClass parameter is the generic definition, but + the resulting expression will be constructed with the current type parameters. + + The syntax to attach to the bound nodes produced + The class type of frame to be returned + A bound node that computes the pointer to the required frame + + + + Constructs a concrete frame type if needed. + + + + + Introduce a frame around the translation of the given node. + + The node whose translation should be translated to contain a frame + The frame for the translated node + A function that computes the translation of the node. It receives lists of added statements and added symbols + The translated statement, as returned from F + + + + If parameter (or variable in the EE) is lifted, initialize its proxy. + + + + + Rewrites lambda body into a body of a method. + + Method symbol for the rewritten lambda body. + Original lambda node. + Lambda body rewritten as a body of the given method symbol. + + + + It is illegal to jump into blocks that reference lifted variable + as that could leave closure frames of the target block uninitialized. + + The fact that closure could be created as high as the declaration level of the variable + and well above goto block (thus making the jump safe) is considered an optional optimization + and ignored. + For the purpose of this analysis just having lifting lambdas already means + that block may require initialization and cannot be jumped into. + + Note that when you are jumping into a block you are essentially jumping into ALL blocks + on the path from LowestCommonAncestor(goto, label) to the actual label block. + + + + + Optimize the case where we create an instance of a delegate and invoke it right away. + Skip the delegate creation and invoke the method directly. Specifically, we are targeting + lambda relaxation scenario that requires a stub, which invokes original lambda by instantiating + an Anonymous Delegate and calling its Invoke method. That is why this optimization should be done + after lambdas are rewritten. + CONSIDER: Should we expand this optimization to all delegate types and all explicitly written code? + If we decide to do this, we should be careful with extension methods because they have + special treatment of 'this' parameter. + + + + + A method that results from the translation of a single lambda expression. + + + + + Creates a symbol for a synthesized lambda method + + Type that contains lambda method + - it is either Frame or enclosing class in a case if we do not lift anything. + Method that contains lambda expression for which we do the rewrite. + Lambda expression which is represented by this method. + + + + Returns substitution currently used by the rewriter for a placeholder node. + Each occurrence of the placeholder node is replaced with the node returned. + Throws if there is no substitution. + + + + + Sets substitution used by the rewriter for a placeholder node. + Each occurrence of the placeholder node is replaced with the node returned. + Throws if there is already a substitution. + + + + + Replaces substitution currently used by the rewriter for a placeholder node with a different substitution. + Asserts if there isn't already a substitution. + + + + + Removes substitution currently used by the rewriter for a placeholder node. + Asserts if there isn't already a substitution. + + + + + Adds a prologue before stepping on the statement + NOTE: if the statement is a block the prologue will be outside of the scope + + + + + Gets the special type. + + Special Type to get. + + + + Gets the special type member. + + Member of the special type. + + + + Checks for special member and reports diagnostics if the member is Nothing or has UseSiteError. + Returns True in case diagnostics was actually reported + + + + + Checks for special member and reports diagnostics if the member is Nothing or has UseSiteError. + Returns True in case diagnostics was actually reported + + + + + Checks for well known member and reports diagnostics if the member is Nothing or has UseSiteError. + Returns True in case diagnostics was actually reported + + + + + Checks for well known member and reports diagnostics if the member is Nothing or has UseSiteError. + Returns True in case diagnostics was actually reported + + + + + If value is const, returns the value unchanged. + + In a case if value is not a const, a proxy temp is created and added to "locals" + In addition to that, code that evaluates and stores the value is added to "expressions" + The access expression to the proxy temp is returned. + + + + + Helper method to create a bound sequence to represent the idea: + "compute this value, and then compute this side effects while discarding results" + + A Bound sequence is generated for the provided expr and side-effects, say {se1, se2, se3}, as follows: + + If expr is of void type: + BoundSequence { side-effects: { expr, se1, se2, se3 }, valueOpt: Nothing } + + ElseIf expr is a constant: + BoundSequence { side-effects: { se1, se2, se3 }, valueOpt: expr } + + Else + BoundSequence { side-effects: { tmp = expr, se1, se2, se3 }, valueOpt: tmp } + + + NOTE: Supporting cases where side-effects change the value (or to detect such cases) + NOTE: could be complicated. We do not support this currently and instead require + NOTE: value expr to be not LValue. + + + + + Helper function that visits the given expression and returns a BoundExpression. + Please use this instead of DirectCast(Visit(expression), BoundExpression) + + + + + If we have a WinRT type event, we need to encapsulate the adder call + (which returns an EventRegistrationToken) with a call to + WindowsRuntimeMarshal.AddEventHandler or RemoveEventHandler, but these + require us to create a new Func representing the adder and another + Action representing the remover. + + The rewritten call looks something like: + + WindowsRuntimeMarshal.AddEventHandler(Of TEventHandler)( + New Func(Of TEventHandler, EventRegistrationToken)([object].add_T), + New Action(Of EventRegistrationToken)([object].remove_T), + New TEventHandler(Me.OnSuspending)) + + + where [object] is a compiler-generated local temp. + + For a remover, the call looks like: + + WindowsRuntimeMarshal.RemoveEventHandler(Of TEventHandler)( + New Action(Of EventRegistrationToken)([object].remove_T), + New TEventHandler(Me.OnSuspending)) + + + + + Make sure GetObjectValue calls are injected. + + + + + Apply GetObjectValue call if needed. + + + + + Apply GetObjectValue call if needed. + + + + + The goal of optimization is to eliminate the need to deal with instances of Nullable(Of Boolean) type as early as possible, + and, as a result, simplify evaluation of built-in OrElse/AndAlso operators by eliminating the need to use three-valued Boolean logic. + The optimization is possible because when an entire Boolean Expression is evaluated to Null, that has the same effect as if result + of evaluation was False. However, we do want to preserve the original order of evaluation, according to language rules. + This method returns an expression that still has Nullable(Of Boolean) type, but that expression is much simpler and can be + further simplified by the consumer. + + + + + Is this a floating-point operation that results in a whole number, rendering a following rounding operation redundant? + + + + + Is this a floating-point truncation operation that would be redundant if followed by a truncation to an integral type? + + + + + Converts access to a tuple instance into access into the underlying ValueTuple(s). + + For instance, tuple.Item8 + produces fieldAccess(field=Item1, receiver=fieldAccess(field=Rest, receiver=ValueTuple for tuple)) + + + + + Field initializers need to be rewritten multiple times in case of an AsNew declaration with multiple field names because the + initializer may contain references to the current field like in the following example: + Class C1 + Public x, y As New RefType() With {.Field1 = .Field2} + End Class + + in this example .Field2 references the temp that is created for x and y. + + We moved the final rewriting for field initializers to the local + rewriters because here we already have the infrastructure to replace placeholders. + + + + + Rewrites a for each statement. + + The node. + + + + Rewrites a for each over an one dimensional array or a string. + + As an optimization, if c is an array type of rank 1, the form becomes: + + Dim collectionCopy As C = c + Dim collectionIndex As Integer = 0 + Do While collectionIndex < len(collectionCopy) ' len(a) represents the LDLEN opcode + dim controlVariable = DirectCast(collectionCopy(collectionIndex), typeOfControlVariable) + <loop body> + continue: + collectionIndex += 1 + postIncrement: + Loop + + An iteration over a string becomes + Dim collectionCopy As String = c + Dim collectionIndex As Integer = 0 + Dim limit as Integer = s.Length + Do While collectionIndex < limit + dim controlVariable = DirectCast(collectionCopy.Chars(collectionIndex), typeOfControlVariable) + <loop body> + continue: + collectionIndex += 1 + postIncrement: + Loop + + The node. + The statements. + The locals. + if set to true [is array]. + + + + Creates a local and assigns it the given bound expression. + + The syntax node. + The initialization expression. + The bound local. + The locals. + + + + Creates the index increment statement. + + The syntax node. + The bound index expression (bound local). + + + + Creates the while statement for the for each rewrite + + The limit to check the index against. + The index. + The assignment statement of the current value. + The increment statement. + The bound for each node. + The lowered statement list for the while statement. + + + + Rewrite a for each that uses IEnumerable. It's basic form is: + + Dim e As E = c.GetEnumerator() + Do While e.MoveNext() + controlVariable = e.Current + <loop body> + Loop + + To support disposable enumerators, the compiler will generate code to dispose the + enumerator after loop termination. Only when E implements IDisposable can this be done. + The one exception to this rule is when E is specifically IEnumerator, in which case + the compiler will generate code to dynamically query the enumerator to determine + if it implements IDisposable. + + If E is IEnumerator the loop becomes: + + Dim e As IEnumerator = c.GetEnumerator() + Try + Do While e.MoveNext() + dim controlVariable = e.Current + <loop body> + Loop + Finally + If TryCast(e, IDisposable) IsNot Nothing then + CType(e, IDisposable).Dispose() + End If + End Try + + If E is known at compile time to implement IDisposable the loop becomes: + + Dim e As E = c.GetEnumerator() + Try + Do While e.MoveNext() + dim controlVariable = e.Current + <loop body> + Loop + Finally + If Not e Is Nothing Then + CType(e, IDisposable).Dispose() + End If + End Try + + The exception to these forms is the existence of On Error in which case the Try/Finally + block will be eliminated (instead the body of the Finally will immediately follow + the end of the loop). + + + + + + + + Depending on whether the bound local's type is, implements or inherits IDisposable for sure, or might implement it, + this function returns the statements to call Dispose on the bound local. + + If it's known to implement IDisposable, the generated code looks like this for reference types: + If e IsNot Nothing Then + CType(e, IDisposable).Dispose() + End If + or + e.Dispose() + for value types (including type parameters with a value constraint). + Otherwise it looks like the following + If TryCast(e, IDisposable) IsNot Nothing then + CType(e, IDisposable).Dispose() + End If + + This method is used by the for each rewriter and the using rewriter. The latter should only call + this method with both IsOrInheritsFromOrImplementsIDisposable and needToDispose set to true, as using is not + pattern based and must implement IDisposable. + + The syntax node. + The bound local. + The condition used in the if statement around the dispose call + A flag indicating whether the bound local's type is, + inherits or implements IDisposable or not. + Conversion from the local type to IDisposable + + + + Internal helper class to replace local symbols in bound locals of a given bound tree. + + + + + Rewrites ForTo loop. + + + + + Negates the value if step is negative + + + + + Given the control variable, limit and step, produce the loop condition. + The principle is simple - + if step is negative (stepping "Up") then it is "control >= limit" + otherwise it is "control <= limit" + + It gets more complicated when step is not a constant or not a numeric or + involves overloaded comparison/IsTrue operators + + + + + Attempt to retrieve the specified special member, reporting a use-site diagnostic if the member is not found. + + + + + Replaces local declaration with its initializer + Also marks resulting statement with seq point that matches original declaration. + + + + + Splits nullable operand into a hasValueExpression and an expression that represents underlying value (returned). + + Underlying value can be called after calling hasValueExpr without duplicated side-effects. + Note that hasValueExpr is guaranteed to have NO SIDE-EFFECTS, while result value is + expected to be called exactly ONCE. That is the normal pattern in operator lifting. + + All necessary temps and side-effecting initializations are appended to temps and inits + + + + + Returns a NOT-SIDE-EFFECTING expression that represents results of the operand + If such transformation requires a temp, the temp and its initializing expression + are returned in temp/init + + + + + Returns expression that - + a) evaluates the operand if needed + b) produces it's ValueOrDefault. + The helper is familiar with wrapping expressions and will go directly after the value + skipping wrap/unwrap steps. + + + + + Evaluates expr and calls HasValue on it. + + + + + Checks that candidate Null expression is a simple expression that produces Null of the desired type + (not a conversion or anything like that) and returns it. + Otherwise creates "New T?()" expression. + + + + + returns true when expression has NO SIDE-EFFECTS and is known to produce nullable NULL + + + + + Returns true when expression is known to produce nullable NOT-NULL + NOTE: unlike HasNoValue case, HasValue expressions may have side-effects. + + + + + Helper to generate binary expressions. + Performs some trivial constant folding. + TODO: Perhaps belong to a different file + + + + + Simpler helper for binary expressions. + When operand are boolean, the result type is same as operand's and is never checked + so do not need to pass that in. + + + + + Takes two expressions and makes sequence. + + + + + Takes two expressions and makes sequence. + + + + + Takes two expressions and makes sequence. + + + + + Returns an expression that can be used instead of the original one when + we want to run the expression for side-effects only (i.e. we intend to ignore result). + + + + + Rewrites a CollectionInitializerExpression to a list of Add calls and returns the temporary. + E.g. the following code: + Dim x As New CollectionType(param1) From {1, {2, 3}, {4, {5, 6, 7}}} + gets rewritten to + Dim temp as CollectionType + temp = new CollectionType(param1) + temp.Add(1) + temp.Add(2, 3) + temp.Add(4, {5, 6, 7}) + x = temp + where the last assignment is not part of this rewriting, because the BoundCollectionInitializerExpression + only represents the object creation expression with the initialization. + + The BoundCollectionInitializerExpression that should be rewritten. + A bound sequence for the object creation expression containing the invocation expressions. + + + + Rewrites a ObjectInitializerExpression to either a statement list (in case the there is no temporary used) or a bound + sequence expression (in case there is a temporary used). The information whether to use a temporary or not is + stored in the bound object member initializer node itself. + + E.g. the following code: + Dim x = New RefTypeName(param1) With {.FieldName1 = 23, .FieldName2 = .FieldName3, .FieldName4 = x.FieldName1} + gets rewritten to + Dim temp as RefTypeName + temp = new RefTypeName(param1) + temp.FieldName1 = 23 + temp.FieldName2 = temp.FieldName3 + temp.FieldName4 = x.FieldName1 + x = temp + where the last assignment is not part of this rewriting, because the BoundObjectInitializerExpression + only represents the object creation expression with the initialization. + + In a case where no temporary is used the following code: + Dim x As New ValueTypeName(param1) With {.FieldName1 = 23, .FieldName2 = .FieldName3, .FieldName4 = x.FieldName1} + gets rewritten to + x = new ValueTypeName(param1) + x.FieldName1 = 23 + x.FieldName2 = x.FieldName3 + x.FieldName4 = x.FieldName1 + + The BoundObjectInitializerExpression that should be rewritten. + A bound sequence for the object creation expression containing the invocation expressions, or a + bound statement list if no temporary should be used. + + + + Rewrites Return as a GoTo is needed (if not the last statement in a method) + + + + + digs into known concat operators and unwraps their arguments + otherwise returns the expression as-is + + Generally we only need to recognize same node patterns that we create as a result of concatenation rewrite. + We could recognize some other nodes and unwrap to arguments + + + + + folds two concat operands into one expression if possible + otherwise returns null + + + + + folds two concat constants into one if possible + otherwise returns null. + It is generally always possible to concat constants, unless resulting string would be too large. + + + + + Strangely enough there is such a thing as unary concatenation and it must be rewritten. + + + + + Is there any code to execute in the given statement that could have side-effects, + such as throwing an exception? This implementation is conservative, in the sense + that it may return true when the statement actually may have no side effects. + + + + + Converts the expression for creating a tuple instance into an expression creating a ValueTuple (if short) or nested ValueTuples (if longer). + + For instance, for a long tuple we'll generate: + creationExpression(ctor=largestCtor, args=firstArgs+(nested creationExpression for remainder, with smaller ctor and next few args)) + + + + + A using statement of the form: + using Expression + list_of_statements + end using + + will be rewritten into: + + temp = Expression + Try + list_of_statements + Finally + If Temp IsNot Nothing Then + CType(temp, IDisposable).Dispose() + End If + End Try + + when the resource is a using locally declared variable no temporary is generated but the variable is read-only + A using statement of the form: + Using v As New MyDispose() + list_of_statements + End Using + + is rewritten to: + + Dim v As New MyDispose() + Try + list_of_statements + Finally + If v IsNot Nothing Then + CType(v, IDisposable).Dispose() + End If + End Try + + A using with multiple variable resources are equivalent to a nested using statement. + So a using statement of the form: + Using v1 As New MyDispose(), v2 As myDispose = New MyDispose() + list_of_statements + end using + + is rewritten to: + Dim v1 As New MyDispose + Try + Dim v2 As MyDispose = new MyDispose() + Try + list_of_statements + Finally + If v2 IsNot Nothing Then + CType(v2, IDisposable).Dispose() + End If + End Try + Finally + If v1 IsNot Nothing Then + CType(v1, IDisposable).Dispose() + End If + end try + + + + + Creates a TryFinally Statement for the given resource. + + This method creates the following for the arguments: + <localSymbol> = <initializationExpression> + Try + <currentBody> + Finally + If <disposeCondition> Then + <disposeConversion>.Dispose() + End If + End Try + + Note: this is used for both kinds of using statements (resource locals and resource expressions). + + + The new bound block containing the assignment of the initialization and the try/finally statement with + the passed body. + + + + Cache of value types which were already calculated by LocalOrFieldNeedsToBeCleanedUp + in this lowering, serves as an optimization + + + + + Create a temp local of the given type and initial value. + The resulting local is treated as an rvalue, and the + initialization assignment is added to 'sideEffects'. + + + + + Create a BoundExpression representing an array creation initialized with the given items. + If there are zero items, the result is a BoundLiteral Nothing, otherwise, a BoundArrayCreation. + + + + + A bound node rewriter that rewrites types properly (which in some cases the automatically-generated). + This is used in the lambda rewriter, the iterator rewriter, and the async rewriter. + + + + + A method that wraps the call to a method through MyBase/MyClass receiver. + + + + Class A + Protected Overridable Sub F(a As Integer) + End Sub + End Class + + Class B + Inherits A + + Public Sub M() + Dim b As Integer = 1 + Dim f As System.Action = Sub() MyBase.F(b) + End Sub + End Class + + + + + + Creates a symbol for a method that wraps the call to a method through MyBase/MyClass receiver. + + Type that contains wrapper method. + Method to wrap + Wrapper method name + Syntax node. + + + + For each captured variable, the corresponding field of its frame + + + + + A mapping from every local variable to its replacement local variable. Local variables + are replaced when their types change due to being inside of a lambda within a generic method. + + + + + A mapping from every parameter to its replacement parameter. Local variables + are replaced when their types change due to being inside of a lambda. + + + + + The mapping of type parameters for the current lambda body + + + + + The method (e.g. lambda) which is currently being rewritten. If we are + rewriting a lambda, currentMethod is the new generated method. + + + + + A not-null collection of synthesized methods generated for the current source type. + + + + + During rewriting, we ignore locals that have already been rewritten to a proxy (a field on a closure class). + However, in the EE, we need to preserve the original slots for all locals (slots for any new locals must be + appended after the originals). The field is intended to suppress any + rewriter logic that would result in original locals being omitted. + + + + + Rewrites method. + + + + + Rewrites property. + + + + + Rewrites field. + + + + + Represents a synthesized state machine helper field. + + + + + + + Type used by State Machine rewriter to represent symbol proxy. Lambda rewriter as + well as iterator rewriter use simplified form of proxy as they only capture + locals as r-values in fields, async rewriter uses a different structure as a proxy + because it has to capture l-values on stack as well + + + + + The "state" of the state machine that is the translation of the iterator method. + + + + + Cached "state" of the state machine within the MoveNext method. We work with a copy of + the state to avoid shared mutable state between threads. (Two threads can be executing + in a Task's MoveNext method because an awaited task may complete after the awaiter has + tested whether the subtask is complete but before the awaiter has returned) + + + + + For each distinct label, the set of states that need to be dispatched to that label. + Note that there is a dispatch occurring at every try-finally statement, so this + variable takes on a new set of values inside each try block. + + + + + A mapping from each state of the state machine to the new state that will be used to execute + finally blocks in case the state machine is disposed. The Dispose method computes the new + state and then runs MoveNext. + + + + + A try block might have no state (transitions) within it, in which case it does not need + to have a state to represent finalization. This flag tells us whether the current try + block that we are within has a finalizer state. Initially true as we have the (trivial) + finalizer state of -1 at the top level. + + + + + If hasFinalizerState is true, this is the state for finalization from anywhere in this try block. + Initially set to -1, representing the no-op finalization required at the top level. + + + + + The set of local variables and parameters that were hoisted and need a proxy. + + + + + Implementation-specific name for labels to mark state machine resume points. + + + + + Generate return statements from the state machine method body. + + + + + Must remain in sync with . + + + + + Must remain in sync with . + + + + + The try statement is the most complex part of the state machine transformation. + Since the CLR will not allow a 'goto' into the scope of a try statement, we must + generate the dispatch to the state's label stepwise. That is done by translating + the try statements from the inside to the outside. Within a try statement, we + start with an empty dispatch table (representing the mapping from state numbers + to labels). During translation of the try statement's body, the dispatch table + will be filled in with the data necessary to dispatch once we're inside the try + block. We generate that at the head of the translated try statement. Then, we + copy all of the states from that table into the table for the enclosing construct, + but associate them with a label just before the translated try block. That way + the enclosing construct will generate the code necessary to get control into the + try block for all of those states. + + + + + True if the initial values of locals in the rewritten method need to be preserved. (e.g. enumerable iterator methods) + + + + + Type substitution if applicable or Nothing + + + + + Add fields to the state machine class that control the state machine. + + + + + Initialize the state machine class. + + + + + Generate implementation-specific state machine initialization for the kickoff method body. + + + + + Generate implementation-specific state machine member method implementations. + + + + + If any required special/well-known type/member is not found or has use-site errors + we should not continue with transformation because it may have unwanted consequences; + e.g. we do return Nothing if well-known member symbol is not found. This method should + check all required symbols and return False if any of them are missing or have use-site errors. + We will also return True if signature is definitely bad - contains parameters that are ByRef or have error types + + + + + Check that the property and its getter exist and collect any use-site errors. + + + + + This class represents a type symbol for compiler generated implementation methods, + the method being implemented is passed as a parameter and is used to build + implementation method's parameters, return value type, etc... + + + + + Represents a state machine MoveNext method. + Handles special behavior around inheriting some attributes from the original async/iterator method. + + + + + Represents a state machine method other than a MoveNext method. + All such methods are considered non-user code. + + + + + This class represents a symbol for the compiler generated property that owns implemented getter (like IEnumerable.Current), + The getter method being implemented is passed as a parameter and is used to build + implementation property around it with appropriate parameters, return value type, etc... + + + + + Tracks synthesized fields that are needed in a submission being compiled. + + + For every other submission referenced by this submission we add a field, so that we can access members of the target submission. + A field is also needed for the host object, if provided. + + + + + A helper class for synthesizing quantities of code. + + + Code if the #If False out is code ported from C# that isn't currently used, and + hence has no code coverage. It may or may not work correctly, but should be a useful + starting point. + + + + + Assignment expressions in lowered form should always have suppressObjectClone = True + + + + Check for (and assert that there are no) duplicate case labels in the switch. + + + + Synthesizes an expression that evaluates to the index portion of a method's metadata token. + + + + + Synthesizes an expression that evaluates to the maximum value of the index portions of all method definition metadata tokens in current module. + + + + + Synthesizes an expression that evaluates to the current module's MVID. + + + + + Synthesizes an expression that evaluates to a text representation of the current module/s MVID. + + + + + Synthesizes an expression that evaluates to the root of the dynamic analysis payloads for a particular kind of dynamic analysis. + + Uniquely identifies the kind of dynamic analysis. + Type of an analysis payload cell for the particular analysis kind. + + + + Synthesizes an expression that evaluates to the index of a source document in the table of debug source documents. + + + + + Given an expression that produces some result and + has some observable evaluation side effects, return two expressions: + 1) First - produces the same result with the same observable side effects, + 2) Second - produces the same result, but without observable side effects, whenever possible. + + This is used for compound assignment, method call ByRef parameter copy back, etc. + + + + Expression to be used instead of With statement expression placeholder + + + Locals being used + + + Locals initialization expressions + + + + Given an expression specified for With statement produces: + 1) Expression - an expression to be used instead of expression placeholder + 2) Locals - a set of locals used to capture parts of Expression + 3) Initializers - initializers for Locals + + To be used in With statement only! + + + + + Represents the state of Option Strict checking. + + + + + + Option Strict is Off. No Option Strict checks are in effect. + + + + + The Option Strict checks generate warnings. (Note that other + compile options may hide these warnings, or turn them into errors.) + + + + + Option Strict is On. All Option Strict checks are in effect and produce errors. + + + + + This class is used to validate the compiler options. + + + + + Parse the project level imports, adding errors to the errorBag as necessary + + + + + Validate and parse the root namespace. If the root namespace string is a valid namespace name, the parsed + version is returned. Otherwise Nothing is returned. + + + + + Check if a string is a valid component of the root namespace. We use the usual + VB identifier rules, but don't check for keywords (this is the same as previous versions). + + + + + Adds predefined preprocessor symbols VBC_VER and TARGET to given list of preprocessor symbols if not included yet. + + The Output kind to derive the value of TARGET symbol from. + A collection of KeyValue pairs representing existing symbols. + Array of symbols that include VBC_VER and TARGET. + + + + Adds predefined preprocessor symbols VBC_VER and TARGET to given list of preprocessor symbols if not included yet. + + The Output kind to derive the value of TARGET symbol from. + An parameter array of KeyValue pairs representing existing symbols. + Array of symbols that include VBC_VER and TARGET. + + + + Adds predefined preprocessor symbols VBC_VER and TARGET to given list of preprocessor symbols if not included yet. + + The Output kind to derive the value of TARGET symbol from. + An ImmutableArray of KeyValue pairs representing existing symbols. + Array of symbols that include VBC_VER and TARGET. + + + + The possible reasons a symbol may be inaccessible + + + + + + Contains the code for determining VB accessibility rules. + + + + + Checks if 'symbol' is accessible from within assembly 'within'. + + + + + Checks if 'symbol' is accessible from within assembly 'within'. + + + + + Checks if 'symbol' is accessible from within type 'within', with + an optional qualifier of type "throughTypeOpt". + + + + + Checks if 'symbol' is accessible from within type 'within', with + a qualifier of type "throughTypeOpt". Sets "failedThroughTypeCheck" to true + if it failed the "through type" check. + + + + + Checks if 'symbol' is accessible from within 'within', which must be a NamedTypeSymbol or + an AssemblySymbol. If 'symbol' is accessed off + of an expression then 'throughTypeOpt' is the type of that expression. This is needed to + properly do protected access checks. Sets "failedThroughTypeCheck" to true if this protected + check failed. + + + + + Determine if "derivedType" inherits from or implements "baseType", ignoring constructed types, and dealing + only with original types. + + + + + Captures information about illegal access exposure. + + + + + + The exposed type. + + + + + Namespace or type that "gains" access to the type. + + + + + Returns true if there is no illegal access exposure, false otherwise. + + + Type or member exposing the type. + + + The exposed type. + + + If function returns false, it requests an instance of ArrayBuilder from the pool and populates + it with information about illegal exposure. The caller is responsible for returning the ArrayBuilder + to the pool. + + + + + + + Returns true if there is no illegal access exposure, false otherwise. + + + + + Determine if member is the definition of the type, or + is contained (directly or indirectly) in the definition of the type. + + + + + Returns true if there is no illegal access exposure, false otherwise. + + Four cases: + 1: Member is not protected, non of its enclosing scopes are protected + 2: Member is not protected, but some of its enclosing scopes are protected + 3: Member is protected, non of its enclosing scopes are protected + 4: Member is protected, some of its enclosing scopes are also protected + + + + + Can type be accessed through container's inheritance? + + + + + This function finds the inner most enclosing scope whose Access + is lesser than or equal to the given access "StopAtAccess". + + Member - for which the enclosing scope has to be found + the enclosing scope's access has to be lesser than + + + + + Returns false if there were errors reported due to access exposure, true otherwise. + + + + + Narrow a quadword result to a specific integral type, setting Overflow true + if the result value cannot be represented in the result type. + + + + + Summarizes whether a conversion is allowed, and if so, which kind of conversion (and in some cases, the + associated symbol). + + + + + Returns True if the conversion exists, either as a widening or narrowing conversion. + + + If this returns True, exactly one of or will return True. + If this returns False, neither or will return True. + + + + + Returns True if this conversion a narrowing conversion, and not a widening conversion. + + + + + Returns True if this conversion is a widening conversion, and not a narrowing conversion. + + + + + Returns True if this conversion is an identity conversion. + + + Note that identity conversion are also considered widening conversions. + + + + + Returns True if this conversion is a default conversion (a conversion from the "Nothing" literal). + + Note that default conversions are considered widening conversions. + + + + Returns True if this conversion is a widening numeric conversion or a narrowing numeric conversion, as defined in + section 8.3. + + + + + Returns True if this conversion is a narrowing boolean conversion, as defined in section 8.2. + + + + + Returns True if this conversion is a widening reference conversion or narrowing reference conversion, as defined in + section 8.4. + + + + + Returns True if this conversion is a widening anonymous delegate conversion as defined in section 8.8, or a + narrowing anonymous delegate conversion as defined in section 8.9. + + + + + Returns True if this is a lambda conversion. + + + + + Returns True if this conversion is a widening array conversion or a narrowing array conversion, as defined in + section 8.5. + + + + + Returns True if this conversion a widening value type conversion or a narrowing value type conversion as defined in + section 8.6. + + + + + Returns True if this conversion a widening nullable value type conversion or a narrowing nullable value type + conversion as defined in section 8.6.1. + + + + + Returns True if this conversion a widening string conversion or a narrowing string conversion as defined in section + 8.7. + + + + + Returns True if this conversion a widening type parameter or a narrowing type parameter conversion, as defined in + section 8.10. + + + + + Returns True if this conversion a widening user defined or a narrowing user defined conversion, as defined in + section 8.11. + + + If this returns True, the involved conversion method can be obtained with the + property. + + + + + Returns the method that defines the user defined conversion, if any. Otherwise returns Nothing. + + + + + Returns True if two values are equal. + + The left value. + The right value. + + + + Returns True if two values are not equal. + + The left value. + The right value. + + + + Creates a from this Visual Basic conversion. + + The that represents this conversion. + + This is a lossy conversion; it is not possible to recover the original + from the struct. + + + + + Determines whether the specified object is equal to the current object. + + + The object to compare with the current object. + + + + + Determines whether the specified object is equal to the current object. + + + The object to compare with the current object. + + + + + Returns a hash code for the current object. + + + + + Returns a string that represents the current object. + + + + + Because flags can be combined, use the method IsIdentityConversion when testing for ConversionKind.Identity + + + + + + Can be combined with to indicate that the underlying value conversion is a predefined tuple conversion + + + + + Can be combined with to indicate that the underlying value conversion is a predefined tuple conversion + + + + + The purpose of this class is to answer questions about convertibility of one type to another. + It also answers questions about conversions from an expression to a type. + + The code is organized such that each method attempts to implement exactly one section of the + specification. + + + + + + Attempts to fold conversion of a constant expression. + + Returns Nothing if conversion cannot be folded. + + If conversion failed due to non-integer overflow, ConstantValue.Bad is returned. Consumer + is responsible for reporting appropriate diagnostics. + + If integer overflow occurs, integerOverflow is set to True and ConstantValue for overflowed result is returned. + Consumer is responsible for reporting appropriate diagnostics and potentially discarding the result. + + + + + Attempts to fold conversion of a constant expression. + + Returns Nothing if conversion cannot be folded, i.e. unexpected source and destination types. + Returns Bad value (Discriminator = ConstantValueTypeDiscriminator.Bad) if conversion failed due to non-integer overflow. + + If integer overflow occurs, integerOverflow is set to True and the overflowed result is returned. + + + + + This function classifies all intrinsic language conversions and user-defined conversions. + + + + + This function classifies all intrinsic language conversions, such as inheritance, + implementation, array covariance, and conversions between intrinsic types. + + + + + This function classifies all intrinsic language conversions and user-defined conversions. + + + + + Reclassify lambdas, array literals, etc. + + + + + This function classifies user-defined conversions between two types. + + + + + + + + + This function classifies user-defined conversions. + + + + + + + + + This function classifies all intrinsic language conversions, such as inheritance, + implementation, array covariance, and conversions between intrinsic types. + + + + + Helper structure to classify conversions from named types to interfaces + in accumulating fashion. + + + + + Accumulates classification information about conversion to interface. + Returns True when classification gets promoted to Identity, this method should not + be called after that. + + + + + Returns when classification gets promoted to Identity. + + + + + Returns true if and only if baseType is a base class of derivedType. + + + Derived class type. + + + Target base class type. + + + + + + + + Calculate MethodConversionKind based on required return type conversion. + + TODO: It looks like Dev10 MethodConversionKinds for return are badly named because + they appear to give classification in the direction opposite to the data + flow. This is very confusing. However, I am not going to rename them just yet. + Will do this when all parts are ported and working together, otherwise it will + be very hard to port the rest of the feature. + + We are trying to classify conversion between methods + ConvertFrom(...) As returnTypeOfConvertFromMethod -> ConvertTo(...) As returnTypeOfConvertToMethod + + The relaxation stub would look like: + Stub(...) As returnTypeOfConvertToMethod + Return ConvertFrom(...) + End ... + + + + + Returns the methods conversions for the given conversion kind + + We are trying to classify conversion between methods arguments + delegateInvoke(parameterConvertFrom) -> targetMethod(parameterConvertTo) + + The relaxation stub would look like (stub has same signature as delegate invoke): + Stub(parameterConvertFrom) + return targetMethod(parameterConvertTo) + End Method + + The conversion. + The delegate parameter type. + + + + Will set only bits used for delegate relaxation level. + + + + + Determine the relaxation level of a given conversion. This will be used by + overload resolution in case of conflict. This is to prevent applications that compiled in VB8 + to fail in VB9 because there are more matches. And the same for flipping strict On to Off. + + Will set only bits used for delegate relaxation level. + + + + + Determines whether a stub needed for the delegate creations conversion based on the given method conversions. + + The method conversions. + true if a stub needed for conversion; otherwise, false. + + + + + Tells whether the method conversion is considered to be narrowing or not. + + + + + Determines whether the given conversion is CLR supported conversion or not. + + The conversion. + true if the given conversion is a CLR supported conversion; otherwise, false. + + + + + Used by ClassifyUserDefinedConversion to pass an ArrayTypeSymbol that has a link back to the BoundArrayLiteral node. + This allows the ClassifyConversionOperatorInOutConversions to properly classify a conversion from the inferred array + type to the input type of a user defined conversion. + + + + + + Create a new ArrayTypeSymbol. + + + + + A map from Operator name to number of parameters and kind. + + + + + Operator kind and expected number of parameters. + + + + + Returns UnaryOperatorKind.Error in case of error, otherwise adjusted operator kind. + + + + + Returns result type of the operator or SpecialType.None if operator is not supported. + + + + + Attempts to fold unary operator applied to a constant expression. + + Returns Nothing if operator cannot be folded. + + If folding failed due to non-integer overflow, ConstantValue.Bad is returned. Consumer + is responsible for reporting appropriate diagnostics. + + If integer overflow occurs, integerOverflow is set to True and ConstantValue for overflowed result is returned. + Consumer is responsible for reporting appropriate diagnostics and potentially discarding the result. + + + + + Returns UnaryOperatorKind.Error in case of error, otherwise adjusted operator kind. + + For comparison operators, the operator type computed here is not + the result type of the comparison (which is typically boolean), + but is the type to which the operands are to be converted. For + other operators, the type computed here is both the result type + and the common operand type. + + + + + Attempts to fold binary operator applied to constant expressions. + + Returns Nothing if operator cannot be folded. + + If folding failed due to non-integer overflow or divide by zero, + ConstantValue.Bad is returned. Consumer is responsible for reporting appropriate diagnostics. + + If divide by zero occurs, divideByZero is set to True. + + If integer overflow occurs, integerOverflow is set to True and ConstantValue for overflowed result is returned. + Consumer is responsible for reporting appropriate diagnostics and potentially discarding the result. + + + + + Returns ConstantValue.Bad if, and only if, compound string length is out of supported limit. + + + + + Returns result type of the operator or SpecialType.None if operator is not supported. + + + + + Returns True if resolution of user defined conversions is complete, i.e. there were operators + applicable for the "Most Specific Widening Conversion" purposes. + This, however, doesn't mean that resolution is successful. + + + + + Returns false if operator should be ignored. + + + + + Returns True if resolution of user defined conversions is complete, i.e. there was an operator + that converts from the most specific source type to the most specific target type. + This, however, doesn't mean that resolution is successful. + + + + + The most encompassed type in a set of types is the one type that is encompassed + by all other types in the set. If no single type is encompassed by all other types, + then the set has no most encompassed type. In intuitive terms, the most encompassed + type is the "smallest" type in the set—the one type that can be converted from each + of the other types through a narrowing conversion. + + + + + The most encompassing type in a set of types is the one type that encompasses + all other types in the set. If no single type encompasses all other types, then + the set has no most encompassing type. In intuitive terms, the most encompassing + type is the "largest" type in the set—the one type to which each of the other + types can be converted through a widening conversion. + + + + + Returns number of types in the list of {input type, output type} that refer to a generic type parameter. + + + + + A quick check whether given conversion operator is a widening operator. + + + + + Collect user-defined conversion operators. + Operators declared in the same type are grouped together. + Within a group, widening operators are followed by narrowing operators. + + + + + Collect user-defined operators. + Operators declared in the same type are grouped together. + Within a group, name1 operators are followed by name2 operators. + + + + + Returns True if we should stop climbing inheritance hierarchy. + + + + + Given the type of operator's argument, return corresponding type to + look for operator in. Can return Nothing. + + + + + Information about a candidate from a group. + Will have different implementation for methods, extension methods and properties. + + + + + + Whether the method is used as extension method vs. called as a static method. + + + + + Whether the method is used as an operator. + + + + + Whether the method is used in a lifted to nullable form. + + + + + Precedence level for an extension method. + + + + + Extension method type parameters that were fixed during currying, if any. + If none were fixed, BitArray.Null should be returned. + + + + + Receiver type for extension method. Otherwise, containing type. + + + + + For extension methods, the type of the fist parameter in method's definition (i.e. before type parameters are substituted). + Otherwise, same as the ReceiverType. + + + + + Implementation for an ordinary method (based on usage). + + + + + Implementation for an extension method, i.e. it is used as an extension method. + + + + + Implementation for an operator + + + + + Implementation for a lifted operator. + + + + + Implementation for a property. + + + + + Only bits specific to delegate relaxation level are returned. + + + + + This might simplify error reporting. If not, consider getting rid of this property. + + + + + Perform overload resolution on the given method or property group, with the given arguments and names. + The names can be null if no names were supplied to any arguments. + + + + + Perform overload resolution on the given method group, with the given arguments. + + + + + Perform overload resolution on the given method group, with the given arguments and names. + The names can be null if no names were supplied to any arguments. + + + + + Perform overload resolution on the given array of property symbols. + + + + + Given instance method candidates gone through applicability analysis, + figure out if we should consider extension methods, if any. + + + + + §11.8.1 Overloaded Method Resolution + 6. Next, if, given any two members of the set, M and N, M is more applicable than N + to the argument list, eliminate N from the set. If more than one member remains + in the set and the remaining members are not equally applicable to the argument + list, a compile-time error results. + 7. Otherwise, given any two members of the set, M and N, apply the following tie-breaking rules, in order. + + Returns amount of applicable candidates left. + + Note that less applicable candidates are going to be eliminated if and only if there are most applicable + candidates. + + + + + Returns amount of applicable candidates left. + + + + + Returns True if there are most applicable candidates. + + indexesOfMostApplicableCandidates will contain indexes of equally applicable candidates, which are most applicable + by comparison to the other (non-equal) candidates. The indexes will be in ascending order. + + + + + §11.8.1 Overloaded Method Resolution + 7. Otherwise, given any two members of the set, M and N, apply the following tie-breaking rules, in order. + + + + + §11.8.1 Overloaded Method Resolution + 7. Otherwise, given any two members of the set, M and N, apply the following tie-breaking rules, in order. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.10. If the overload resolution is being done to resolve the target of a + delegate-creation expression from an AddressOf expression and M is a + function, while N is a subroutine, eliminate N from the set. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.8. If one or more arguments are AddressOf or lambda expressions, and all of the corresponding + delegate types in M match exactly, but not all do in N, eliminate N from the set. + 7.9. If one or more arguments are AddressOf or lambda expressions, and all of the corresponding + delegate types in M are widening conversions, but not all are in N, eliminate N from the set. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.9. If M did not use any optional parameter defaults in place of explicit + arguments, but N did, then eliminate N from the set. + + !!!WARNING!!! The index (7.9) is based on "VB11 spec [draft 3]" version of documentation rather + than Dev10 documentation. + TODO: Update indexes of other overload method resolution rules + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.7. If M and N both required type inference to produce type arguments, and M did not + require determining the dominant type for any of its type arguments (i.e. each the + type arguments inferred to a single type), but N did, eliminate N from the set. + + + + + §11.8.1.1 Applicability + + + + + §11.8.1.1 Applicability + + + + + This method groups equally applicable (§11.8.1.1 Applicability) candidates into buckets. + + Returns an ArrayBuilder of buckets. Each bucket is represented by an ArrayBuilder(Of Integer), + which contains indexes of equally applicable candidates from input parameter 'candidates'. + + + + + §11.8.1 Overloaded Method Resolution + 3. Next, eliminate all members from the set that require narrowing conversions + to be applicable to the argument list, except for the case where the argument + expression type is Object. + 4. Next, eliminate all remaining members from the set that require narrowing coercions + to be applicable to the argument list. If the set is empty, the type containing the + method group is not an interface, and strict semantics are not being used, the + invocation target expression is reclassified as a late-bound method access. + Otherwise, the normal rules apply. + + Returns amount of applicable candidates left. + + + + + + + §11.8.1 Overloaded Method Resolution + 2. Next, eliminate all members from the set that are inaccessible or not applicable to the argument list. + + Note, similar to Dev10 compiler this process will eliminate candidates requiring narrowing conversions + if strict semantics is used, exception are candidates that require narrowing only from numeric constants. + + Returns amount of applicable candidates left. + + + + + + + Figure out corresponding arguments for parameters §11.8.2 Applicable Methods. + + Note, this function mutates the candidate structure. + + If non-Nothing ArrayBuilders are returned through parameterToArgumentMap and paramArrayItems + parameters, the caller is responsible fo returning them into the pool. + + Assumptions: + 1) This function is never called for a candidate that should be rejected due to parameter count. + 2) Omitted arguments [ Call Goo(a, , b) ] are represented by OmittedArgumentExpression node in the arguments array. + 3) Omitted argument never has name. + 4) argumentNames contains Nothing for all positional arguments. + + !!! Should keep this function in sync with Binder.PassArguments, which uses data this function populates. !!! + !!! Should keep this function in sync with Binder.ReportOverloadResolutionFailureForASingleCandidate. !!! + !!! Everything we flag as an error here, Binder.ReportOverloadResolutionFailureForASingleCandidate should detect as well. !!! + + + + + Match candidate's parameters to arguments §11.8.2 Applicable Methods. + + Note, similar to Dev10 compiler this process will eliminate candidate requiring narrowing conversions + if strict semantics is used, exception are candidates that require narrowing only from numeric constants. + + Assumptions: + 1) This function is never called for a candidate that should be rejected due to parameter count. + 2) Omitted arguments [ Call Goo(a, , b) ] are represented by OmittedArgumentExpression node in the arguments array. + 3) Omitted argument never has name. + 4) argumentNames contains Nothing for all positional arguments. + + !!! Should keep this function in sync with Binder.PassArguments, which uses data this function populates. !!! + !!! Should keep this function in sync with Binder.ReportOverloadResolutionFailureForASingleCandidate. !!! + !!! Should keep this function in sync with InferenceGraph.PopulateGraph. !!! + !!! Everything we flag as an error here, Binder.ReportOverloadResolutionFailureForASingleCandidate should detect as well. !!! + + + + + Should be in sync with Binder.ReportByRefConversionErrors. + + + + + Should be in sync with Binder.ReportByValConversionErrors. + + + + + Performs an initial pass through the group of candidates and does + the following in the process. + 1) Eliminates candidates based on the number of supplied arguments and number of supplied generic type arguments. + 2) Adds additional entries for expanded ParamArray forms when applicable. + 3) Infers method's generic type arguments if needed. + 4) Substitutes method's generic type arguments. + 5) Eliminates candidates based on shadowing by signature. + This partially takes care of §11.8.1 Overloaded Method Resolution, section 7.1. + If M is defined in a more derived type than N, eliminate N from the set. + 6) Eliminates candidates with identical virtual signatures by applying various shadowing and + tie-breaking rules from §11.8.1 Overloaded Method Resolution, section 7.0 + • If M has fewer parameters from an expanded paramarray than N, eliminate N from the set. + 7) Takes care of unsupported overloading within the same type for instance methods/properties. + + Assumptions: + 1) Shadowing by name has been already applied. + 2) group can include extension methods. + 3) group contains original definitions, i.e. method type arguments have not been substituted yet. + Exception are extension methods with type parameters substituted based on receiver type rather + than based on type arguments supplied at the call site. + 4) group contains only accessible candidates. + 5) group doesn't contain members involved into unsupported overloading, i.e. differ by casing or custom modifiers only. + 6) group does not contain duplicates. + 7) All elements of arguments array are Not Nothing, omitted arguments are represented by OmittedArgumentExpression node. + + + This method is destructive to content of the [group] parameter. + + + + + Combine new candidate with the list of existing candidates, applying various shadowing and + tie-breaking rules. New candidate may or may not be added to the result, some + existing candidates may be removed from the result. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.5. If M is not an extension method and N is, eliminate N from the set. + 7.6. If M and N are extension methods and M was found before N, eliminate N from the set. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.4. If M is less generic than N, eliminate N from the set. + + + + + Implements shadowing based on + §11.8.1.3 Depth of genericity + + + + + + + False if node of candidates wins + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.3. If M and N are extension methods and the target type of M has fewer type + parameters than the target type of N, eliminate N from the set. + !!! Note that spec talks about "fewer type parameters", but it is not really about count. + !!! It is about one refers to a type parameter and the other one doesn't. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.1. If M is defined in a more derived type than N, eliminate N from the set. + This rule also applies to the types that extension methods are defined on. + 7.2. If M and N are extension methods and the target type of M is a class or + structure and the target type of N is an interface, eliminate N from the set. + + + + + For a receiver to match an instance, more or less, the type of that instance has to be convertible + to the type of the receiver with the same bit-representation (i.e. identity on value-types + and reference-convertibility on reference types). + Actually, we don't include the reference-convertibilities that seem nonsensical, e.g. enum() to underlyingtype() + We do include inheritance, implements and variance conversions amongst others. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + • If M has fewer parameters from an expanded paramarray than N, eliminate N from the set. + + + + + This class walks all the statements in some syntax, in order, except those statements that are contained + inside expressions (a statement can occur inside an expression if it is inside + a lambda.) + + This is used when collecting the declarations and declaration spaces of a method body. + + Typically the client overrides this class and overrides various Visit methods, being sure to always + delegate back to the base. + + + + + The only public entry point is the Infer method. + + + + + Returns True if the inference algorithm should be restarted. + + + + + Returns False if the search should be cancelled. + + + + + Returns False if the search should be cancelled. + + + + + Returns first Or a modified version Of first With common tuple names from both types. + + + + + This class associates a symbol with particular custom format for display. + It can be passed as an argument for an error message in place where symbol display should go, + which allows to defer building strings and doing many other things (like loading metadata) + associated with that until the error message is actually requested. + + + + + Displays a value in the VisualBasic style. + + + + + + Returns a string representation of an object of primitive type. + + A value to display as a string. + Options used to customize formatting of an Object value. + A string representation of an object of primitive type (or null if the type is not supported). + + Handles , , , + , , , , , + , , , , , + , and Nothing. + + + + + Formats string literal. + + Literal value. + Options used to customize formatting of a literal value. + + + + Displays a symbol in the VisualBasic style. + + + + + + Displays a symbol in the Visual Basic style, based on a . + + The symbol to be displayed. + The formatting options to apply. If Nothing is passed, will be used. + A formatted string that can be displayed to the user. + + The return value is not expected to be syntactically valid Visual Basic. + + + + + Displays a symbol in the Visual Basic style, based on a . + Based on the context, qualify type And member names as little as possible without + introducing ambiguities. + + The symbol to be displayed. + Semantic information about the context in which the symbol is being displayed. + A position within the Or . + The formatting options to apply. If null is passed, will be used. + A formatted string that can be displayed to the user. + + The return value is not expected to be syntactically valid Visual Basic. + + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + The symbol to be displayed. + The formatting options to apply. If Nothing Is passed, will be used. + A list of display parts. + + Parts are not localized until they are converted to strings. + + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + The symbol to be displayed. + Semantic information about the context in which the symbol is being displayed. + A position within the or . + The formatting options to apply. If null is passed, will be used. + A list of display parts. + + Parts are not localized until they are converted to strings. + + + + + Returns a string representation of an object of primitive type. + + A value to display as a string. + Whether or not to quote string literals. + Whether or not to display integral literals in hexadecimal. + A string representation of an object of primitive type (or null if the type is not supported). + + Handles , , , + , , , , , + , , , , , + , and Nothing. + + + + + Returns true if tuple type syntax can be used to refer to the tuple type without loss of information. + For example, it cannot be used when extension tuple is using non-default friendly names. + + + + + + + Return the number of special constraints ('Class', 'Structure', + and 'New') associated with the type parameter. + + + + Append a default argument (i.e. the default argument of an optional parameter). + Assumed to be non-null. + + + + + represents a single item in Handles list. + + + + + Kind of Handles event container. (Me, MyBase, MyClass or a WithEvents variable) + + + + + Symbol for the event handled in current Handles item. + + + + + Kind of a Handles item represented by a HandledEvent + + + + + Handles Me.Event1 + + + + + Handles MyClass.Event1 + + + + + Handles MyBase.Event1 + + + + + Handles SomeWithEventsVariable.Event1 + + + + + Virtual dispatch based on a symbol's particular class. + + Result type + Additional argument type + + + + Call the correct VisitXXX method in this class based on the particular type of symbol that is passed in. + + + + + Returns the System.String that represents the current TypedConstant. + + A System.String that represents the current TypedConstant. + + + + This is a SyntaxReference implementation that lazily finds the beginning of the block (if any) of the original syntax reference + + + + + Returns true if the specified node represents a lambda. + + + + + Given a node that represents a lambda body returns a node that represents the lambda. + + + + + SyntaxNode.GetCorrespondingLambdaBody(SyntaxNode) + + + We need to handle case when an old node that represents a lambda body with multiple nodes + of the same kind is mapped to a new node that belongs to the lambda body but is + different from the one that represents the new body. + + In that case isn't lambda representing node (the first range variable of a clause) + but its equivalent peer (another range variable of the same clause). + + + + + Returns true if the specified represents a body of a lambda. + + + + + Returns true if the specified is part of a lambda body. + Returns the node () that represents the containing lambda body. + + + VB lambda bodies may be non-contiguous sequences of nodes whose ancestor (parent or grandparent) is a lambda node. + Whenever we need to check whether a node is a lambda body node we should use this method. + + + + + If the specified node represents a lambda returns a node (or nodes) that represent its body (bodies). + + + + + If the specified node represents a "simple" lambda returns a node (or nodes) that represent its body (bodies). + Lambda is "simple" if all its body nodes are also its child nodes and vice versa. + + + + + Compares content of two nodes ignoring lambda bodies and trivia. + + + + + Non-user code lambdas are synthesized lambdas that create an instance of an anonymous type representing a pair of values, + or otherwise transform sequences/anonymous types from one form to another without calling user code. + TODO: Could we avoid generating proper lambdas for these? + + + + + Returns true if the specified node can represent a closure scope -- that is a scope of a captured variable. + Doesn't validate whether or not the node actually declares any captured variable. + + + + + this is a SyntaxReference implementation that lazily translates the result (SyntaxNode) of the original syntax reference + to other one. + + + + + Returns the TypeSyntax of the given NewExpressionSyntax if specified. + + + + + Returns the TypeSyntax of the given AsClauseSyntax if specified. + + + + + Returns the AttributeBlockSyntax of the given AsClauseSyntax if specified. + + + + + Updates the given SimpleNameSyntax node with the given identifier token. + This function is a wrapper that calls WithIdentifier on derived syntax nodes. + + + + The given simple name updated with the given identifier. + + + + Given an initializer expression infer the name of anonymous property or tuple element. + Returns Nothing if unsuccessful + + + + + Enumeration with all Visual Basic syntax node kinds. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an entire source file of VB code. + + + + + Represents an Option statement, such as "Option Strict On". + + + + + Represents an Imports statement, which has one or more imports clauses. + + + + + Represents the clause of an Imports statement that imports all members of a type or namespace or aliases a type or namespace. + + + + + Defines a XML namespace for XML expressions. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + + + Represents an Implements statement in a Class or Structure. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + + + Represents the type parameter list in a declaration. + + + + + Represents a type parameter on a generic type declaration. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + + + Represents a type parameter constraint that is a type. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + + + Represents the parameter list in a method declaration. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + + + A Declare statement that declares an external DLL method. + + + + + A Declare statement that declares an external DLL method. + + + + + A statement that declares a delegate type. + + + + + A statement that declares a delegate type. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + + + Represents event container specified through special keywords "Me", "MyBase" or + "MyClass".. + + + + + Represents event container that refers to a WithEvents member. + + + + + Represents event container that refers to a WithEvents member's property. + + + + + Represents a single handled event in a "Handles ..." clause. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + + + Represents an "= initializer" clause in a declaration for a variable, + parameter or automatic property. + + + + + Represent a parameter to a method, property, constructor, etc. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + + + Represents a group of attributes within "<" and ">" brackets. + + + + + Represents a single attribute declaration within an attribute list. + + + + + Represents a single attribute declaration within an attribute list. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + + + Represent an expression in a statement context. This may only be a invocation + or await expression in standard code but may be any expression in VB + Interactive code. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + + + Represents the declaration of one or more local variables or constants. + + + + + Represents a label statement. + + + + + Represents a "GoTo" statement. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + Represents a "Return" statement. + + + + + Represents a line If-Then-Else statement. + + + + + Represents part of a single line If statement, consisting of a beginning + if-statement, followed by a body of statement controlled by that beginning + statement. The Kind property returns if this is a SingleLineIf. + + + + + Represents the Else part of an If statement, consisting of a Else statement, + followed by a body of statement controlled by that Else. + + + + + Represents a block If...Then...Else...EndIf Statement. The Kind property can be + used to determine if it is a block or line If. + + + + + Represents part of an If statement, consisting of a beginning statement (If or + ElseIf), followed by a body of statement controlled by that beginning + statement. The Kind property returns if this is an If or ElseIf. + + + + + Represents the Else part of an If statement, consisting of a Else statement, + followed by a body of statement controlled by that Else. + + + + + Represents the If part or ElseIf part of a If...End If block (or line If). This + statement is always the Begin of a IfPart. The Kind can be examined to + determine if this is an If or an ElseIf statement. + + + + + Represents the If part or ElseIf part of a If...End If block (or line If). This + statement is always the Begin of a IfPart. The Kind can be examined to + determine if this is an If or an ElseIf statement. + + + + + Represents the Else part of a If...End If block (or line If). This statement is + always the Begin of a ElsePart. + + + + + Represents an entire Try...Catch...Finally...End Try statement. + + + + + Represents a Catch part of a Try...Catch...Finally...End Try statement, + consisting of a Catch statement, followed by a body of statements controlled by + that Catch statement. The Kind property returns which kind of part this is. + + + + + Represents the Finally part of a Try...Catch...Finally...End Try statement, + consisting of a Finally statement, followed by a body of statements controlled + by the Finally. + + + + + Represents the Try part of a Try...Catch...Finally...End Try. This + statement is always the Begin of a TryPart. + + + + + Represents the Catch part of a Try...Catch...Finally...End Try. This + statement is always the Begin of a CatchPart. + + + + + Represents the When/Filter clause of a Catch statement + + + + + Represents the Finally part of a Try...Catch...Finally...End Try. This + statement is always the Begin of a FinallyPart. + + + + + Represents the "Error" statement. + + + + + Represents an OnError Goto statement. + + + + + Represents an OnError Goto statement. + + + + + Represents an OnError Goto statement. + + + + + Represents an OnError Resume Next statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + + + Represents a case statement and its subsequent block. + + + + + Represents a case statement and its subsequent block. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + + + The "Else" part in a Case Else statement. + + + + + Represents a single value in a Case. + + + + + Represents a range "expression To expression" in a Case. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + + + Represents a For or For Each block, including the introducing statement, the + body and the "Next" (which can be omitted if a containing For has a Next with + multiple variables). + + + + + Represents a For or For Each block, including the introducing statement, the + body and the "Next" (which can be omitted if a containing For has a Next with + multiple variables). + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + + + The Step clause in a For Statement. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + + + Represents a Throw statement. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a left-hand side of a MidAssignment statement. + + + + + Represent a call statement (also known as a invocation statement). + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + + + Represent a RaiseEvent statement. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + + + Represents a ReDim statement. + + + + + Represents a ReDim statement. + + + + + Represents a ReDim statement clause. + + + + + Represents an "Erase" statement. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a parenthesized expression. + + + + + Identifies the special instance "Me" + + + + + Identifies the special instance "MyBase" + + + + + Identifies the special instance "MyClass" + + + + + Represents a GetType expression. + + + + + Represents a TypeOf...Is or IsNot expression. + + + + + Represents a TypeOf...Is or IsNot expression. + + + + + Represents a GetXmlNamespace expression. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + + + Represents a New expression that create an object of anonymous type. + + + + + Represents an expression that creates a new array. + + + + + Represents an expression that creates a new array without naming the element + type. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + + + Represents a single line lambda expression. + + + + + Represents a single line lambda expression. + + + + + Represents a multi-line lambda expression. + + + + + Represents a multi-line lambda expression. + + + + + Represents the header part of a lambda expression + + + + + Represents the header part of a lambda expression + + + + + Represents a parenthesized argument list. + + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + + + Represents an argument that is just an optional argument name and an expression. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + + + Represents the name and optional type of an expression range variable. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + + + Represents a "Let" query operator. + + + + + Represents an Aggregate query operator. + + + + + Represents the "Distinct" query operator. + + + + + Represents a "Where" query operator. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + + + Represents the "Group By" query operator. + + + + + Represents the "expression Equals expression" condition in a Join. + + + + + Represents a Join query operator. + + + + + Represents the "Group Join" query operator. + + + + + Represents the "Order By" query operator. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + + + Represents the "Select" query operator. + + + + + Represents an XML Document literal expression. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + + + Represents an XML element with content in an XML literal expression. + + + + + Represents Xml text. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + Represents an empty XML element of the form <element /> + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + + + Represents an XML CDATA section in an XML literal expression. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + + + A type name that represents a nullable type, such as "Integer?". + + + + + Represents an occurrence of a Visual Basic built-in type such as Integer or + String in source code. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + + + Represents a name in the global namespace. + + + + + Represents a parenthesized list of generic type arguments. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + Represent a Yield statement. + + + + + Represent a Await expression. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a sequence of characters appearing in source with no possible + meaning in the Visual Basic language (e.g. the semicolon ';'). This token + should only appear in SkippedTokenTrivia as an artifact of parsing error + recovery. + + + + + Represents an Xml NCName per Namespaces in XML 1.0 + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + + + Represents an identifier token. This might include brackets around the name and + a type character. + + + + + Represents an integer literal token. + + + + + Represents a floating literal token. + + + + + Represents a Decimal literal token. + + + + + Represents a Date literal token. + + + + + Represents a string literal token. + + + + + Represents a string literal token. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in source. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + + + Represents true whitespace: spaces, tabs, newlines and the like. + + + + + Represents line breaks that are syntactically insignificant. + + + + + Represents colons that are syntactically insignificant. + + + + + Represents a comment. + + + + + Represents an explicit line continuation character at the end of a line, i.e., + _ + + + + + Represents a ''' prefix for an XML Documentation Comment. + + + + + Represents text in a false preprocessor block + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + + + Represents an #Else pre-processing directive appearing in source. + + + + + Represents an #End If pre-processing directive appearing in source. + + + + + Represents the beginning of a #Region directive appearing in source. + + + + + Represents an #End Region directive appearing in source. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + + + Represents an #r directive appearing in scripts. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + + + Represents a "Do ... Loop" block. + + + + + Represents a "Do ... Loop" block. + + + + + Represents a "Do ... Loop" block. + + + + + Represents a "Do ... Loop" block. + + + + + Represents a "Do ... Loop" block. + + + + + Represents a simple "Do" statement that begins a "Do ... Loop" block. + + + + + Represents a "Do While" statement that begins a "Do ... Loop" block. + + + + + Represents a "Do Until" statement that begins a "Do ... Loop" block. + + + + + Represents a simple "Loop" statement that end a "Do ... Loop" block. + + + + + Represents a "Loop While" statement that end a "Do ... Loop" block. + + + + + Represents a "Loop Until" statement that end a "Do ... Loop" block. + + + + + Represents a "While ..." clause of a "Do" or "Loop" statement. + + + + + Represents an "Until ..." clause of a "Do" or "Loop" statement. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a NameOf expression. + + + + + Represents an interpolated string expression. + + + + + Represents literal text content in an interpolated string. + + + + + Represents an embedded expression in an interpolated string expression e.g. '{expression[,alignment][:formatString]}'. + + + + + Represents an alignment clause ', alignment' of an interpolated string embedded expression. + + + + + Represents a format string clause ':formatString' of an interpolated string embedded expression. + + + + + Represents a '$"' token in an interpolated string expression. + + + + + Represents literal character data in interpolated string expression. + + + + + Represents the end of interpolated string when parsing. + + + + + Represents tuple literal expression. + + + + + Represents tuple type. + + + + + Represents an element of a tuple type supplying only the type + + + + + Represents an element of a tuple type supplying element name and optionally a type. + + + + + Trivia created when merge conflict markers (like "<<<<<<<") are detected in source code + + + + + Determine if the given array contains the given kind. + + Array to search + Sought value + True if contains the value . + PERF: Not using Array.IndexOf here because it results in a call to IndexOf on the default EqualityComparer for SyntaxKind. The default comparer for SyntaxKind is + the ObjectEqualityComparer which results in boxing allocations. + + + + Find enclosing WithStatement if it exists. + + + + + + + + Simplified version of ExtractAnonymousTypeMemberName implemented on inner tokens. + + + + + Returns true if all arguments are of the specified kind and they are also missing. + + + + + Returns true if all arguments are missing. + + + + + + Given a syntax node of query clause returns its leading keyword + + + + + The base class for all nodes in the VB syntax tree. + + + + + Used by structured trivia which has no parent node, so need to know syntax tree explicitly + + + + + Returns a non-null SyntaxTree that owns this node. + If this node was created with an explicit non-null SyntaxTree, returns that tree. + Otherwise, if this node has a non-null parent, then returns the parent's SyntaxTree. + Otherwise, returns a newly created SyntaxTree rooted at this node, preserving this node's reference identity. + + + + + Returns the of the node. + + + + + The language name this node is syntax of. + + + + + The parent of this node. + + The parent node of this node, or Nothing if this node is the root. + + + + Deserialize a syntax node from a byte stream. + + + + + Returns True if this node represents a directive. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + Get the preceding trivia nodes of this node. If this node is a token, returns the preceding trivia + associated with this node. If this is a non-terminal, returns the preceding trivia of the first token + of this node. + + A list of the preceding trivia. + If this node is a non-terminal, the parents of the trivia will be the first token of this + non-terminal; NOT this node. + + + + Get the following trivia nodes of this node. If this node is a token, returns the following trivia + associated with this node. If this is a non-terminal, returns the following trivia of the last token + of this node. + + A list of the following trivia. + If this node is a non-terminal, the parents of the trivia will be the first token of this + non-terminal; NOT this node. + + + + Get all syntax errors associated with this node, or any child nodes, grand-child nodes, etc. The errors + are not in order. + + + + + Push any nodes that have errors in the given collection onto a stack + + + + + Given a error info from this node, create the corresponding syntax error with the right span. + + + + + Add an error to the given node, creating a new node that is the same except it has no parent, + and has the given error attached to it. The error span is the entire span of this node. + + The error to attach to this node + A new node, with no parent, that has this error added to it. + Since nodes are immutable, the only way to create nodes with errors attached is to create a node without an error, + then add an error with this method to create another node. + + + + Gets the location of this node. + + + + + Gets a SyntaxReference for this syntax node. SyntaxReferences can be used to regain access to a + syntax node without keeping the entire tree and source text in memory. + + + + + Gets a list of all the diagnostics in the sub tree that has this node as its root. + This method does not filter diagnostics based on compiler options like nowarn, warnaserror etc. + + + + + Finds a token according to the following rules: + 1) If position matches the End of the node's Span, then its last token is returned. + + 2) If node.FullSpan.Contains(position) then the token that contains given position is returned. + + 3) Otherwise an IndexOutOfRange is thrown + + + + + The parsed representation of a Visual Basic source document. + + + + + Map containing information about all conditional symbol definitions in the source file corresponding to a parsed syntax tree. + + + + + Conditional symbols map, where each key-value pair indicates: + Key: Conditional symbol name. + Value: Stack of all active conditional symbol definitions, i.e. #Const directives, in the source file corresponding to a parsed syntax tree. + All the defining #Const directives for a conditional symbol are pushed onto this stack in source code order. + Each stack entry is a tuple {InternalSyntax.CConst, Integer} where: + InternalSyntax.CConst: Constant value of the symbol. + Integer: Source position of the defining #Const directive. + + + + + Used to create new tree incrementally. + + + + + Get a reference to the given node. + + + + + A SyntaxTree is a tree of nodes that represents an entire file of VB + code, and is parsed by the parser. + + + + + Used to create new tree incrementally. + + + + + Get a reference to the given node. + + + + + The options used by the parser to produce the syntax tree. + + + + + Returns True for MyTemplate automatically added by compiler. + + + + + Produces a clone of a which will have current syntax tree as its parent. + + Caller must guarantee that if the same instance of makes multiple calls + to this function, only one result is observable. + + Type of the syntax node. + The original syntax node. + A clone of the original syntax node that has current as its parent. + + + + Gets the root node of the syntax tree. + + + + + Gets the root node of the syntax tree asynchronously. + + + By default, the work associated with this method will be executed immediately on the current thread. + Implementations that wish to schedule this work differently should override . + + + + + Gets the root node of the syntax tree if it is already available. + + + + + Gets the root of the syntax tree statically typed as . + + + Ensure that is true for this tree prior to invoking this method. + + Throws this exception if is false. + + + + Creates a new syntax based off this tree using a new source text. + + + If the new source text is a minor change from the current source text an incremental parse will occur + reusing most of the current syntax tree internal data. Otherwise, a full parse will occur using the new + source text. + + + + + Applies a text change to this syntax tree, returning a new syntax tree with the changes applied to it. + + + + + Creates a new syntax tree from a syntax node. + + An obsolete parameter. Diagnostic options should now be passed with + + + + + Internal helper for class to create a new syntax tree rooted at the given root node. + This method does not create a clone of the given root, but instead preserves its reference identity. + + NOTE: This method is only intended to be used from property. + NOTE: Do not use this method elsewhere, instead use method for creating a syntax tree. + + + + An obsolete parameter. Diagnostic options should now be passed with + + + + Creates a syntax tree by parsing the source text. + + + + + Gets a list of all the diagnostics in the sub tree that has the specified node as its root. + + + This method does not filter diagnostics based on compiler options like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the token and any related trivia. + + + This method does not filter diagnostics based on compiler options like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the trivia. + + + This method does not filter diagnostics based on compiler options like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics in either the sub tree that has the specified node as its root or + associated with the token and its related trivia. + + + This method does not filter diagnostics based on compiler options like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics in the syntax tree. + + + This method does not filter diagnostics based on compiler options like /nowarn, /warnaserror etc. + + + + + Gets the location in terms of path, line and column for a given . + + Span within the tree. + Cancellation token. + + that contains path, line and column information. + + + The values are not affected by line mapping directives (#ExternalSource). + + + + + Gets the location in terms of path, line and column after applying source line mapping directives (#ExternalSource). + + Span within the tree. + Cancellation token. + + A valid that contains path, line and column information. + + If the location path is not mapped the resulting path is . + + + + + + + + + + + Gets a location for the specified text . + + + + + Determines if two trees are the same, disregarding trivia differences. + + The tree to compare against. + + If true then the trees are equivalent if the contained nodes and tokens declaring metadata visible symbolic information are equivalent, + ignoring any differences of nodes inside method bodies or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Produces a pessimistic list of spans that denote the regions of text in this tree that + are changed from the text of the old tree. + + The old tree. Cannot be Nothing. + The list is pessimistic because it may claim more or larger regions than actually changed. + + + + Gets a list of text changes that when applied to the old tree produce this tree. + + The old tree. Cannot be Nothing. + The list of changes may be different than the original changes that produced this tree. + + + + Represents a that descends an entire tree + visiting each SyntaxNode and its child s and s in depth-first order. + + + + + Determine whether there is any substitution of type parameters that will + make two types identical. + + + + + Determine whether there is any substitution of type parameters that will + make two types identical. + + The generic containing type. + LHS + RHS + + Substitutions performed so far (or null for none). + Keys are type parameters, values are types (possibly type parameters). + Will be updated with new substitutions by the callee. + Irrelevant if false is returned. + + True if there exists a type map such that Map(LHS) == Map(RHS). + + Derived from C# Dev10's BSYMMGR::UnifyTypes. + Two types will not unify if they have different custom modifiers. + + + + + Add a type parameter -> type argument substitution to a TypeSubstitution object, returning a new TypeSubstitution object + ByRef. + + + + + Return true if the given type contains the specified type parameter. + + + + + Utility functions to check if two implemented interfaces have variance ambiguity. + + What is "Variance Ambiguity"? Here's an example: + Class ReflectionType + Implements IEnumerable(Of Field) + Implements IEnumerable(Of Method) + Public Sub GetEnumeratorF() As IEnumerator(Of Field) Implements IEnumerable(Of Field).GetEnumerator ... + Public Sub GetEnumeratorM() As IEnumerator(Of Method) Implements IEnumerable(Of Method).GetEnumerator ... + End Class + Dim x as new ReflectionType + Dim y as IEnumerable(Of Member) = x + Dim z = y.GetEnumerator() + + Note that, through variance, both IEnumerable(Of Field) and IEnumerable(Of Method) have widening + conversions to IEnumerable(Of Member). So it's ambiguous whether the initialization of "z" would + invoke GetEnumeratorF or GetEnumeratorM. This function avoids such ambiguity at the declaration + level, i.e. it reports a warning on the two implements classes inside ReflectionType that they + may lead to ambiguity. + + + + + Determine if two interfaces that were constructed from the same original definition + have variance ambiguity. + + We have something like left=ICocon(Of Mammal, int32[]), right=ICocon(Of Fish, int32[]) + for some interface ICocon(Of Out T, In U). And we have to decide if left and right + might lead to ambiguous member-lookup later on in execution. + + To do this: go through each type parameter T, U... + * For "Out T", judge whether the arguments Mammal/Fish cause ambiguity or prevent it. + * For "In T", judge whether the arguments int32[]/int32[] cause ambiguity or prevent it. + + "Causing/preventing ambiguity" is described further below. + + Given all that, ambiguity was prevented in any positions, then left/right are fine. + Otherwise, if ambiguity wasn't caused in any positions, then left/right are fine. + Otherwise, left/right have an ambiguity. + + + + + Check two corresponding type arguments T1 and T2 and determine if the cause or prevent variable ambiguity. + + Identical types never cause or prevent ambiguity. + + If there could exist a **distinct** third type T3, such that T1 and T2 both convert via the variance + conversion to T3, then ambiguity is caused. This boils down to: + * Invariant parameters never cause ambiguity + * Covariant parameters "Out T": ambiguity is caused when the two type arguments + are non-object types not known to be values (T3=Object) + * Contravariant parameters "In U": ambiguity is caused when both: + - Neither T1 or T2 is a value type or a sealed (NotInheritable) reference type + - If T1 and T2 are both class types, one derives from the other. + (T3 is some type deriving or implementing both T1 and T2) + + Ambiguity is prevented when there T1 and T2 cannot unify to the same type, and there + cannot be a (not necessarily distinct) third type T3 that both T1 and T2 convert to via + the variance conversion. + + This boils down to: + * Invariant parameters: Ambiguity is prevented when: + - they are non-unifying + * Covariant parameters "Out T": Ambiguity is prevented when both: + - they are non-unifying + - at least one is a value type + * Contravariant parameters "In U": Ambiguity is prevented when: + - they are non-unifying AND + - at least one is known to be a value type OR + - both are known to be class types and neither derives from the other. + + + + + A class representing Visual Basic compilation Options. + + + + + Initializes a new instance of the VisualBasicCompilationOptions type with various options. + + The compilation output kind. + An optional parameter to specify the name of the assembly that this module will be a part of. + An optional parameter to specify the class or module that contains the Sub Main procedure. + An optional parameter to specify an alternate DefaultScriptClassName object to be used. + An optional collection of GlobalImports . + An optional parameter to specify the name of the default root namespace. + An optional parameter to specify the default Option Strict behavior. + An optional parameter to specify default Option Infer behavior. + An optional parameter to specify the default Option Explicit behavior. + An optional parameter to specify the default Option Compare Text behavior. + An optional parameter to specify the embedded Visual Basic Core Runtime behavior. + An optional parameter to specify enabling/disabling overflow checking. + An optional parameter to specify enabling/disabling concurrent build. + An optional parameter to specify a key container name for a key pair to give an assembly a strong name. + An optional parameter to specify a file containing a key or key pair to give an assembly a strong name. + An optional parameter to specify a public key used to give an assembly a strong name. + An optional parameter to specify whether the assembly will be fully or partially signed. + An optional parameter to specify which platform version of common language runtime (CLR) can run compilation. + An optional parameter to specify the general warning level. + An optional collection representing specific warnings that differ from general warning behavior. + An optional parameter to enabled/disable optimizations. + An optional parameter to specify the parse options. + An optional parameter to specify the XML file resolver. + An optional parameter to specify the source file resolver. + An optional parameter to specify . + An optional parameter to specify . + An optional parameter to specify . + An optional parameter to specify whether the assembly will be public signed. + An optional parameter to specify whether or not suppressed diagnostics should be reported. + An optional parameter to specify metadata import options. + + + + Gets the global imports collection. + + The global imports. + + + + Gets the default namespace for all source code in the project. Corresponds to the + "RootNamespace" project option or the "/rootnamespace" command line option. + + The default namespace. + + + + Gets the Option Strict Setting. + + The Option Strict setting. + + + + Gets the Option Infer setting. + + The Option Infer setting. True if Option Infer On is in effect by default. False if Option Infer Off is on effect by default. + + + + Gets the Option Explicit setting. + + The Option Explicit setting. True if Option Explicit On is in effect by default. False if Option Explicit Off is on by default. + + + + Gets the Option Compare Text setting. + + + The Option Compare Text Setting, True if Option Compare Text is in effect by default. False if Option Compare Binary is + in effect by default. + + + + + Gets the Embed Visual Basic Core Runtime setting. + + + The EmbedVbCoreRuntime setting, True if VB core runtime should be embedded in the compilation. Equal to '/vbruntime*' + + + + + Gets the embedded declaration suppression setting. + + + The embedded declaration suppression setting. + + + + + Gets the setting to ignore corlib types when duplicates are found. + + + + + Gets the Parse Options setting. + Compilation level parse options. Used when compiling synthetic embedded code such as My template + + The Parse Options Setting. + + + + Creates a new VisualBasicCompilationOptions instance with a different OutputKind specified. + + The Output Kind. + A new instance of VisualBasicCompilationOptions, if the output kind is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance With a different ModuleName specified. + + The moduleName. + A new instance of VisualBasicCompilationOptions, if the module name is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a Script Class Name specified. + + The name for the ScriptClassName. + A new instance of VisualBasicCompilationOptions, if the script class name is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different Main Type name specified. + + The name for the MainType . + A new instance of VisualBasicCompilationOptions, if the main type name is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different global imports specified. + + A collection of Global Imports . + A new instance of VisualBasicCompilationOptions. + + + + Creates a new VisualBasicCompilationOptions instance with a different global imports specified. + + A collection of Global Imports . + A new instance of VisualBasicCompilationOptions. + + + + Creates a new VisualBasicCompilationOptions instance with a different global imports specified. + + A collection of Global Imports . + A new instance of VisualBasicCompilationOptions. + + + + Creates a new VisualBasicCompilationOptions instance with a different root namespace specified. + + The root namespace. + A new instance of VisualBasicCompilationOptions, if the root namespace is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different option strict specified. + + The Option Strict setting. + A new instance of VisualBasicCompilationOptions, if the option strict is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different option infer specified. + + The Option infer setting. + A new instance of VisualBasicCompilationOptions, if the option infer is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different option explicit specified. + + The Option Explicit setting. + A new instance of VisualBasicCompilationOptions, if the option explicit is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different Option Compare Text specified. + + The Option Compare Text setting. + A new instance of VisualBasicCompilationOptions, if the option compare text is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different Embed VB Core Runtime specified. + + The Embed VB Core Runtime setting. + A new instance of VisualBasicCompilationOptions, if the embed vb core runtime is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different Overflow checks specified. + + The overflow check setting. + A new instance of VisualBasicCompilationOptions, if the overflow check is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different concurrent build specified. + + The concurrent build setting. + A new instance of VisualBasicCompilationOptions, if the concurrent build is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different deterministic mode specified. + The deterministic mode. + A new instance of VisualBasicCompilationOptions, if the deterministic mode is different; otherwise the current instance. + + + + + Creates a new VisualBasicCompilationOptions instance with a different extended custom debug information specified. + + The extended custom debug information setting. + A new instance of VisualBasicCompilationOptions, if the extended custom debug information is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with different embedded declaration suppression setting specified. + + The embedded declaration suppression setting. + A new instance of VisualBasicCompilationOptions, if the embedded declaration suppression setting is different; otherwise current instance. + Only expected to be called from the expression compiler. + + + + Creates a new VisualBasicCompilationOptions instance with different ignoreCorLibraryDuplicatedTypes setting specified. + + The ignoreCorLibraryDuplicatedTypes setting. + Only expected to be called from the expression compiler and interactive. + + + + Creates a new VisualBasicCompilationOptions instance with a different cryptography key container specified + + The name of the cryptography key container. + A new instance of VisualBasicCompilationOptions, if the cryptography key container name is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different cryptography key file path specified. + + The cryptography key file path. + A new instance of VisualBasicCompilationOptions, if the cryptography key path is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different public key. + + The cryptography key file path. + A new instance of VisualBasicCompilationOptions, if the public key is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different delay signing specified. + + The delay signing setting. + A new instance of VisualBasicCompilationOptions, if the delay sign is different; otherwise current instance. + + + + Creates a new instance with a different platform specified. + + The platform setting. + A new instance of VisualBasicCompilationOptions, if the platform is different; otherwise current instance. + + + + Creates a new instance with a different report warning specified. + + The Report Warning setting. + A new instance of VisualBasicCompilationOptions, if the report warning is different; otherwise current instance. + + + + Creates a new instance with different specific warnings specified. + + Specific report warnings. + A new instance of VisualBasicCompilationOptions, if the dictionary of report warning is different; otherwise current instance. + + + + Creates a new instance with different specific warnings specified. + + Specific report warnings. + A new instance of VisualBasicCompilationOptions, if the dictionary of report warning is different; otherwise current instance. + + + + Creates a new instance with specified suppress diagnostics reporting option. + + Report suppressed diagnostics setting. + A new instance of VisualBasicCompilationOptions, if the value is different from the current value; otherwise current instance. + + + + Creates a new instance with a specified . + + A new instance of , if the value is different; otherwise the current instance. + + + + Creates a new instance with a specified . + + A new instance of , if the value is different; otherwise the current instance. + + + + Creates a new instance with a different parse option specified. + + The parse option setting. + A new instance of VisualBasicCompilationOptions, if the parse options is different; otherwise current instance. + + + + Determines whether the current object is equal to another object of the same type. + + A VisualBasicCompilationOptions to compare with this object + A boolean value. True if the current object is equal to the other parameter; otherwise, False. + + + + Indicates whether the current object is equal to another object. + + A object to compare with this object + A boolean value. True if the current object is equal to the other parameter; otherwise, False. + + + + Creates a hashcode for this instance. + + A hashcode representing this instance. + + + + Determines if the given raw kind value belongs to the Visual Basic enumeration. + + The raw value to test. + when the raw value belongs to the Visual Basic syntax kind; otherwise, . + + + + Returns for from property. + + + + + Returns for from property. + + + + + Returns for from property. + + + + + Returns for from property. + + + + + Checks to see if SyntaxToken is a bracketed identifier. + + The source SyntaxToken. + A boolean value, True if token represents a bracketed Identifier. + + + + Returns the Type character for a given syntax token. This returns type character for Identifiers or Integer, Floating Point or Decimal Literals. + Examples: Dim a$ or Dim l1 = 1L + + The source SyntaxToken. + A type character used for the specific Internal Syntax Token Types. + + + + The source token base for Integer literals. Base can be Decimal, Hex or Octal. + + The source SyntaxToken. + An instance representing the integer literal base. + + + + Determines if the token represents a reserved or contextual keyword + + The source SyntaxToken. + A boolean value True if token is a keyword. + + + + Determines if the token represents a reserved keyword + + The source SyntaxToken. + A boolean value True if token is a reserved keyword. + + + + Determines if the token represents a contextual keyword + + A boolean value True if token is a contextual keyword. + + + + Determines if the token represents a preprocessor keyword + + The source SyntaxToken. + A boolean value True if token is a pre processor keyword. + + + + Returns the Identifiertext for a specified SyntaxToken. + + + + + Insert one or more tokens in the list at the specified index. + + A new list with the tokens inserted. + + + + Add one or more tokens to the end of the list. + + A new list with the tokens added. + + + + Replaces trivia on a specified SyntaxToken. + + The source SyntaxToken to change trivia on. + The original Trivia. + The updated Trivia. + The updated SyntaxToken with replaced trivia. + + + + Replaces trivia on a specified SyntaxToken. + + + + + Gets the DirectiveTriviaSyntax items for a specified SyntaxNode with optional filtering. + + The source SyntaxNode. + The optional DirectiveTrivia Syntax filter predicate. + A list of DirectiveTriviaSyntax items + + + + Gets the first DirectiveTriviaSyntax item for a specified SyntaxNode. + + The source SyntaxNode. + The optional DirectiveTriviaSyntax filter predicate. + The first DirectiveSyntaxTrivia item. + + + + Gets the last DirectiveTriviaSyntax item for a specified SyntaxNode. + + The source node + The optional DirectiveTriviaSyntax filter predicate. + The last DirectiveSyntaxTrivia item. + + + + Gets the root CompilationUnitSyntax for a specified SyntaxTree. + + The source SyntaxTree. + A CompilationUnitSyntax. + + + + Gets the reporting state for a warning at a given source location based on warning directives. + + + + + Determines if symbol is Shared. + + The source symbol. + A boolean value, True if symbol is Shared; otherwise False. + + + + Gets all module members in a namespace. + + The source namespace symbol. + An ImmutableArray of NamedTypeSymbol for all module members in namespace. + + + + Gets all module members in a specified namespace. + + The source namespace symbol. + The name of the namespace. + An ImmutableArray of NamedTypeSymbol for all module members in namespace. + + + + Gets the Semantic Model OptionStrict property. + + A source Semantic model object. + The OptionStrict object for the semantic model instance OptionStrict property, otherwise Null if semantic model is Null. + + + + Gets the Semantic Model OptionInfer property. + + A source Semantic model object. + A boolean values, for the semantic model instance OptionInfer property. otherwise Null if semantic model is Null. + + + + Gets the Semantic Model OptionExplicit property. + + A source Semantic model object. + A boolean values, for the semantic model instance OptionExplicit property. otherwise Null if semantic model is Null. + + + + Gets the Semantic Model OptionCompareText property. + + A source Semantic model object. + A boolean values, for the semantic model instance OptionCompareText property. otherwise Null if semantic model is Null. + + + + Gets the compilation RootNamespace property. + + A source Compilation object. + A NamespaceSymbol instance, for the compilation instance RootNamespace property. otherwise Null if compilation instance is Null. + + + + Gets the compilation AliasImports property. + + A source Compilation object. + An ImmutableArray of AliasSymbol, from the compilation instance AliasImports property; otherwise an empty ImmutableArray if compilation instance is Null. + + + + Gets the compilation MemberImports property. + + A source Compilation object. + An ImmutableArray of NamespaceOrTypeSymbol, from the compilation instance MemberImports property; otherwise an empty ImmutableArray if compilation instance is Null. + + + + Determines what kind of conversion there is between the specified types. + + A source Compilation object. + A source Typesymbol + A destination Typesymbol + A Conversion instance, representing the kind of conversion between the two type symbols; otherwise Null if compilation instance is Null. + + + + Gets the special type symbol in current compilation. + + A source Compilation object. + The SpecialType to get. + A NamedTypeSymbol for the specified type in compilation; Null if compilation is Null. + + + + Determines what kind of conversion there is between the expression syntax and a specified type. + + A source semantic model. + A source expression syntax. + A destination TypeSymbol. + A Conversion instance, representing the kind of conversion between the expression and type symbol; otherwise Null if semantic model instance is Null. + + + + Determines what kind of conversion there is between the expression syntax and a specified type. + + A source semantic model. + A position within the expression syntax. + A source expression syntax. + A destination TypeSymbol. + A Conversion instance, representing the kind of conversion between the expression and type symbol; otherwise Null if semantic model instance is Null. + + + + Gets the corresponding symbol for a specified identifier. + + A source semantic model. + A IdentifierSyntax object. + A cancellation token. + A symbol, for the specified identifier; otherwise Null if semantic model is Null. + + + + Gets the corresponding symbol for a specified tuple element. + + A source semantic model. + A TupleElementSyntax object. + A cancellation token. + A symbol, for the specified element; otherwise Nothing. + + + + Gets the corresponding PropertySymbol for a specified FieldInitializerSyntax. + + A source semantic model. + A FieldInitializerSyntax object. + A cancellation token. + A PropertySymbol. Null if semantic model is null. + + + + Gets the corresponding NamedTypeSymbol for a specified AnonymousObjectCreationExpressionSyntax. + + + + + Gets the corresponding RangeVariableSymbol for a specified ExpressionRangeVariableSyntax. + + + + + Gets the corresponding RangeVariableSymbol for a specified CollectionRangeVariableSyntax. + + + + + Gets the corresponding RangeVariableSymbol for a specified AggregationRangeVariableSyntax. + + + + + Gets the corresponding LabelSymbol for a specified LabelStatementSyntax. + + + + + Gets the corresponding FieldSymbol for a specified EnumMemberDeclarationSyntax. + + + + + Gets the corresponding NamedTypeSymbol for a specified TypeStatementSyntax. + + + + + Gets the corresponding NamedTypeSymbol for a specified TypeBlockSyntax. + + + + + Gets the corresponding NamedTypeSymbol for a specified EnumStatementSyntax. + + + + + Gets the corresponding NamedTypeSymbol for a specified EnumBlockSyntax. + + + + + Gets the corresponding NamespaceSymbol for a specified NamespaceStatementSyntax. + + + + + Gets the corresponding NamespaceSymbol for a specified NamespaceBlockSyntax. + + + + + Gets the corresponding ParameterSymbol for a specified ParameterSyntax. + + + + + Gets the corresponding TypeParameterSymbol Symbol for a specified TypeParameterSyntax. + + + + + Gets the corresponding NamedTypeSymbol for a specified DelegateStatementSyntax. + + + + + Gets the corresponding MethodSymbol for a specified SubNewStatementSyntax. + + + + + Gets the corresponding MethodSymbol for a specified MethodStatementSyntax. + + + + + Gets the corresponding symbol for a specified DeclareStatementSyntax. + + + + + Gets the corresponding MethodSymbol for a specified OperatorStatementSyntax. + + + + + Gets the corresponding MethodSymbol for a specified MethodBlockBaseSyntax. + + + + + Gets the corresponding PropertySymbol for a specified PropertyStatementSyntax. + + + + + Gets the corresponding EventSymbol for a specified EventStatementSyntax. + + + + + Gets the corresponding PropertySymbol for a specified PropertyBlockSyntax. + + + + + Gets the corresponding EventSymbol for a specified EventBlockSyntax. + + + + + Gets the corresponding LocalSymbol for a specified CatchStatementSyntax. + + + + + Gets the corresponding MethodSymbol for a specified AccessorStatementSyntax. + + + + + Gets the corresponding AliasSymbol for a specified AliasImportsClauseSyntax. + + + + + Gets the corresponding ForEachStatementInfo containing semantic info for a specified ForEachStatementSyntax. + + + + + Gets the corresponding ForEachStatementInfo containing semantic info for a specified ForBlockSyntax. + + + + + Gets the corresponding AwaitExpressionInfo containing semantic info for a specified AwaitExpressionSyntax. + + + + + If the given node is within a preprocessing directive, gets the preprocessing symbol info for it. + + + + + Gets the corresponding SymbolInfo containing semantic info for a specified ExpressionSyntax. + + + + + Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax + within . + + + + + Gets the corresponding SymbolInfo containing semantic info for a specified CrefReferenceSyntax. + + + + + Gets the corresponding SymbolInfo containing semantic info for a specified AttributeSyntax. + + + + + Gets the corresponding SymbolInfo containing semantic info for a specified AttributeSyntax. + + + + + Gets the corresponding SymbolInfo containing semantic info for specified AttributeSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the corresponding TypeInfo containing semantic info for a specified ExpressionSyntax. + + + + + Gets the underlying information from an that was created from Visual Basic code. + + The conversion expression to get original info from. + The underlying . + If the was not created from Visual Basic code. + + + + Gets the underlying information for InConversion of that was created from Visual Basic code. + + The argument to get original info from. + The underlying of the InConversion. + If the was not created from Visual Basic code. + + + + Gets the underlying information for OutConversion of that was created from Visual Basic code. + + The argument to get original info from. + The underlying of the OutConversion. + If the was not created from Visual Basic code. + + + + Gets the underlying information from this . This + conversion is applied before the operator is applied to the result of this conversion and . + + + This compound assignment must have been created from Visual Basic code. + + + + + Gets the underlying information from this . This + conversion is applied after the operator is applied, before the result is assigned to . + + + This compound assignment must have been created from Visual Basic code. + + + + + Gets the corresponding TypeInfo containing semantic info for a speculating an ExpressionSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the corresponding TypeInfo containing semantic info for a specified AttributeSyntax. + + + + + Gets the corresponding ImmutableArray of Symbols for a specified ExpressionSyntax. + + + + + Gets the corresponding ImmutableArray of Symbols for a speculating an ExpressionSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the corresponding ImmutableArray of Symbols for a specified AttributeSyntax. + + + + + If "nameSyntax" resolves to an alias name, return the AliasSymbol corresponding + to A. Otherwise return null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + + + + Returns information about methods associated with CollectionRangeVariableSyntax. + + + + + Returns information about methods associated with AggregateClauseSyntax. + + + + + Returns symbol information for a query clause. + + + + + Syntax node type + Symbol information returned + + + + Returns Distinct method associated with . + + + + Returns Where method associated with . + + + + Returns TakeWhile/SkipWhile method associated with . + + + + Returns Take/Skip method associated with . + + + + Returns GroupBy method associated with . + + + + Returns Join/GroupJoin method associated with . + + + + Returns Select method associated with , or if none is. + + + + + Returns Select method associated with , which has only one + and is the only query clause within + . otherwise. + The method call is injected by the compiler to make sure that query is translated to at + least one method call. + + + + + + + + + + + + + + . + Use instead. + + + + + + + + Returns Select method associated with within a , + or otherwise if none is. + + + + + Returns aggregate function associated with . + + + + + Returns OrderBy/OrderByDescending/ThenBy/ThenByDescending method associated with . + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze data-flow within an expression. + + + + + Analyze data-flow within a set of contiguous statements. + + + + + Analyze data-flow within a statement. + + + + + Gets the SemanticModel for a MethodBlockBaseSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the SemanticModel for a RangeArgumentSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the SemanticModel for a ExecutableStatementSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the SemanticModel for a EqualsValueSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the SemanticModel for a AttributeSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the SemanticModel for a TypeSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Emit the IL for the compilation into the specified stream. + + Compilation. + Path of the file to which the compilation will be written. + + Path of the file to which the compilation's debug info will be written. + Also embedded in the output file. Nothing to forego PDB generation. + + Path of the file to which the compilation's XML documentation will be written. Nothing to forego XML generation. + Path of the file from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. + List of the compilation's managed resources. Nothing to indicate that there are none. + To cancel the emit process. + Compilation or path is null. + Path is empty or invalid. + An error occurred while reading or writing a file. + + + + Represents Visual Basic parse options. + + + + + Creates an instance of VisualBasicParseOptions. + + The parser language version. + The documentation mode. + The kind of source code. + An enumerable sequence of KeyValuePair representing preprocessor symbols. + + + + Returns the specified language version, which is the value that was specified in the call to the + constructor, or modified using the method, or provided on the command line. + + + + + Returns the effective language version, which the compiler uses to select the + language rules to apply to the program. + + + + + The preprocessor symbols to parse with. + + + May contain duplicate keys. The last one wins. + + + + + Returns a collection of preprocessor symbol names. + + + + + Returns a VisualBasicParseOptions instance for a specified language version. + + The parser language version. + A new instance of VisualBasicParseOptions if different language version is different; otherwise current instance. + + + + Returns a VisualBasicParseOptions instance for a specified source code kind. + + The parser source code kind. + A new instance of VisualBasicParseOptions if source code kind is different; otherwise current instance. + + + + Returns a VisualBasicParseOptions instance for a specified documentation mode. + + + A new instance of VisualBasicParseOptions if documentation mode is different; otherwise current instance. + + + + Returns a VisualBasicParseOptions instance for a specified collection of KeyValuePairs representing pre-processor symbols. + + A collection representing pre-processor symbols + A new instance of VisualBasicParseOptions. + + + + Returns a VisualBasicParseOptions instance for a specified collection of KeyValuePairs representing pre-processor symbols. + + An parameter array of KeyValuePair representing pre-processor symbols. + A new instance of VisualBasicParseOptions. + + + + Returns a VisualBasicParseOptions instance for a specified collection of KeyValuePairs representing pre-processor symbols. + + An ImmutableArray of KeyValuePair representing pre-processor symbols. + A new instance of VisualBasicParseOptions. + + + + Returns a ParseOptions instance for a specified Source Code Kind. + + The parser source code kind. + A new instance of ParseOptions. + + + + Returns a ParseOptions instance for a specified Documentation Mode. + + The documentation mode. + A new instance of ParseOptions. + + + + Enable some experimental language features for testing. + + + + + Determines whether the current object is equal to another object of the same type. + + An VisualBasicParseOptions object to compare with this object + A boolean value. True if the current object is equal to the other parameter; otherwise, False. + + + + Indicates whether the current object is equal to another object. + + An object to compare with this object + A boolean value. True if the current object is equal to the other parameter; otherwise, False. + + + + Returns a hashcode for this instance. + + A hashcode representing this instance. + + + trees({0}) + + + trees({0}) must have root node with SyntaxKind.CompilationUnit. + + + Cannot add compiler special tree + + + Syntax tree already present + + + Submission can have at most one syntax tree. + + + Cannot remove compiler special tree + + + SyntaxTree '{0}' not found to remove + + + Tree must have a root node with SyntaxKind.CompilationUnit + + + Compilation (Visual Basic): + + + Node is not within syntax tree + + + Can't reference compilation of type '{0}' from {1} compilation. + + + position of type parameter too large + + + Associated type does not have type parameters + + + function return type + + + Type argument cannot be Nothing + + + Wrong number of type arguments + + + file '{0}' could not be found + + + unable to open response file '{0}' + + + option '{0}' requires '{1}' + + + option '{0}' can be followed only by '+' or '-' + + + the value '{1}' is invalid for option '{0}' + + + Compilation options '{0}' and '{1}' can't both be specified at the same time. + + + The language name '{0}' is invalid. + + + The language name for /preferreduilang is invalid + + + The options /vbruntime* and /target:module cannot be combined. + + + Command-line syntax error: Invalid Guid format '{0}' for option '{1}' + + + Command-line syntax error: Missing Guid for option '{1}' + + + Algorithm '{0}' is not supported + + + unrecognized option '{0}'; ignored + + + Unrecognized command-line option + + + no input sources specified + + + source file '{0}' specified multiple times + + + Source file specified multiple times + + + can't open '{0}' for writing: {1} + + + code page '{0}' is invalid or not installed + + + the file '{0}' is not a text file + + + could not find library '{0}' + + + Metadata references not supported. + + + cannot specify both /win32icon and /win32resource + + + ignoring /noconfig option because it was specified in a response file + + + Ignoring /noconfig option because it was specified in a response file + + + warning number '{0}' for the option '{1}' is either not configurable or not valid + + + Warning number is either not configurable or not valid + + + cannot infer an output file name from resource only input files; provide the '/out' option + + + the /moduleassemblyname option may only be specified when building a target of type 'module' + + + '{0}' is not a valid value for /moduleassemblyname + + + Error embedding Win32 manifest: Option /win32manifest conflicts with /nowin32manifest. + + + Option /win32manifest ignored. It can be specified only when the target is an assembly. + + + Option /win32manifest ignored + + + File name '{0}' is empty, contains invalid characters, has a drive specification without an absolute path, or is too long + + + Statement is not valid in a namespace. + + + Type '{0}' is not defined. + + + 'Next' expected. + + + Character constant must contain exactly one character. + + + Reference required to assembly '{0}' containing the definition for event '{1}'. Add one to your project. + + + Reference required to module '{0}' containing the definition for event '{1}'. Add one to your project. + + + '#If' block must end with a matching '#End If'. + + + '#ElseIf', '#Else', or '#End If' must be preceded by a matching '#If'. + + + '#ElseIf' must be preceded by a matching '#If' or '#ElseIf'. + + + Inheriting from '{0}' is not valid. + + + Labels are not valid outside methods. + + + Delegates cannot implement interface methods. + + + Delegates cannot handle events. + + + 'Is' operator does not accept operands of type '{0}'. Operands must be reference or nullable types. + + + 'TypeOf ... Is' requires its left operand to have a reference type, but this operand has the value type '{0}'. + + + Properties declared 'ReadOnly' cannot have a 'Set'. + + + Properties declared 'WriteOnly' cannot have a 'Get'. + + + Statement is not valid inside a method. + + + Statement is not valid inside '{0}' block. + + + Expression statement is only allowed at the end of an interactive submission. + + + Property missing 'End Property'. + + + 'End Sub' expected. + + + 'End Function' expected. + + + '#Else' must be preceded by a matching '#If' or '#ElseIf'. + + + Derived classes cannot raise base class events. + + + Try must have at least one 'Catch' or a 'Finally'. + + + Events cannot have a return type. + + + Bracketed identifier is missing closing ']'. + + + Syntax error. + + + Overflow. + + + Character is not valid. + + + Option Strict On prohibits operands of type Object for operator '{0}'. + + + Loop control variable cannot be a property or a late-bound indexed array. + + + First statement of a method body cannot be on the same line as the method declaration. + + + Maximum number of errors has been exceeded. + + + '{0}' is valid only within an instance method. + + + '{0}' is not valid within a structure. + + + Attribute constructor has a parameter of type '{0}', which is not an integral, floating-point or Enum type or one of Object, Char, String, Boolean, System.Type or 1-dimensional array of these types. + + + Method cannot have both a ParamArray and Optional parameters. + + + '{0}' statement requires an array. + + + ParamArray parameter must be an array. + + + ParamArray parameter must be a one-dimensional array. + + + Array exceeds the limit of 32 dimensions. + + + Arrays cannot be declared with 'New'. + + + Too many arguments to '{0}'. + + + Statements and labels are not valid between 'Select Case' and first 'Case'. + + + Constant expression is required. + + + Conversion from '{0}' to '{1}' cannot occur in a constant expression. + + + 'Me' cannot be the target of an assignment. + + + 'ReadOnly' variable cannot be the target of an assignment. + + + 'Exit Sub' is not valid in a Function or Property. + + + 'Exit Property' is not valid in a Function or Sub. + + + 'Exit Function' is not valid in a Sub or Property. + + + Expression is a value and therefore cannot be the target of an assignment. + + + For loop control variable '{0}' already in use by an enclosing For loop. + + + Next control variable does not match For loop control variable '{0}'. + + + 'Case Else' can only appear inside a 'Select Case' statement. + + + 'Case' can only appear inside a 'Select Case' statement. + + + Constant cannot be the target of an assignment. + + + Named arguments are not valid as array subscripts. + + + 'If' must end with a matching 'End If'. + + + 'While' must end with a matching 'End While'. + + + 'Do' must end with a matching 'Loop'. + + + 'For' must end with a matching 'Next'. + + + 'With' must end with a matching 'End With'. + + + 'Else' must be preceded by a matching 'If' or 'ElseIf'. + + + 'End If' must be preceded by a matching 'If'. + + + 'End Select' must be preceded by a matching 'Select Case'. + + + 'Exit Do' can only appear inside a 'Do' statement. + + + 'End While' must be preceded by a matching 'While'. + + + 'Loop' must be preceded by a matching 'Do'. + + + 'Next' must be preceded by a matching 'For'. + + + 'End With' must be preceded by a matching 'With'. + + + Label '{0}' is already defined in the current method. + + + 'Select Case' must end with a matching 'End Select'. + + + 'Exit For' can only appear inside a 'For' statement. + + + 'Exit While' can only appear inside a 'While' statement. + + + 'ReadOnly' property '{0}' cannot be the target of an assignment. + + + 'Exit Select' can only appear inside a 'Select' statement. + + + Branching out of a 'Finally' is not valid. + + + '!' requires its left operand to have a type parameter, class or interface type, but this operand has the type '{0}'. + + + Number of indices is less than the number of dimensions of the indexed array. + + + Number of indices exceeds the number of dimensions of the indexed array. + + + '{0}' is an Enum type and cannot be used as an expression. + + + '{0}' is a type and cannot be used as an expression. + + + '{0}' is a class type and cannot be used as an expression. + + + '{0}' is a structure type and cannot be used as an expression. + + + '{0}' is an interface type and cannot be used as an expression. + + + '{0}' is a namespace and cannot be used as an expression. + + + '{0}' is not a valid name and cannot be used as the root namespace name. + + + '{0}' is an XML prefix and cannot be used as an expression. Use the GetXmlNamespace operator to create a namespace object. + + + 'Inherits' can appear only once within a 'Class' statement and can only specify one class. + + + Property without a 'ReadOnly' or 'WriteOnly' specifier must provide both a 'Get' and a 'Set'. + + + 'WriteOnly' property must provide a 'Set'. + + + 'ReadOnly' property must provide a 'Get'. + + + Attribute '{0}' is not valid: Incorrect argument value. + + + Label '{0}' is not defined. + + + Error creating Win32 resources: {0} + + + Cannot create temporary file: {0} + + + First statement of this 'Sub New' must be a call to 'MyBase.New' or 'MyClass.New' because base class '{0}' of '{1}' does not have an accessible 'Sub New' that can be called with no arguments. + + + {0} '{1}' must implement '{2}' for interface '{3}'. + + + Leading '.' or '!' can only appear inside a 'With' statement. + + + Only one of 'Public', 'Private', 'Protected', 'Friend', 'Protected Friend', or 'Private Protected' can be specified. + + + Only one of 'NotOverridable', 'MustOverride', or 'Overridable' can be specified. + + + Specifier is duplicated. + + + {0} '{1}' and {2} '{3}' conflict in {4} '{5}'. + + + Keyword does not name a type. + + + Specifiers valid only at the beginning of a declaration. + + + Type expected. + + + Keyword is not valid as an identifier. + + + 'End Enum' must be preceded by a matching 'Enum'. + + + 'Enum' must end with a matching 'End Enum'. + + + Declaration expected. + + + End of parameter list expected. Cannot define parameters after a paramarray parameter. + + + Specifiers and attributes are not valid on this statement. + + + Expected one of 'Dim', 'Const', 'Public', 'Private', 'Protected', 'Friend', 'Shadows', 'ReadOnly' or 'Shared'. + + + Comma expected. + + + 'As' expected. + + + ')' expected. + + + '(' expected. + + + 'New' is not valid in this context. + + + Expression expected. + + + 'Optional' expected. + + + Identifier expected. + + + Integer constant expected. + + + End of statement expected. + + + 'Option' must be followed by 'Compare', 'Explicit', 'Infer', or 'Strict'. + + + 'Option Compare' must be followed by 'Text' or 'Binary'. + + + 'Compare' expected. + + + Option Strict On requires all variable declarations to have an 'As' clause. + + + Option Strict On requires all Function, Property, and Operator declarations to have an 'As' clause. + + + Option Strict On requires that all method parameters have an 'As' clause. + + + Comma or ')' expected. + + + 'Sub' or 'Function' expected. + + + String constant expected. + + + 'Lib' expected. + + + Delegate class '{0}' has no Invoke method, so an expression of this type cannot be the target of a method call. + + + 'Is' expected. + + + 'Option {0}' statement can only appear once per file. + + + 'Inherits' not valid in Modules. + + + 'Implements' not valid in Modules. + + + Implemented type must be an interface. + + + '{0}' is not valid on a constant declaration. + + + '{0}' is not valid on a WithEvents declaration. + + + '{0}' is not valid on a member variable declaration. + + + Parameter already declared with name '{0}'. + + + 'Loop' cannot have a condition if matching 'Do' has one. + + + Relational operator expected. + + + 'Exit' must be followed by 'Sub', 'Function', 'Property', 'Do', 'For', 'While', 'Select', or 'Try'. + + + Named argument expected. + + + Named argument specifications must appear after all fixed arguments have been specified in a late bound invocation. + + + Named argument expected. Please use language version {0} or greater to use non-trailing named arguments. + + + '{0}' is not valid on a method declaration. + + + '{0}' is not valid on an event declaration. + + + '{0}' is not valid on a Declare. + + + '{0}' is not valid on a local constant declaration. + + + '{0}' is not valid on a local variable declaration. + + + 'If', 'ElseIf', 'Else', 'Const', 'Region', 'ExternalSource', 'ExternalChecksum', 'Enable', 'Disable', 'End' or 'R' expected. + + + '=' expected. + + + Type '{0}' has no constructors. + + + 'End Interface' must be preceded by a matching 'Interface'. + + + 'Interface' must end with a matching 'End Interface'. + + + '{0}' inherits from '{1}'. + + + '{0}' is nested in '{1}'. + + + Class '{0}' cannot inherit from itself: {1} + + + Classes can inherit only from other classes. + + + '{0}' is already declared as '{1}' in this {2}. + + + '{0}' cannot override '{1}' because they have different access levels. + + + '{0}' cannot override '{1}' because it is declared 'NotOverridable'. + + + '{0}' has multiple definitions with identical signatures. + + + '{0}' has multiple definitions with identical signatures with different tuple element names, including '{1}'. + + + '{0}' is not valid on an interface method declaration. + + + '{0}' is not a parameter of '{1}'. + + + '{0}' is not valid on an interface property declaration. + + + Parameter '{0}' of '{1}' already has a matching argument. + + + '{0}' is not valid on an interface event declaration. + + + Type character '{0}' does not match declared data type '{1}'. + + + 'Sub' or 'Function' expected after 'Delegate'. + + + Enum '{0}' must contain at least one member. + + + Constructor call is valid only as the first statement in an instance constructor. + + + 'Sub New' cannot be declared 'Overrides'. + + + 'Sub New' cannot be declared 'Partial'. + + + Failed to emit module '{0}': {1} + + + Cannot update '{0}'; attribute '{1}' is missing. + + + {0} '{1}' cannot be declared 'Overrides' because it does not override a {0} in a base class. + + + '.' expected. + + + Local variable '{0}' is already declared in the current block. + + + Statement cannot appear within a method body. End of method assumed. + + + Local variable cannot have the same name as the function containing it. + + + '{0}' contains '{1}' (variable '{2}'). + + + Structure '{0}' cannot contain an instance of itself: {1} + + + Interface '{0}' cannot inherit from itself: {1} + + + '{0}' calls '{1}'. + + + Constructor '{0}' cannot call itself: {1} + + + '{0}' cannot inherit from {2} '{1}' because '{1}' is declared 'NotInheritable'. + + + '{0}' and '{1}' cannot overload each other because they differ only by optional parameters. + + + '{0}' and '{1}' cannot overload each other because they differ only by return types. + + + Type character '{0}' cannot be used in a declaration with an explicit type. + + + Type character cannot be used in a 'Sub' declaration because a 'Sub' doesn't return a value. + + + '{0}' and '{1}' cannot overload each other because they differ only by the default values of optional parameters. + + + Array subscript expression missing. + + + '{0}' cannot override '{1}' because they differ by the default values of optional parameters. + + + '{0}' cannot override '{1}' because they differ by optional parameters. + + + Cannot refer to '{0}' because it is a member of the value-typed field '{1}' of class '{2}' which has 'System.MarshalByRefObject' as a base class. + + + Value of type '{0}' cannot be converted to '{1}'. + + + 'Case' cannot follow a 'Case Else' in the same 'Select' statement. + + + Value of type '{0}' cannot be converted to '{1}' because '{2}' is not derived from '{3}'. + + + Value of type '{0}' cannot be converted to '{1}' because '{2}' is not a reference type. + + + 'For' loop control variable cannot be of type '{0}' because the type does not support the required operators. + + + '{0}' and '{1}' cannot overload each other because they differ only by parameters declared 'ByRef' or 'ByVal'. + + + Interface can inherit only from another interface. + + + 'Inherits' statements must precede all declarations in an interface. + + + 'Default' can be applied to only one property name in a {0}. + + + '{0}' and '{1}' cannot overload each other because only one is declared 'Default'. + + + '{0}' cannot override '{1}' because they differ by 'ReadOnly' or 'WriteOnly'. + + + 'Sub New' cannot be declared in an interface. + + + 'Sub New' cannot be declared '{0}'. + + + '{0}' and '{1}' cannot overload each other because they differ only by 'ReadOnly' or 'WriteOnly'. + + + Class '{0}' cannot be indexed because it has no default property. + + + '{0}' and '{1}' cannot overload each other because they differ only by parameters declared 'ParamArray'. + + + Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class. + + + '}' expected. + + + Module '{0}' cannot be used as a type. + + + 'New' cannot be used on an interface. + + + 'Catch' cannot appear after 'Finally' within a 'Try' statement. + + + 'Catch' cannot appear outside a 'Try' statement. + + + 'Finally' can only appear once in a 'Try' statement. + + + 'Finally' cannot appear outside a 'Try' statement. + + + 'End Try' must be preceded by a matching 'Try'. + + + 'Try' must end with a matching 'End Try'. + + + '{0}' is not valid on a Delegate declaration. + + + Class '{0}' must declare a 'Sub New' because its base class '{1}' does not have an accessible 'Sub New' that can be called with no arguments. + + + '{0}' is not accessible in this context because it is '{1}'. + + + '{0}.{1}' is not accessible in this context because it is '{2}'. + + + 'Catch' cannot catch type '{0}' because it is not 'System.Exception' or a class that inherits from 'System.Exception'. + + + 'Exit Try' can only appear inside a 'Try' statement. + + + '{0}' is not valid on a Structure declaration. + + + '{0}' is not valid on an Enum declaration. + + + '{0}' is not valid on an Interface declaration. + + + '{0}' cannot override '{1}' because they differ by a parameter that is marked as 'ByRef' versus 'ByVal'. + + + 'MyBase' cannot be used with method '{0}' because it is declared 'MustOverride'. + + + '{0}' cannot implement '{1}' because there is no matching {2} on interface '{3}'. + + + '{0}' cannot implement {1} '{2}' on interface '{3}' because the tuple element names in '{4}' do not match those in '{5}'. + + + 'WithEvents' variables must have an 'As' clause. + + + 'WithEvents' variables can only be typed as classes, interfaces or type parameters with class constraints. + + + Value of type '{0}' cannot be converted to '{1}' because the array types have different numbers of dimensions. + + + 'ReDim' cannot change the number of dimensions of an array. + + + 'Sub Main' was not found in '{0}'. + + + Constants must be of an intrinsic or enumerated type, not a class, structure, type parameter, or array type. + + + 'End Sub' must be preceded by a matching 'Sub'. + + + 'End Function' must be preceded by a matching 'Function'. + + + 'End Property' must be preceded by a matching 'Property'. + + + Methods in a Module cannot be declared '{0}'. + + + Events in a Module cannot be declared '{0}'. + + + Members in a Structure cannot be declared '{0}'. + + + '{0}' cannot override '{1}' because they differ by their return types. + + + '{0}' cannot override '{1}' because they differ by their tuple element names. + + + Member cannot override because it differs by its tuple element names. + + + Constants must have a value. + + + Constant expression not representable in type '{0}'. + + + 'Get' is already declared. + + + 'Set' is already declared. + + + '{0}' is not declared. It may be inaccessible due to its protection level. + + + Operator '{0}' is not defined for types '{1}' and '{2}'. + + + Expression is not a method. + + + Argument not specified for parameter '{0}' of '{1}'. + + + '{0}' is not a member of '{1}'. + + + 'End Class' must be preceded by a matching 'Class'. + + + Classes cannot be declared '{0}'. + + + 'Imports' statements must precede any declarations. + + + '{1}' for the Imports '{0}' does not refer to a Namespace, Class, Structure, Enum or Module. + + + Type declaration characters are not valid in this context. + + + Reference to a non-shared member requires an object reference. + + + 'MyClass' cannot be used outside of a class. + + + Expression is not an array or a method, and cannot have an argument list. + + + 'WithEvents' variables cannot be typed as arrays. + + + Shared 'Sub New' cannot have any parameters. + + + Shared 'Sub New' cannot be declared '{0}'. + + + 'Class' statement must end with a matching 'End Class'. + + + Operator '{0}' is not defined for type '{1}'. + + + 'Default' cannot be combined with '{0}'. + + + Expression does not produce a value. + + + Constructor must be declared as a Sub, not as a Function. + + + Exponent is not valid. + + + 'Sub New' cannot handle events. + + + Constant '{0}' cannot depend on its own value. + + + 'Shared' cannot be combined with '{0}' on a method declaration. + + + 'Shared' cannot be combined with '{0}' on a property declaration. + + + Properties in a Module cannot be declared '{0}'. + + + Methods or events that implement interface members cannot be declared 'Shared'. + + + Handles clause requires a WithEvents variable defined in the containing type or one of its base types. + + + '{0}' cannot inherit from {1} '{2}' because it expands the access of the base {1} to {3} '{4}'. + + + Option Strict On disallows implicit conversions from '{0}' to '{1}'. + + + Overload resolution failed because no accessible '{0}' accepts this number of arguments. + + + Overload resolution failed because no '{0}' is accessible. + + + Overload resolution failed because no accessible '{0}' can be called with these arguments:{1} + + + Overload resolution failed because no accessible '{0}' can be called:{1} + + + Overload resolution failed because no accessible '{0}' can be called without a narrowing conversion:{1} + + + Argument matching parameter '{0}' narrows from '{1}' to '{2}'. + + + Overload resolution failed because no accessible '{0}' is most specific for these arguments:{1} + + + Not most specific. + + + '{0}': {1} + + + Property '{0}' is 'WriteOnly'. + + + Property '{0}' is 'ReadOnly'. + + + All parameters must be explicitly typed if any of them are explicitly typed. + + + Parameter cannot have the same name as its defining function. + + + Conversion from 'Date' to 'Double' requires calling the 'Date.ToOADate' method. + + + Conversion from 'Double' to 'Date' requires calling the 'Date.FromOADate' method. + + + Division by zero occurred while evaluating this expression. + + + Method cannot contain both a 'Try' statement and an 'On Error' or 'Resume' statement. + + + Property access must assign to the property or use its value. + + + '{0}' cannot be indexed because it has no default property. + + + Attribute '{0}' cannot be applied to an assembly. + + + Attribute '{0}' cannot be applied to a module. + + + '{0}' is ambiguous. + + + Default member of '{0}' is not a property. + + + '{0}' is ambiguous in the namespace '{1}'. + + + '{0}' is ambiguous, imported from the namespaces or types '{1}'. + + + '{0}' is ambiguous between declarations in Modules '{1}'. + + + '{0}' is ambiguous between declarations in namespaces '{1}'. + + + Array initializer has too few dimensions. + + + Array initializer has too many dimensions. + + + Array initializer is missing {0} elements. + + + Array initializer has {0} too many elements. + + + 'New' cannot be used on a class that is declared 'MustInherit'. + + + Alias '{0}' is already declared. + + + XML namespace prefix '{0}' is already declared. + + + stdin argument '-' is specified, but input has not been redirected from the standard input stream. + + + Option Strict On disallows late binding. + + + 'AddressOf' operand must be the name of a method (without parentheses). + + + '#End ExternalSource' must be preceded by a matching '#ExternalSource'. + + + '#ExternalSource' statement must end with a matching '#End ExternalSource'. + + + '#ExternalSource' directives cannot be nested. + + + 'AddressOf' expression cannot be converted to '{0}' because '{0}' is not a delegate type. + + + 'SyncLock' operand cannot be of type '{0}' because '{0}' is not a reference type. + + + '{0}.{1}' cannot be implemented more than once. + + + '{0}' cannot be inherited more than once. + + + Named argument cannot match a ParamArray parameter. + + + Omitted argument cannot match a ParamArray parameter. + + + Argument cannot match a ParamArray parameter. + + + Event '{0}' cannot be found. + + + Variables in Modules cannot be declared '{0}'. + + + Events of shared WithEvents variables cannot be handled by non-shared methods. + + + Events of shared WithEvents variables cannot be handled by methods in a different type. + + + '-' expected. + + + Interface members must be methods, properties, events, or type definitions. + + + Statement cannot appear within an interface body. + + + Statement cannot appear within an interface body. End of interface assumed. + + + 'NotInheritable' classes cannot have members declared '{0}'. + + + Class '{0}' must either be declared 'MustInherit' or override the following inherited 'MustOverride' member(s): {1}. + + + '{0}' is a MustOverride event in the base class '{1}'. Visual Basic does not support event overriding. You must either provide an implementation for the event in the base class, or make class '{2}' MustInherit. + + + Array dimensions cannot have a negative size. + + + 'MustOverride' method '{0}' cannot be called with 'MyClass'. + + + 'End' statement cannot be used in class library projects. + + + Variable '{0}' hides a variable in an enclosing block. + + + 'Module' statements can occur only at file or namespace level. + + + 'Namespace' statements can occur only at file or namespace level. + + + Statement cannot appear within an Enum body. + + + Statement cannot appear within an Enum body. End of Enum assumed. + + + 'Option Strict' can be followed only by 'On' or 'Off'. + + + 'End Structure' must be preceded by a matching 'Structure'. + + + 'End Module' must be preceded by a matching 'Module'. + + + 'End Namespace' must be preceded by a matching 'Namespace'. + + + 'Structure' statement must end with a matching 'End Structure'. + + + 'Module' statement must end with a matching 'End Module'. + + + 'Namespace' statement must end with a matching 'End Namespace'. + + + 'Option' statements must precede any declarations or 'Imports' statements. + + + Structures cannot have 'Inherits' statements. + + + Structures cannot declare a non-shared 'Sub New' with no parameters. + + + 'End Get' must be preceded by a matching 'Get'. + + + 'Get' statement must end with a matching 'End Get'. + + + 'End Set' must be preceded by a matching 'Set'. + + + 'Set' statement must end with a matching 'End Set'. + + + Statement cannot appear within a property body. End of property assumed. + + + 'ReadOnly' and 'WriteOnly' cannot be combined. + + + '>' expected. + + + Assembly or Module attribute statements must precede any declarations in a file. + + + Array bounds cannot appear in type specifiers. + + + Properties cannot be declared '{0}'. + + + 'Option Explicit' can be followed only by 'On' or 'Off'. + + + 'ByVal' and 'ByRef' cannot be combined. + + + 'Optional' and 'ParamArray' cannot be combined. + + + Property '{0}' is of an unsupported type. + + + Attribute '{0}' cannot be applied to a method with optional parameters. + + + 'Return' statement in a Sub or a Set cannot return a value. + + + String constants must end with a double quote. + + + '{0}' is an unsupported type. + + + Enums must be declared as an integral type. + + + {0} parameters cannot be declared 'ByRef'. + + + Reference required to assembly '{0}' containing the type '{1}'. Add one to your project. + + + Reference required to module '{0}' containing the type '{1}'. Add one to your project. + + + 'Return' statement in a Function, Get, or Operator must return a value. + + + Field '{0}' is of an unsupported type. + + + '{0}' has a return type that is not supported or parameter types that are not supported. + + + Property '{0}' with no parameters cannot be found. + + + Property or field '{0}' does not have a valid attribute type. + + + Attributes cannot be applied to local variables. + + + Field or property '{0}' is not found. + + + Attribute '{0}' cannot be applied to '{1}' because the attribute is not valid on this declaration type. + + + Attribute '{0}' cannot be applied to '{1}' of '{2}' because the attribute is not valid on this declaration type. + + + Class '{0}' cannot reference its nested type '{1}' in Inherits clause. + + + Class '{0}' cannot reference itself in Inherits clause. + + + Base type of '{0}' needs '{1}' to be resolved. + + + Inherits clause of {0} '{1}' causes cyclic dependency: {2} + + + Attribute '{0}' cannot be applied multiple times. + + + Attribute '{0}' in '{1}' cannot be applied multiple times. + + + 'Throw' operand must derive from 'System.Exception'. + + + 'Throw' statement cannot omit operand outside a 'Catch' statement or inside a 'Finally' statement. + + + ParamArray parameters must be declared 'ByVal'. + + + '{0}' is obsolete: '{1}'. + + + 'ReDim' statements require a parenthesized list of the new bounds of each dimension of the array. + + + Explicit initialization is not permitted with multiple variables declared with a single type specifier. + + + Explicit initialization is not permitted for arrays declared with explicit bounds. + + + 'End SyncLock' must be preceded by a matching 'SyncLock'. + + + 'SyncLock' statement must end with a matching 'End SyncLock'. + + + '{0}' is not an event of '{1}'. + + + 'AddHandler' or 'RemoveHandler' statement event operand must be a dot-qualified expression or a simple name. + + + 'End' statement not valid. + + + Array initializers are valid only for arrays, but the type of '{0}' is '{1}'. + + + '#End Region' must be preceded by a matching '#Region'. + + + '#Region' statement must end with a matching '#End Region'. + + + 'Inherits' statement must precede all declarations in a class. + + + '{0}' is ambiguous across the inherited interfaces '{1}' and '{2}'. + + + Default property access is ambiguous between the inherited interface members '{0}' of interface '{1}' and '{2}' of interface '{3}'. + + + Events in interfaces cannot be declared '{0}'. + + + Statement cannot appear outside of a method body. + + + Structure '{0}' cannot be indexed because it has no default property. + + + {0} '{1}' must be declared 'Shadows' because another member with this name is declared 'Shadows'. + + + '{0}' cannot override '{1}' because they differ by the types of optional parameters. + + + End of expression expected. + + + Methods declared in structures cannot have 'Handles' clauses. + + + Methods declared 'Overrides' cannot be declared 'Overridable' because they are implicitly overridable. + + + '{0}' is already declared as a parameter of this method. + + + Variable '{0}' is already declared as a parameter of this or an enclosing lambda expression. + + + Type in a Module cannot be declared '{0}'. + + + No accessible 'Main' method with an appropriate signature was found in '{0}'. + + + 'Sub Main' is declared more than once in '{0}': {1} + + + Value '{0}' cannot be converted to '{1}'. + + + 'On Error' statements are not valid within 'SyncLock' statements. + + + Option Strict On disallows implicit conversions from '{0}' to '{1}'; the Visual Basic 6.0 collection type is not compatible with the .NET Framework collection type. + + + 'GoTo {0}' is not valid because '{0}' is inside a 'Try', 'Catch' or 'Finally' statement that does not contain this statement. + + + 'GoTo {0}' is not valid because '{0}' is inside a 'SyncLock' statement that does not contain this statement. + + + 'GoTo {0}' is not valid because '{0}' is inside a 'With' statement that does not contain this statement. + + + 'GoTo {0}' is not valid because '{0}' is inside a 'For' or 'For Each' statement that does not contain this statement. + + + Attribute cannot be used because it does not have a Public constructor. + + + Event '{0}' specified by the 'DefaultEvent' attribute is not a publicly accessible event for this class. + + + 'NonSerialized' attribute will not have any effect on this member because its containing class is not exposed as 'Serializable'. + + + 'Continue' must be followed by 'Do', 'For' or 'While'. + + + 'Continue Do' can only appear inside a 'Do' statement. + + + 'Continue For' can only appear inside a 'For' statement. + + + 'Continue While' can only appear inside a 'While' statement. + + + Parameter specifier is duplicated. + + + 'Declare' statements in a Module cannot be declared '{0}'. + + + 'Declare' statements in a structure cannot be declared '{0}'. + + + 'TryCast' operand must be reference type, but '{0}' is a value type. + + + 'TryCast' operands must be class-constrained type parameter, but '{0}' has no class constraint. + + + No accessible '{0}' is most specific: {1} + + + Non-shared members in a Structure cannot be declared 'New'. + + + None of the accessible 'Main' methods with the appropriate signatures found in '{0}' can be the startup method since they are all either generic or nested in generic types. + + + Error in project-level import '{0}' at '{1}' : {2} + + + '{1}' for the Imports alias to '{0}' does not refer to a Namespace, Class, Structure, Interface, Enum or Module. + + + Field '{0}.{1}' has an invalid constant value. + + + Method arguments must be enclosed in parentheses. + + + Labels that are numbers must be followed by colons. + + + 'Type' statements are no longer supported; use 'Structure' statements instead. + + + 'Variant' is no longer a supported type; use the 'Object' type instead. + + + 'Let' and 'Set' assignment statements are no longer supported. + + + Property Get/Let/Set are no longer supported; use the new Property declaration syntax. + + + 'Wend' statements are no longer supported; use 'End While' statements instead. + + + 'ReDim' statements can no longer be used to declare array variables. + + + Optional parameters must specify a default value. + + + 'GoSub' statements are no longer supported. + + + 'On GoTo' and 'On GoSub' statements are no longer supported. + + + 'EndIf' statements are no longer supported; use 'End If' instead. + + + 'D' can no longer be used to indicate an exponent, use 'E' instead. + + + 'As Any' is not supported in 'Declare' statements. + + + 'Get' statements are no longer supported. File I/O functionality is available in the 'Microsoft.VisualBasic' namespace. + + + '{0}' cannot override '{1}' because they differ by parameters declared 'ParamArray'. + + + This inheritance causes circular dependencies between {0} '{1}' and its nested or base type '{2}'. + + + {0} '{1}' cannot inherit from a type nested within it. + + + '{0}' cannot expose type '{1}' outside the project through {2} '{3}'. + + + '{0}' cannot inherit from {1} '{2}' because it expands the access of the base {1} outside the assembly. + + + '{0}' accessor of '{1}' is obsolete: '{2}'. + + + '{0}' accessor of '{1}' is obsolete. + + + '{0}' cannot expose the underlying delegate type '{1}' of the event it is implementing to {2} '{3}' through {4} '{5}'. + + + '{0}' cannot expose the underlying delegate type '{1}' of the event it is implementing outside the project through {2} '{3}'. + + + Type '{0}' is not supported because it either directly or indirectly inherits from itself. + + + Class '{0}' must declare a 'Sub New' because the '{1}' in its base class '{2}' is marked obsolete. + + + Class '{0}' must declare a 'Sub New' because the '{1}' in its base class '{2}' is marked obsolete: '{3}'. + + + First statement of this 'Sub New' must be an explicit call to 'MyBase.New' or 'MyClass.New' because the '{0}' in the base class '{1}' of '{2}' is marked obsolete. + + + First statement of this 'Sub New' must be an explicit call to 'MyBase.New' or 'MyClass.New' because the '{0}' in the base class '{1}' of '{2}' is marked obsolete: '{3}'. + + + '{0}' cannot inherit from {1} '{2}' because it expands the access of type '{3}' to {4} '{5}'. + + + '{0}' cannot inherit from {1} '{2}' because it expands the access of type '{3}' outside the assembly. + + + Specified access '{0}' for '{1}' does not match the access '{2}' specified on one of its other partial types. + + + 'MustInherit' cannot be specified for partial type '{0}' because it cannot be combined with 'NotInheritable' specified for one of its other partial types. + + + 'MustOverride' cannot be specified on this member because it is in a partial type that is declared 'NotInheritable' in another partial definition. + + + Base class '{0}' specified for class '{1}' cannot be different from the base class '{2}' of one of its other partial types. + + + Type parameter name '{0}' does not match the name '{1}' of the corresponding type parameter defined on one of the other partial types of '{2}'. + + + Constraints for this type parameter do not match the constraints on the corresponding type parameter defined on one of the other partial types of '{0}'. + + + Late bound overload resolution cannot be applied to '{0}' because the accessing instance is an interface type. + + + Conversion from '{0}' to '{1}' cannot occur in a constant expression used as an argument to an attribute. + + + Member '{0}' that matches this signature cannot be overridden because the class '{1}' contains multiple members with this same name and signature: {2} + + + '{0}' + + + Member '{0}.{1}' that matches this signature cannot be implemented because the interface '{2}' contains multiple members with this same name and signature: + '{3}' + '{4}' + + + 'AddressOf' expression cannot be converted to '{0}' because type '{0}' is declared 'MustInherit' and cannot be created. + + + Generic methods cannot be exposed to COM. + + + Syntax error in cast operator; two arguments separated by comma are required. + + + Array initializer cannot be specified for a non constant dimension; use the empty initializer '{}'. + + + No accessible method '{0}' has a signature compatible with delegate '{1}':{2} + + + Attribute 'StructLayout' cannot be applied to a generic type. + + + Range variable '{0}' hides a variable in an enclosing block or a range variable previously defined in the query expression. + + + 'Option Infer' can be followed only by 'On' or 'Off'. + + + Type of '{0}' cannot be inferred from an expression containing '{0}'. + + + '{0}' in class '{1}' cannot override '{2}' in class '{3}' because an intermediate class '{4}' overrides '{2}' in class '{3}' but is not accessible. + + + Type of '{0}' cannot be inferred because the loop bounds and the step clause do not convert to the same type. + + + Type of '{0}' is ambiguous because the loop bounds and the step clause do not convert to the same type. + + + '=' expected (object initializer). + + + Name of field or property being initialized in an object initializer must start with '.'. + + + '{' expected. + + + Type or 'With' expected. + + + Multiple initializations of '{0}'. Fields and properties can be initialized only once in an object initializer expression. + + + Member '{0}' cannot be initialized in an object initializer expression because it is not a field or property. + + + Member '{0}' cannot be initialized in an object initializer expression because it is shared. + + + Property '{0}' cannot be initialized in an object initializer expression because it requires arguments. + + + Property '{0}' cannot be initialized in an object initializer expression because all accessible overloads require arguments. + + + Object initializer syntax cannot be used to initialize an instance of 'System.Object'. + + + Initializer expected. + + + The line continuation character '_' must be preceded by at least one white space and it must be followed by a comment or the '_' must be the last character on the line. + + + Please use language version {0} or greater to use comments after line continuation character. + + + Unable to load module file '{0}': {1} + + + Unable to load referenced library '{0}': {1} + + + Method '{0}' cannot handle event '{1}' because they do not have a compatible signature. + + + Conditional compilation constant '{1}' is not valid: {0} + + + Interface '{0}' can be implemented only once by this type. + + + Interface '{0}' can be implemented only once by this type, but already appears with different tuple element names, as '{1}'. + + + Interface '{0}' can be implemented only once by this type, but already appears with different tuple element names, as '{1}' (via '{2}'). + + + Interface '{0}' (via '{1}') can be implemented only once by this type, but already appears with different tuple element names, as '{2}'. + + + Interface '{0}' (via '{1}') can be implemented only once by this type, but already appears with different tuple element names, as '{2}' (via '{3}'). + + + Interface '{0}' can be inherited only once by this interface, but already appears with different tuple element names, as '{1}'. + + + Interface '{0}' can be inherited only once by this interface, but already appears with different tuple element names, as '{1}' (via '{2}'). + + + Interface '{0}' (via '{1}') can be inherited only once by this interface, but already appears with different tuple element names, as '{2}'. + + + Interface '{0}' (via '{1}') can be inherited only once by this interface, but already appears with different tuple element names, as '{2}' (via '{3}'). + + + Interface '{0}' is not implemented by this class. + + + '{0}' exists in multiple base interfaces. Use the name of the interface that declares '{0}' in the 'Implements' clause instead of the name of the derived interface. + + + 'Sub New' cannot implement interface members. + + + Arrays declared as structure members cannot be declared with an initial size. + + + Events declared with an 'As' clause must have a delegate type. + + + Protected types can only be declared inside of a class. + + + Properties with no required parameters cannot be declared 'Default'. + + + Initializers on structure members are valid only for 'Shared' members and constants. + + + Namespace or type '{0}' has already been imported. + + + Modules cannot be declared '{0}'. + + + 'Implements' statements must follow any 'Inherits' statement and precede all declarations in a class. + + + {0} '{1}' implicitly defines '{2}', which conflicts with a member implicitly declared for {3} '{4}' in {5} '{6}'. + + + {0} '{1}' implicitly defines '{2}', which conflicts with a member of the same name in {3} '{4}'. + + + {0} '{1}' conflicts with a member implicitly declared for {2} '{3}' in {4} '{5}'. + + + {0} '{1}' conflicts with a Visual Basic Runtime {2} '{3}'. + + + First argument to a security attribute must be a valid SecurityAction. + + + Security attribute '{0}' has an invalid SecurityAction value '{1}'. + + + SecurityAction value '{0}' is invalid for security attributes applied to an assembly. + + + SecurityAction value '{0}' is invalid for security attributes applied to a type or a method. + + + SecurityAction value '{0}' is invalid for PrincipalPermission attribute. + + + Unable to resolve file path '{0}' specified for the named argument '{1}' for PermissionSet attribute. + + + Error reading file '{0}' specified for the named argument '{1}' for PermissionSet attribute: '{2}'. + + + 'Set' method cannot have more than one parameter. + + + 'Set' parameter must have the same type as the containing property. + + + 'Set' parameter cannot be declared '{0}'. + + + Method in a structure cannot be declared 'Protected', 'Protected Friend', or 'Private Protected'. + + + Delegate in an interface cannot be declared '{0}'. + + + Enum in an interface cannot be declared '{0}'. + + + Class in an interface cannot be declared '{0}'. + + + Structure in an interface cannot be declared '{0}'. + + + Interface in an interface cannot be declared '{0}'. + + + '{0}' is obsolete. + + + '{0}' is a module and cannot be referenced as an assembly. + + + '{0}' is an assembly and cannot be referenced as a module. + + + Operator '{0}' is not defined for types '{1}' and '{2}'. Use 'Is' operator to compare two reference types. + + + '{0}' is not a local variable or parameter, and so cannot be used as a 'Catch' variable. + + + Members in a Module cannot implement interface members. + + + Events cannot be declared with a delegate type that has a return type. + + + Date constant is not valid. + + + '{0}' cannot override '{1}' because it is not declared 'Overridable'. + + + Array modifiers cannot be specified on both a variable and its type. + + + 'NotOverridable' cannot be specified for methods that do not override another method. + + + Types declared 'Private' must be inside another type. + + + Import of type '{0}' from assembly or module '{1}' failed. + + + Predefined type '{0}' is not defined or imported. + + + ParamArray parameters must have an array type. + + + Implementing class '{0}' for interface '{1}' cannot be found. + + + Type '{0}' cannot be used as an implementing class. + + + Reference to object under construction is not valid when calling another constructor. + + + Implicit reference to object under construction is not valid when calling another constructor. + + + Member '{0}' cannot be found in class '{1}'. This condition is usually the result of a mismatched 'Microsoft.VisualBasic.dll'. + + + Property accessors cannot be declared '{0}'. + + + Access modifier '{0}' is not valid. The access modifier of 'Get' and 'Set' should be more restrictive than the property access level. + + + Access modifier can only be applied to either 'Get' or 'Set', but not both. + + + 'Set' accessor of property '{0}' is not accessible. + + + 'Get' accessor of property '{0}' is not accessible. + + + 'WriteOnly' properties cannot have an access modifier on 'Set'. + + + 'ReadOnly' properties cannot have an access modifier on 'Get'. + + + Property accessors cannot be declared '{0}' in a 'NotOverridable' property. + + + Property accessors cannot be declared '{0}' in a 'Default' property. + + + Property cannot be declared '{0}' because it contains a 'Private' accessor. + + + Implementing class '{0}' for interface '{1}' is not accessible in this context because it is '{2}'. + + + Arrays used as attribute arguments are required to explicitly specify values for all elements. + + + 'Exit AddHandler', 'Exit RemoveHandler' and 'Exit RaiseEvent' are not valid. Use 'Return' to exit from event members. + + + Statement cannot appear within an event body. End of event assumed. + + + 'Custom Event' must end with a matching 'End Event'. + + + 'AddHandler' declaration must end with a matching 'End AddHandler'. + + + 'RemoveHandler' declaration must end with a matching 'End RemoveHandler'. + + + 'RaiseEvent' declaration must end with a matching 'End RaiseEvent'. + + + 'Custom' modifier is not valid on events declared in interfaces. + + + 'Custom' modifier is not valid on events declared without explicit delegate types. + + + 'End Event' must be preceded by a matching 'Custom Event'. + + + 'End AddHandler' must be preceded by a matching 'AddHandler' declaration. + + + 'End RemoveHandler' must be preceded by a matching 'RemoveHandler' declaration. + + + 'End RaiseEvent' must be preceded by a matching 'RaiseEvent' declaration. + + + 'AddHandler' is already declared. + + + 'RemoveHandler' is already declared. + + + 'RaiseEvent' is already declared. + + + 'AddHandler' definition missing for event '{0}'. + + + 'RemoveHandler' definition missing for event '{0}'. + + + 'RaiseEvent' definition missing for event '{0}'. + + + 'AddHandler' and 'RemoveHandler' methods must have exactly one parameter. + + + 'AddHandler' and 'RemoveHandler' method parameters cannot be declared 'ByRef'. + + + Specifiers are not valid on 'AddHandler', 'RemoveHandler' and 'RaiseEvent' methods. + + + 'AddHandler' and 'RemoveHandler' method parameters must have the same delegate type as the containing event. + + + 'RaiseEvent' method must have the same signature as the containing event's delegate type '{0}'. + + + 'AddHandler', 'RemoveHandler' and 'RaiseEvent' method parameters cannot be declared '{0}'. + + + '{0}' cannot refer to itself through its default instance; use 'Me' instead. + + + 'Custom' modifier can only be used immediately before an 'Event' declaration. + + + Option Strict Custom can only be used as an option to the command-line compiler (vbc.exe). + + + '{0}' cannot be applied to the 'AddHandler', 'RemoveHandler', or 'RaiseEvent' definitions. If required, apply the attribute directly to the event. + + + Method '{0}' does not have a signature compatible with delegate '{1}'. + + + XML name expected. + + + XML namespace prefix '{0}' is not defined. + + + Duplicate XML attribute '{0}'. + + + End tag </{0}{1}{2}> expected. + + + Element is missing an end tag. + + + XML namespace prefix '{0}' is reserved for use by XML and the namespace URI cannot be changed. + + + Required attribute 'version' missing from XML declaration. + + + XML declaration does not allow attribute '{0}{1}{2}'. + + + Embedded expression cannot appear inside a quoted attribute value. Try removing quotes. + + + XML attribute 'version' must be the first attribute in XML declaration. + + + XML attribute '{0}' must appear before XML attribute '{1}'. + + + Expected closing '%>' for embedded expression. + + + Expected closing '?>' for XML processor instruction. + + + Expected closing '-->' for XML comment. + + + Expected closing ']]>' for XML CDATA section. + + + Expected matching closing single quote for XML attribute value. + + + Expected matching closing double quote for XML attribute value. + + + Expected beginning '<' for an XML tag. + + + Expected quoted XML attribute value or embedded expression. + + + Expected '/' for XML end tag. + + + XML axis properties do not support late binding. + + + Character '{0}' ({1}) is not allowed at the beginning of an XML name. + + + Character '{0}' ({1}) is not allowed in an XML name. + + + Character sequence '--' is not allowed in an XML comment. + + + An embedded expression cannot be used here. + + + Missing required white space. + + + XML processing instruction name '{0}' is not valid. + + + XML DTDs are not supported. + + + White space cannot appear here. + + + Expected closing ';' for XML entity. + + + Expected '%=' at start of an embedded expression. + + + XML entity references are not supported. + + + Attribute value is not valid; expecting '{0}'. + + + Attribute value is not valid; expecting '{0}' or '{1}'. + + + Prefix '{0}' cannot be bound to namespace name reserved for '{1}'. + + + Namespace declaration with prefix cannot have an empty value inside an XML literal. + + + ':' is not allowed. XML qualified names cannot be used in this context. + + + Namespace declaration must start with 'xmlns'. + + + Element names cannot use the 'xmlns' prefix. + + + XML literals and XML axis properties are not available. Add references to System.Xml, System.Xml.Linq, and System.Core or other assemblies declaring System.Linq.Enumerable, System.Xml.Linq.XElement, System.Xml.Linq.XName, System.Xml.Linq.XAttribute and Sys ... + + + Unable to open Win32 manifest file '{0}' : {1} + + + Cannot convert '{0}' to '{1}'. You can use the 'Value' property to get the string value of the first element of '{2}'. + + + Cannot convert IEnumerable(Of XElement) to String + + + Value of type '{0}' cannot be converted to '{1}'. You can use the 'Value' property to get the string value of the first element of '{2}'. + + + Operator '{0}' is not defined for types '{1}' and '{2}'. You can use the 'Value' property to get the string value of the first element of '{3}'. + + + Full width characters are not valid as XML delimiters. + + + The value '{0}' is not a valid subsystem version. The version must be 6.02 or greater for ARM or AppContainerExe, and 4.00 or greater otherwise. + + + Invalid file section alignment '{0}' + + + Invalid output name: {0} + + + Invalid debug information format: {0} + + + /platform:anycpu32bitpreferred can only be used with /t:exe, /t:winexe and /t:appcontainerexe. + + + Expression has the type '{0}' which is a restricted type and cannot be used to access members inherited from 'Object' or 'ValueType'. + + + Expression of type '{0}' cannot be converted to 'Object' or 'ValueType'. + + + Type characters are not allowed in label identifiers. + + + '{0}' cannot be made nullable, and cannot be used as the data type of an array element, field, anonymous type member, type argument, 'ByRef' parameter, or return statement. + + + Type characters are not allowed on Imports aliases. + + + Class '{0}' has no accessible 'Sub New' and cannot be inherited. + + + Local variables within methods of structures cannot be declared 'Static'. + + + Static local variable '{0}' is already declared. + + + Imports alias '{0}' conflicts with '{1}' declared in the root namespace. + + + '{0}' cannot shadow a method declared 'MustOverride'. + + + Event '{0}' cannot implement event '{2}.{1}' because its delegate type does not match the delegate type of another event implemented by '{0}'. + + + '{0}' and '{1}' cannot be combined. + + + {0} '{1}' must be declared 'Overloads' because another '{1}' is declared 'Overloads' or 'Overrides'. + + + '{0}' must be declared 'MustInherit' because it contains methods declared 'MustOverride'. + + + 'Handles' in classes must specify a 'WithEvents' variable, 'MyBase', 'MyClass' or 'Me' qualified with a single identifier. + + + '{0}', implicitly declared for {1} '{2}', cannot shadow a 'MustOverride' method in the base {3} '{4}'. + + + '{0}' cannot override '{1}' because it is not accessible in this context. + + + 'Handles' in modules must specify a 'WithEvents' variable qualified with a single identifier. + + + 'IsNot' requires operands that have reference types, but this operand has the value type '{0}'. + + + '{0}' conflicts with the reserved member by this name that is implicitly declared in all enums. + + + '{0}' is already declared in this {1}. + + + 'System.Void' can only be used in a GetType expression. + + + Event '{0}' cannot implement event '{1}' on interface '{2}' because their delegate types '{3}' and '{4}' do not match. + + + Type '{0}' in assembly '{1}' has been forwarded to assembly '{2}'. Either a reference to '{2}' is missing from your project or the type '{0}' is missing from assembly '{2}'. + + + '{0}' in assembly '{1}' has been forwarded to itself and so is an unsupported type. + + + Non-intrinsic type names are not allowed in conditional compilation expressions. + + + Syntax error in conditional compilation expression. + + + Arrays of type 'System.Void' are not allowed in this expression. + + + '{0}' is ambiguous because multiple kinds of members with this name exist in {1} '{2}'. + + + Expression of type '{0}' can never be of type '{1}'. + + + Partial methods must be declared 'Private' instead of '{0}'. + + + Partial methods must be declared 'Private'. + + + Method '{0}' cannot be declared 'Partial' because only one method '{1}' can be marked 'Partial'. + + + Method '{0}' cannot implement partial method '{1}' because '{2}' already implements it. Only one method can implement a partial method. + + + Partial methods must have empty method bodies. + + + '{0}' cannot be declared 'Partial' because partial methods must be Subs. + + + Method '{0}' does not have the same generic constraints as the partial method '{1}'. + + + Partial method '{0}' cannot use the 'Implements' keyword. + + + 'AddressOf' cannot be applied to '{0}' because '{0}' is a partial method without an implementation. + + + Method '{0}' must be declared 'Private' in order to implement partial method '{1}'. + + + Parameter name '{0}' does not match the name of the corresponding parameter, '{1}', defined on the partial method declaration '{2}'. + + + Name of type parameter '{0}' does not match '{1}', the corresponding type parameter defined on the partial method declaration '{2}'. + + + 'Shared' attribute property '{0}' cannot be the target of an assignment. + + + 'ReadOnly' attribute property '{0}' cannot be the target of an assignment. + + + Resource name '{0}' cannot be used more than once. + + + Each linked resource and module must have a unique filename. Filename '{0}' is specified more than once in this assembly. + + + '{0}' cannot be used as an attribute because it is not a class. + + + '{0}' cannot be used as an attribute because it does not inherit from 'System.Attribute'. + + + '{0}' cannot be used as an attribute because it is declared 'MustInherit'. + + + Unable to open resource file '{0}': {1} + + + Attribute member '{0}' cannot be the target of an assignment because it is not declared 'Public'. + + + 'System.STAThreadAttribute' and 'System.MTAThreadAttribute' cannot both be applied to the same method. + + + Project '{0}' makes an indirect reference to assembly '{1}', which contains '{2}'. Add a file reference to '{3}' to your project. + + + Type '{0}' cannot be used in an attribute because it is not declared 'Public'. + + + Type '{0}' cannot be used in an attribute because its container '{1}' is not declared 'Public'. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to a Sub, Function, or Operator with a non-empty body. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to a Declare. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to a Get or Set. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to a method that is generic or contained in a generic type. + + + 'Microsoft.VisualBasic.ComClassAttribute' cannot be applied to a class that is generic or contained inside a generic type. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to instance method. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to interface methods. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to 'AddHandler', 'RemoveHandler' or 'RaiseEvent' method. + + + Friend assembly reference '{0}' is invalid. InternalsVisibleTo declarations cannot have a version, culture, public key token, or processor architecture specified. + + + Friend assembly reference '{0}' is invalid. Strong-name signed assemblies must specify a public key in their InternalsVisibleTo declarations. + + + Friend declaration '{0}' is invalid and cannot be resolved. + + + Member '{0}' cannot override member '{1}' defined in another assembly/project because the access modifier 'Protected Friend' expands accessibility. Use 'Protected' instead. + + + Local variable '{0}' cannot be referred to before it is declared. + + + '{0}' is not valid within a Module. + + + Statement cannot end a block outside of a line 'If' statement. + + + 'Char' values cannot be converted to '{0}'. Use 'Microsoft.VisualBasic.AscW' to interpret a character as a Unicode value or 'Microsoft.VisualBasic.Val' to interpret it as a digit. + + + '{0}' values cannot be converted to 'Char'. Use 'Microsoft.VisualBasic.ChrW' to interpret a numeric value as a Unicode character or first convert it to 'String' to produce a digit. + + + Delegate '{0}' requires an 'AddressOf' expression or lambda expression as the only argument to its constructor. + + + Method declaration statements must be the first statement on a logical line. + + + '{0}' cannot be named as a parameter in an attribute specifier because it is not a field or property. + + + Option Strict On disallows operands of type Object for operator '{0}'. Use the 'Is' operator to test for object identity. + + + Bounds can be specified only for the top-level array when initializing an array of arrays. + + + 'Assembly' or 'Module' expected. + + + '{0}' has no parameters and its return type cannot be indexed. + + + Comma, ')', or a valid expression continuation expected. + + + 'Resume' or 'GoTo' expected. + + + '=' expected. + + + Parameter '{0}' in '{1}' already has a matching omitted argument. + + + '{0}' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event. + + + Expression is of type '{0}', which is not a collection type. + + + Default values cannot be supplied for parameters that are not declared 'Optional'. + + + 'MyBase' must be followed by '.' and an identifier. + + + 'MyClass' must be followed by '.' and an identifier. + + + Option Strict On disallows narrowing from type '{1}' to type '{2}' in copying the value of 'ByRef' parameter '{0}' back to the matching argument. + + + '#ElseIf' cannot follow '#Else' as part of a '#If' block. + + + Attribute specifier is not a complete statement. Use a line continuation to apply the attribute to the following statement. + + + Class '{0}' must declare a 'Sub New' because its base class '{1}' has more than one accessible 'Sub New' that can be called with no arguments. + + + 'Next' statement names more variables than there are matching 'For' statements. + + + First statement of this 'Sub New' must be a call to 'MyBase.New' or 'MyClass.New' because base class '{0}' of '{1}' has more than one accessible 'Sub New' that can be called with no arguments. + + + Array declared as for loop control variable cannot be declared with an initial size. + + + The '{0}' keyword is used to overload inherited members; do not use the '{0}' keyword when overloading 'Sub New'. + + + Type character cannot be used in a type parameter declaration. + + + Too few type arguments to '{0}'. + + + Too many type arguments to '{0}'. + + + Type argument '{0}' does not inherit from or implement the constraint type '{1}'. + + + '{0}' has no type parameters and so cannot have type arguments. + + + 'New' cannot be used on a type parameter that does not have a 'New' constraint. + + + Type parameter '{0}' can only have one constraint that is a class. + + + Type constraint '{0}' must be either a class, interface or type parameter. + + + Type parameter already declared with name '{0}'. + + + Type parameter '{0}' for '{1}' cannot be inferred. + + + 'Is' operand of type '{0}' can be compared only to 'Nothing' because '{0}' is a type parameter with no class constraint. + + + Copying the value of 'ByRef' parameter '{0}' back to the matching argument narrows from type '{1}' to type '{2}'. + + + '{0}' has the same name as a type parameter. + + + {0} '{1}' cannot inherit from a type parameter. + + + Type parameter not allowed in 'Implements' clause. + + + Array lower bounds can be only '0'. + + + Type constraint cannot be a 'NotInheritable' class. + + + '{0}' cannot be used as a type constraint. + + + Type parameters cannot be specified on this declaration. + + + Type arguments are not valid because attributes cannot be generic. + + + Type parameters, generic types or types contained in generic types cannot be used as attributes. + + + Local variables within generic methods cannot be declared 'Static'. + + + {0} '{1}' implicitly defines a member '{2}' which has the same name as a type parameter. + + + Constraint type '{0}' already specified for this type parameter. + + + Cannot implement interface '{0}' because its implementation could conflict with the implementation of another implemented interface '{1}' for some type arguments. + + + Modules cannot be generic. + + + Classes that are generic or contained in a generic type cannot inherit from an attribute class. + + + 'Declare' statements are not allowed in generic types or types contained in generic types. + + + '{0}' cannot override '{1}' because they differ by type parameter constraints. + + + '{0}' cannot implement '{1}.{2}' because they differ by type parameter constraints. + + + Type parameters or types constructed with type parameters are not allowed in attribute arguments. + + + Generic methods cannot use 'Handles' clause. + + + 'New' constraint cannot be specified multiple times for the same type parameter. + + + Type argument '{0}' is declared 'MustInherit' and does not satisfy the 'New' constraint for type parameter '{1}'. + + + Type argument '{0}' must have a public parameterless instance constructor to satisfy the 'New' constraint for type parameter '{1}'. + + + Type parameter '{0}' must have either a 'New' constraint or a 'Structure' constraint to satisfy the 'New' constraint for type parameter '{1}'. + + + Arguments cannot be passed to a 'New' used on a type parameter. + + + Generic type '{0}' cannot be imported more than once. + + + Overload resolution failed because no accessible '{0}' accepts this number of type arguments. + + + Type arguments unexpected. + + + '{0}' is already declared as a type parameter of this method. + + + Type parameter cannot have the same name as its defining function. + + + Type or 'New' expected. + + + 'Of' required when specifying type arguments for a generic type or method. + + + '(' unexpected. Arrays of uninstantiated generic types are not allowed. + + + 'For Each' on type '{0}' is ambiguous because the type implements multiple instantiations of 'System.Collections.Generic.IEnumerable(Of T)'. + + + 'IsNot' operand of type '{0}' can be compared only to 'Nothing' because '{0}' is a type parameter with no class constraint. + + + Type parameters cannot be used as qualifiers. + + + Comma or ')' expected. + + + 'As', comma or ')' expected. + + + 'Class' constraint cannot be specified multiple times for the same type parameter. + + + 'Structure' constraint cannot be specified multiple times for the same type parameter. + + + 'New' constraint and 'Structure' constraint cannot be combined. + + + 'Class' constraint and 'Structure' constraint cannot be combined. + + + Type argument '{0}' does not satisfy the 'Structure' constraint for type parameter '{1}'. + + + Type argument '{0}' does not satisfy the 'Class' constraint for type parameter '{1}'. + + + 'Class' constraint and a specific class type constraint cannot be combined. + + + 'Structure' constraint and a specific class type constraint cannot be combined. + + + Indirect constraint '{0}' obtained from the type parameter constraint '{1}' conflicts with the indirect constraint '{2}' obtained from the type parameter constraint '{3}'. + + + Constraint '{0}' conflicts with the indirect constraint '{1}' obtained from the type parameter constraint '{2}'. + + + Indirect constraint '{0}' obtained from the type parameter constraint '{1}' conflicts with the constraint '{2}'. + + + '{0}' is constrained to '{1}'. + + + Type parameter '{0}' cannot be constrained to itself: {1} + + + Type parameter with a 'Structure' constraint cannot be used as a constraint. + + + 'System.Nullable' does not satisfy the 'Structure' constraint for type parameter '{0}'. Only non-nullable 'Structure' types are allowed. + + + Constraint '{0}' conflicts with the constraint '{1}' already specified for type parameter '{2}'. + + + Cannot inherit interface '{0}' because it could be identical to interface '{1}' for some type arguments. + + + Cannot inherit interface '{0}' because the interface '{1}' from which it inherits could be identical to interface '{2}' for some type arguments. + + + Cannot inherit interface '{0}' because the interface '{1}' from which it inherits could be identical to interface '{2}' from which the interface '{3}' inherits for some type arguments. + + + Cannot inherit interface '{0}' because it could be identical to interface '{1}' from which the interface '{2}' inherits for some type arguments. + + + Cannot implement interface '{0}' because the interface '{1}' from which it inherits could be identical to implemented interface '{2}' for some type arguments. + + + Cannot implement interface '{0}' because the interface '{1}' from which it inherits could be identical to interface '{2}' from which the implemented interface '{3}' inherits for some type arguments. + + + Cannot implement interface '{0}' because it could be identical to interface '{1}' from which the implemented interface '{2}' inherits for some type arguments. + + + Generic parameters used as optional parameter types must be class constrained. + + + Methods of 'System.Nullable(Of T)' cannot be used as operands of the 'AddressOf' operator. + + + 'Is' operand of type '{0}' can be compared only to 'Nothing' because '{0}' is a nullable type. + + + 'IsNot' operand of type '{0}' can be compared only to 'Nothing' because '{0}' is a nullable type. + + + '{0}' cannot be declared 'Shadows' outside of a class, structure, or interface. + + + Property parameters cannot have the name 'Value'. + + + The project currently contains references to more than one version of '{0}', a direct reference to version {2} and an indirect reference to version {1}. Change the direct reference to use version {1} (or higher) of {0}. + + + Multiple assemblies with equivalent identity have been imported: '{0}' and '{1}'. Remove one of the duplicate references. + + + Project already has a reference to assembly '{0}'. A second reference to '{1}' cannot be added. + + + Illegal call expression or index expression. + + + Conflict between the default property and the 'DefaultMemberAttribute' defined on '{0}'. + + + '{0}' cannot be applied because the format of the GUID '{1}' is not correct. + + + 'Microsoft.VisualBasic.ComClassAttribute' and '{0}' cannot both be applied to the same class. + + + 'Microsoft.VisualBasic.ComClassAttribute' cannot be applied to '{0}' because its container '{1}' is not declared 'Public'. + + + 'System.Runtime.InteropServices.DispIdAttribute' cannot be applied to '{0}' because 'Microsoft.VisualBasic.ComClassAttribute' reserves zero for the default property. + + + 'System.Runtime.InteropServices.DispIdAttribute' cannot be applied to '{0}' because 'Microsoft.VisualBasic.ComClassAttribute' reserves values less than zero. + + + 'InterfaceId' and 'EventsId' parameters for 'Microsoft.VisualBasic.ComClassAttribute' on '{0}' cannot have the same value. + + + 'Microsoft.VisualBasic.ComClassAttribute' cannot be applied to a class that is declared 'MustInherit'. + + + 'Microsoft.VisualBasic.ComClassAttribute' cannot be applied to '{0}' because it is not declared 'Public'. + + + Operator declaration must be one of: +, -, *, \, /, ^, &, Like, Mod, And, Or, Xor, Not, <<, >>, =, <>, <, <=, >, >=, CType, IsTrue, IsFalse. + + + 'Widening' and 'Narrowing' cannot be combined. + + + Operator is not overloadable. Operator declaration must be one of: +, -, *, \, /, ^, &, Like, Mod, And, Or, Xor, Not, <<, >>, =, <>, <, <=, >, >=, CType, IsTrue, IsFalse. + + + 'Handles' is not valid on operator declarations. + + + 'Implements' is not valid on operator declarations. + + + 'End Operator' expected. + + + 'End Operator' must be the first statement on a line. + + + 'End Operator' must be preceded by a matching 'Operator'. + + + 'Exit Operator' is not valid. Use 'Return' to exit an operator. + + + '{0}' parameters cannot be declared 'ParamArray'. + + + '{0}' parameters cannot be declared 'Optional'. + + + Operators must be declared 'Public'. + + + Operators must be declared 'Shared'. + + + Operators cannot be declared '{0}'. + + + Operator '{0}' must have one parameter. + + + Operator '{0}' must have two parameters. + + + Operator '{0}' must have either one or two parameters. + + + Conversion operators must be declared either 'Widening' or 'Narrowing'. + + + Operators cannot be declared in modules. + + + Only conversion operators can be declared '{0}'. + + + Parameter of this unary operator must be of the containing type '{0}'. + + + At least one parameter of this binary operator must be of the containing type '{0}'. + + + Either the parameter type or the return type of this conversion operator must be of the containing type '{0}'. + + + Operator '{0}' must have a return type of Boolean. + + + Conversion operators cannot convert from a type to the same type. + + + Conversion operators cannot convert to an interface type. + + + Conversion operators cannot convert from a type to its base type. + + + Conversion operators cannot convert from a type to its derived type. + + + Conversion operators cannot convert to Object. + + + Conversion operators cannot convert from an interface type. + + + Conversion operators cannot convert from a base type. + + + Conversion operators cannot convert from a derived type. + + + Conversion operators cannot convert from Object. + + + Matching '{0}' operator is required for '{1}'. + + + Return and parameter types of '{0}' must be '{1}' to be used in a '{2}' expression. + + + Type '{0}' must define operator '{1}' to be used in a '{2}' expression. + + + Cannot copy the value of 'ByRef' parameter '{0}' back to the matching argument because type '{1}' cannot be converted to type '{2}'. + + + Type '{0}' must define operator '{1}' to be used in a 'For' statement. + + + Return and parameter types of '{0}' must be '{1}' to be used in a 'For' statement. + + + Parameter types of '{0}' must be '{1}' to be used in a 'For' statement. + + + Operator '{0}' must have a second parameter of type 'Integer' or 'Integer?'. + + + Nullable modifier cannot be specified on both a variable and its type. + + + Type '{0}' must be a value type or a type argument constrained to 'Structure' in order to be used with 'Nullable' or nullable modifier '?'. + + + Nullable modifier '?' and array modifiers '(' and ')' cannot be specified on both a variable and its type. + + + Expressions used with an 'If' expression cannot contain type characters. + + + 'If' operands cannot be named arguments. + + + Cannot infer a common type for the second and third operands of the 'If' operator. One must have a widening conversion to the other. + + + First operand in a binary 'If' expression must be a nullable value type, a reference type, or an unconstrained generic type. + + + 'If' operator cannot be used in a 'Call' statement. + + + Nullable modifier cannot be specified in variable declarations with 'As New'. + + + Cannot infer a common type for the first and second operands of the binary 'If' operator. One must have a widening conversion to the other. + + + Nullable types are not allowed in conditional compilation expressions. + + + Nullable modifier cannot be used with a variable whose implicit type is 'Object'. + + + Requested operation is not available because the runtime library function '{0}' is not defined. + + + 'Global' must be followed by '.' and an identifier. + + + 'Global' not allowed in this context; identifier expected. + + + 'Global' not allowed in handles; local name expected. + + + 'ElseIf' must be preceded by a matching 'If' or 'ElseIf'. + + + Attribute constructor has a 'ByRef' parameter of type '{0}'; cannot use constructors with byref parameters to apply the attribute. + + + 'End Using' must be preceded by a matching 'Using'. + + + 'Using' must end with a matching 'End Using'. + + + 'GoTo {0}' is not valid because '{0}' is inside a 'Using' statement that does not contain this statement. + + + 'Using' operand of type '{0}' must implement 'System.IDisposable'. + + + 'Using' resource variable must have an explicit initialization. + + + 'Using' resource variable type can not be array type. + + + 'On Error' statements are not valid within 'Using' statements. + + + '{0}' has the same name as a member used for type '{1}' exposed in a 'My' group. Rename the type or its enclosing namespace. + + + Implicit variable '{0}' is invalid because of '{1}'. + + + Object initializers require a field name to initialize. + + + 'From' expected. + + + Nested function does not have the same signature as delegate '{0}'. + + + Nested sub does not have a signature that is compatible with delegate '{0}'. + + + 'ByRef' parameter '{0}' cannot be used in a query expression. + + + Expression cannot be converted into an expression tree. + + + Instance members and 'Me' cannot be used within query expressions in structures. + + + Variable cannot be initialized with non-array type '{0}'. + + + References to 'ByRef' parameters cannot be converted to an expression tree. + + + Anonymous type member or property '{0}' is already declared. + + + Cannot convert anonymous type to an expression tree because a property of the type is used to initialize another property. + + + Anonymous type property '{0}' cannot be used in the definition of a lambda expression within the same initialization list. + + + 'Extension' attribute can be applied only to 'Module', 'Sub', or 'Function' declarations. + + + Extension methods can be defined only in modules. + + + Extension methods must declare at least one parameter. The first parameter specifies which type to extend. + + + 'Optional' cannot be applied to the first parameter of an extension method. The first parameter specifies which type to extend. + + + 'ParamArray' cannot be applied to the first parameter of an extension method. The first parameter specifies which type to extend. + + + Anonymous type member name can be inferred only from a simple or qualified name with no arguments. + + + '{0}' is not a member of '{1}'; it does not exist in the current context. + + + The custom-designed version of 'System.Runtime.CompilerServices.ExtensionAttribute' found by the compiler is not valid. Its attribute usage flags must be set to allow assemblies, classes, and methods. + + + Anonymous type member property '{0}' cannot be used to infer the type of another member property because the type of '{0}' is not yet established. + + + Type characters cannot be used in anonymous type declarations. + + + Type characters cannot be used in tuple literals. + + + 'New' cannot be used with tuple type. Use a tuple literal expression instead. + + + Predefined type '{0}' must be a structure. + + + Extension method '{0}' has type constraints that can never be satisfied. + + + Extension method '{0}' defined in '{1}': {2} + + + Method does not have a signature compatible with the delegate. + + + Type arguments could not be inferred from the delegate. + + + Too many arguments. + + + Parameter '{0}' already has a matching omitted argument. + + + Parameter '{0}' already has a matching argument. + + + '{0}' is not a method parameter. + + + Argument not specified for parameter '{0}'. + + + Type parameter '{0}' cannot be inferred. + + + Extension method '{0}' defined in '{1}'. + + + Anonymous type must contain at least one member. + + + Anonymous type member name must be preceded by a period. + + + Identifier expected, preceded with a period. + + + Too many arguments to extension method '{0}' defined in '{1}'. + + + Parameter '{0}' in extension method '{1}' defined in '{2}' already has a matching omitted argument. + + + Parameter '{0}' of extension method '{1}' defined in '{2}' already has a matching argument. + + + '{0}' is not a parameter of extension method '{1}' defined in '{2}'. + + + Argument not specified for parameter '{0}' of extension method '{1}' defined in '{2}'. + + + Type parameter '{0}' for extension method '{1}' defined in '{2}' cannot be inferred. + + + Too few type arguments to extension method '{0}' defined in '{1}'. + + + Too many type arguments to extension method '{0}' defined in '{1}'. + + + 'In' or '=' expected. + + + Expression of type '{0}' is not queryable. Make sure you are not missing an assembly reference and/or namespace import for the LINQ provider. + + + Definition of method '{0}' is not accessible in this context. + + + Method cannot contain both a '{0}' statement and a definition of a variable that is used in a lambda or query expression. + + + '{0}{1}' is not valid because '{2}' is inside a scope that defines a variable that is used in a lambda or query expression. + + + Instance of restricted type '{0}' cannot be used in a query expression. + + + Range variable name can be inferred only from a simple or qualified name with no arguments. + + + Range variable '{0}' is already declared. + + + Type characters cannot be used in range variable declarations. + + + 'ReadOnly' variable cannot be the target of an assignment in a lambda expression inside a constructor. + + + Multi-dimensional array cannot be converted to an expression tree. + + + Late binding operations cannot be converted to an expression tree. + + + 'By' expected. + + + Range variable name cannot match the name of a member of the 'Object' class. + + + 'In' expected. + + + Name '{0}' is either not declared or not in the current scope. + + + Return type of nested function matching parameter '{0}' narrows from '{1}' to '{2}'. + + + Anonymous type member name cannot be inferred from an XML identifier that is not a valid Visual Basic identifier. + + + Range variable name cannot be inferred from an XML identifier that is not a valid Visual Basic identifier. + + + 'Into' expected. + + + Aggregate function name cannot be used with a type character. + + + 'On' expected. + + + 'Equals' expected. + + + 'And' expected. + + + 'Equals' cannot compare a value of type '{0}' with a value of type '{1}'. + + + You must reference at least one range variable on both sides of the 'Equals' operator. Range variable(s) {0} must appear on one side of the 'Equals' operator, and range variable(s) {1} must appear on the other. + + + Lambda expression cannot be converted to '{0}' because '{0}' is not a delegate type. + + + Lambda expression cannot be converted to '{0}' because type '{0}' is declared 'MustInherit' and cannot be created. + + + A nullable type cannot be inferred for variable '{0}'. + + + Nullable type inference is not supported in this context. + + + 'Join' expected. + + + Nullable parameters must specify a type. + + + Range variable '{0}' hides a variable in an enclosing block, a previously defined range variable, or an implicitly declared variable in a query expression. + + + Attributes cannot be applied to parameters of lambda expressions. + + + Lambda expressions are not valid in the first expression of a 'Select Case' statement. + + + 'AddressOf' expressions are not valid in the first expression of a 'Select Case' statement. + + + The '?' character cannot be used here. + + + Instance members and 'Me' cannot be used within a lambda expression in structures. + + + 'ByRef' parameter '{0}' cannot be used in a lambda expression. + + + Instance of restricted type '{0}' cannot be used in a lambda expression. + + + Lambda parameter '{0}' hides a variable in an enclosing block, a previously defined range variable, or an implicitly declared variable in a query expression. + + + Option Strict On requires each lambda expression parameter to be declared with an 'As' clause if its type cannot be inferred. + + + Array modifiers cannot be specified on lambda expression parameter name. They must be specified on its type. + + + Data type(s) of the type parameter(s) cannot be inferred from these arguments. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) in method '{0}' cannot be inferred from these arguments. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) in extension method '{0}' defined in '{1}' cannot be inferred from these arguments. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) cannot be inferred from these arguments. + + + Data type(s) of the type parameter(s) in method '{0}' cannot be inferred from these arguments. + + + Data type(s) of the type parameter(s) in extension method '{0}' defined in '{1}' cannot be inferred from these arguments. + + + Data type(s) of the type parameter(s) cannot be inferred from these arguments because more than one type is possible. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) in method '{0}' cannot be inferred from these arguments because more than one type is possible. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) in extension method '{0}' defined in '{1}' cannot be inferred from these arguments because more than one type is possible. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) cannot be inferred from these arguments because more than one type is possible. + + + Data type(s) of the type parameter(s) in method '{0}' cannot be inferred from these arguments because more than one type is possible. + + + Data type(s) of the type parameter(s) in extension method '{0}' defined in '{1}' cannot be inferred from these arguments because more than one type is possible. + + + Data type(s) of the type parameter(s) cannot be inferred from these arguments because they do not convert to the same type. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) in method '{0}' cannot be inferred from these arguments because they do not convert to the same type. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) in extension method '{0}' defined in '{1}' cannot be inferred from these arguments because they do not convert to the same type. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) cannot be inferred from these arguments because they do not convert to the same type. + + + Data type(s) of the type parameter(s) in method '{0}' cannot be inferred from these arguments because they do not convert to the same type. + + + Data type(s) of the type parameter(s) in extension method '{0}' defined in '{1}' cannot be inferred from these arguments because they do not convert to the same type. + + + Option Strict On does not allow narrowing in implicit type conversions between method '{0}' and delegate '{1}'. + + + '{0}' is not accessible in this context because the return type is not accessible. + + + 'Group' or an identifier expected. + + + 'Group' not allowed in this context; identifier expected. + + + Option Strict On does not allow narrowing in implicit type conversions between extension method '{0}' defined in '{2}' and delegate '{1}'. + + + Extension Method '{0}' defined in '{2}' does not have a signature compatible with delegate '{1}'. + + + Argument matching parameter '{0}' narrows to '{1}'. + + + {0} + + + Auto-implemented Properties contained in Structures cannot have initializers unless they are marked 'Shared'. + + + XML elements cannot be selected from type '{0}'. + + + XML attributes cannot be selected from type '{0}'. + + + XML descendant elements cannot be selected from type '{0}'. + + + Extension method '{0}' defined in '{1}' is not generic (or has no free type parameters) and so cannot have type arguments. + + + Late-bound extension methods are not supported. + + + Cannot infer a data type for '{0}' because the array dimensions do not match. + + + Type of the range variable cannot be inferred, and late binding is not allowed with Option Strict on. Use an 'As' clause to specify the type. + + + Type '{0}' cannot be embedded because it has generic argument. Consider disabling the embedding of interop types. + + + Type '{0}' cannot be used across assembly boundaries because it has a generic type argument that is an embedded interop type. + + + '{0}' is obsolete: '{1}'. + + + Type or member is obsolete + + + {0} '{1}' shadows an overloadable member declared in the base {2} '{3}'. If you want to overload the base method, this method must be declared 'Overloads'. + + + Member shadows an overloadable member declared in the base type + + + {0} '{1}' conflicts with {2} '{1}' in the base {3} '{4}' and should be declared 'Shadows'. + + + Member conflicts with member in the base type and should be declared 'Shadows' + + + {0} '{1}' shadows an overridable method in the base {2} '{3}'. To override the base method, this method must be declared 'Overrides'. + + + Member shadows an overridable method in the base type + + + Default property '{0}' conflicts with the default property '{1}' in the base {2} '{3}'. '{0}' will be the default property. '{0}' should be declared 'Shadows'. + + + Default property conflicts with the default property in the base type + + + '{0}' is obsolete. + + + Type or member is obsolete + + + Possible problem detected while building assembly: {0} + + + Possible problem detected while building assembly + + + Possible problem detected while building assembly '{0}': {1} + + + Possible problem detected while building assembly + + + 'Microsoft.VisualBasic.ComClassAttribute' is specified for class '{0}' but '{0}' has no public members that can be exposed to COM; therefore, no COM interfaces are generated. + + + 'Microsoft.VisualBasic.ComClassAttribute' is specified for class but class has no public members that can be exposed to COM + + + {0} '{1}' implicitly declares '{2}', which conflicts with a member in the base {3} '{4}', and so the {0} should be declared 'Shadows'. + + + Property or event implicitly declares type or member that conflicts with a member in the base type + + + {0} '{1}' conflicts with a member implicitly declared for {2} '{3}' in the base {4} '{5}' and should be declared 'Shadows'. + + + Member conflicts with a member implicitly declared for property or event in the base type + + + {0} '{1}' implicitly declares '{2}', which conflicts with a member implicitly declared for {3} '{4}' in the base {5} '{6}'. {0} should be declared 'Shadows'. + + + Property or event implicitly declares member, which conflicts with a member implicitly declared for property or event in the base type + + + '{0}' accessor of '{1}' is obsolete: '{2}'. + + + Property accessor is obsolete + + + '{0}' accessor of '{1}' is obsolete. + + + Property accessor is obsolete + + + Type of member '{0}' is not CLS-compliant. + + + Type of member is not CLS-compliant + + + '{0}' is not CLS-compliant because it derives from '{1}', which is not CLS-compliant. + + + Type is not CLS-compliant because it derives from base type that is not CLS-compliant + + + Return type of function '{0}' is not CLS-compliant. + + + Return type of function is not CLS-compliant + + + Type of parameter '{0}' is not CLS-compliant. + + + Type of parameter is not CLS-compliant + + + '{0}' is not CLS-compliant because the interface '{1}' it inherits from is not CLS-compliant. + + + Type is not CLS-compliant because the interface it inherits from is not CLS-compliant + + + {0} '{1}' cannot be marked CLS-compliant because its containing type '{2}' is not CLS-compliant. + + + Member cannot be marked CLS-compliant because its containing type is not CLS-compliant + + + Name '{0}' is not CLS-compliant. + + + Name is not CLS-compliant + + + Underlying type '{0}' of Enum is not CLS-compliant. + + + Underlying type of Enum is not CLS-compliant + + + Non CLS-compliant '{0}' is not allowed in a CLS-compliant interface. + + + Non CLS-compliant member is not allowed in a CLS-compliant interface + + + Non CLS-compliant 'MustOverride' member is not allowed in CLS-compliant type '{0}'. + + + Non CLS-compliant 'MustOverride' member is not allowed in CLS-compliant type + + + '{0}' is not CLS-compliant because it overloads '{1}' which differs from it only by array of array parameter types or by the rank of the array parameter types. + + + Method is not CLS-compliant because it overloads method which differs from it only by array of array parameter types or by the rank of the array parameter types + + + Root namespace '{0}' is not CLS-compliant. + + + Root namespace is not CLS-compliant + + + Name '{0}' in the root namespace '{1}' is not CLS-compliant. + + + Part of the root namespace is not CLS-compliant + + + Generic parameter constraint type '{0}' is not CLS-compliant. + + + Generic parameter constraint type is not CLS-compliant + + + Type '{0}' is not CLS-compliant. + + + Type is not CLS-compliant + + + Type of optional value for optional parameter '{0}' is not CLS-compliant. + + + Type of optional value for optional parameter is not CLS-compliant + + + System.CLSCompliantAttribute cannot be applied to property 'Get' or 'Set'. + + + System.CLSCompliantAttribute cannot be applied to property 'Get' or 'Set' + + + {0} '{1}' and partial {2} '{3}' conflict in {4} '{5}', but are being merged because one of them is declared partial. + + + Type and partial type conflict, but are being merged because one of them is declared partial + + + Type parameter '{0}' has the same name as a type parameter of an enclosing type. Enclosing type's type parameter will be shadowed. + + + Type parameter has the same name as a type parameter of an enclosing type + + + Could not find standard library '{0}'. + + + Could not find standard library + + + Delegate type '{0}' of event '{1}' is not CLS-compliant. + + + Delegate type of event is not CLS-compliant + + + System.Diagnostics.DebuggerHiddenAttribute does not affect 'Get' or 'Set' when applied to the Property definition. Apply the attribute directly to the 'Get' and 'Set' procedures as appropriate. + + + System.Diagnostics.DebuggerHiddenAttribute does not affect 'Get' or 'Set' when applied to the Property definition + + + Range specified for 'Case' statement is not valid. Make sure that the lower bound is less than or equal to the upper bound. + + + Range specified for 'Case' statement is not valid + + + '{0}' method for event '{1}' cannot be marked CLS compliant because its containing type '{2}' is not CLS compliant. + + + AddHandler or RemoveHandler method for event cannot be marked CLS compliant because its containing type is not CLS compliant + + + '{0}' in designer-generated type '{1}' should call InitializeComponent method. + + + Constructor in designer-generated type should call InitializeComponent method + + + Casing of namespace name '{0}' does not match casing of namespace name '{1}' in '{2}'. + + + Casing of namespace name does not match + + + Namespace or type specified in the Imports '{0}' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases. + + + Namespace or type specified in Imports statement doesn't contain any public member or cannot be found + + + Namespace or type specified in the project-level Imports '{0}' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any ... + + + Namespace or type imported at project level doesn't contain any public member or cannot be found + + + A reference was created to embedded interop assembly '{0}' because of an indirect reference to that assembly from assembly '{1}'. Consider changing the 'Embed Interop Types' property on either assembly. + + + A reference was created to embedded interop assembly because of an indirect reference to that assembly + + + Class '{0}' should declare a 'Sub New' because the '{1}' in its base class '{2}' is marked obsolete. + + + Class should declare a 'Sub New' because the constructor in its base class is marked obsolete + + + Class '{0}' should declare a 'Sub New' because the '{1}' in its base class '{2}' is marked obsolete: '{3}'. + + + Class should declare a 'Sub New' because the constructor in its base class is marked obsolete + + + First statement of this 'Sub New' should be an explicit call to 'MyBase.New' or 'MyClass.New' because the '{0}' in the base class '{1}' of '{2}' is marked obsolete. + + + First statement of this 'Sub New' should be an explicit call to 'MyBase.New' or 'MyClass.New' because the constructor in the base class is marked obsolete + + + First statement of this 'Sub New' should be an explicit call to 'MyBase.New' or 'MyClass.New' because the '{0}' in the base class '{1}' of '{2}' is marked obsolete: '{3}' + + + First statement of this 'Sub New' should be an explicit call to 'MyBase.New' or 'MyClass.New' because the constructor in the base class is marked obsolete + + + Operator without an 'As' clause; type of Object assumed. + + + Operator without an 'As' clause + + + Type arguments inferred for method '{0}' result in the following warnings :{1} + + + Type arguments inferred for method result in warnings + + + Attribute 'Conditional' is only valid on 'Sub' declarations. + + + Attribute 'Conditional' is only valid on 'Sub' declarations + + + Use command-line option '{0}' or appropriate project settings instead of '{1}'. + + + Use command-line option /keyfile, /keycontainer, or /delaysign instead of AssemblyKeyFileAttribute, AssemblyKeyNameAttribute, or AssemblyDelaySignAttribute + + + Statement recursively calls the containing '{0}' for event '{1}'. + + + Statement recursively calls the event's containing AddHandler + + + Implicit conversion from '{1}' to '{2}' in copying the value of 'ByRef' parameter '{0}' back to the matching argument. + + + Implicit conversion in copying the value of 'ByRef' parameter back to the matching argument + + + {0} '{1}' conflicts with other members of the same name across the inheritance hierarchy and so should be declared 'Shadows'. + + + Method conflicts with other members of the same name across the inheritance hierarchy and so should be declared 'Shadows' + + + Expression recursively calls the containing Operator '{0}'. + + + Expression recursively calls the containing Operator + + + Implicit conversion from '{0}' to '{1}'. + + + Implicit conversion + + + Local variable '{0}' is read-only and its type is a structure. Invoking its members or passing it ByRef does not change its content and might lead to unexpected results. Consider declaring this variable outside of the 'Using' block. + + + Local variable declared by Using statement is read-only and its type is a structure + + + Local variable '{0}' is read-only. When its type is a structure, invoking its members or passing it ByRef does not change its content and might lead to unexpected results. Consider declaring this variable outside of the 'Using' block. + + + Local variable declared by Using statement is read-only and its type may be a structure + + + {0} + + + Implicit conversion + + + Late bound resolution; runtime errors could occur. + + + Late bound resolution + + + Operands of type Object used for operator '{0}'; use the 'Is' operator to test object identity. + + + Operands of type Object used for operator + + + Operands of type Object used for operator '{0}'; runtime errors could occur. + + + Operands of type Object used for operator + + + {0} + + + Variable declaration without an 'As' clause + + + {0} + + + Function without an 'As' clause + + + {0} + + + Property without an 'As' clause + + + Variable declaration without an 'As' clause; type of Object assumed. + + + Variable declaration without an 'As' clause + + + Function without an 'As' clause; return type of Object assumed. + + + Function without an 'As' clause + + + Property without an 'As' clause; type of Object assumed. + + + Property without an 'As' clause + + + Unused local variable: '{0}'. + + + Unused local variable + + + Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated. + + + Access of shared member, constant member, enum member or nested type through an instance + + + Expression recursively calls the containing property '{0}'. + + + Expression recursively calls the containing property + + + 'Catch' block never reached, because '{0}' inherits from '{1}'. + + + 'Catch' block never reached; exception type's base type handled above in the same Try statement + + + Variable '{0}' is passed by reference before it has been assigned a value. A null reference exception could result at runtime. + + + Variable is passed by reference before it has been assigned a value + + + 'Catch' block never reached; '{0}' handled above in the same Try statement. + + + 'Catch' block never reached; exception type handled above in the same Try statement + + + Operands of type Object used for operator '{0}'; use the 'IsNot' operator to test object identity. + + + Operands of type Object used for operator <> + + + Bad checksum value, non hex digits or odd number of hex digits. + + + Bad checksum value, non hex digits or odd number of hex digits + + + File name already declared with a different GUID and checksum value. + + + File name already declared with a different GUID and checksum value + + + Bad GUID format. + + + Bad GUID format + + + Operands of type Object used in expressions for 'Select', 'Case' statements; runtime errors could occur. + + + Operands of type Object used in expressions for 'Select', 'Case' statements + + + This expression will always evaluate to Nothing (due to null propagation from the equals operator). To check if the value is null consider using 'Is Nothing'. + + + This expression will always evaluate to Nothing + + + This expression will always evaluate to Nothing (due to null propagation from the equals operator). To check if the value is not null consider using 'IsNot Nothing'. + + + This expression will always evaluate to Nothing + + + Unused local constant: '{0}'. + + + Unused local constant + + + 'Microsoft.VisualBasic.ComClassAttribute' on class '{0}' implicitly declares {1} '{2}', which conflicts with a member of the same name in {3} '{4}'. Use 'Microsoft.VisualBasic.ComClassAttribute(InterfaceShadows:=True)' if you want to hide the name on the b ... + + + 'Microsoft.VisualBasic.ComClassAttribute' on class implicitly declares member, which conflicts with a member of the same name + + + '{0}' cannot be exposed to COM as a property 'Let'. You will not be able to assign non-object values (such as numbers or strings) to this property from Visual Basic 6.0 using a 'Let' statement. + + + Property cannot be exposed to COM as a property 'Let' + + + Variable '{0}' is used before it has been assigned a value. A null reference exception could result at runtime. + + + Variable is used before it has been assigned a value + + + Function '{0}' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used. + + + Function doesn't return a value on all code paths + + + Operator '{0}' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used. + + + Operator doesn't return a value on all code paths + + + Property '{0}' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used. + + + Property doesn't return a value on all code paths + + + Variable '{0}' is passed by reference before it has been assigned a value. A null reference exception could result at runtime. Make sure the structure or all the reference members are initialized before use + + + Variable is passed by reference before it has been assigned a value + + + Variable '{0}' is used before it has been assigned a value. A null reference exception could result at runtime. Make sure the structure or all the reference members are initialized before use + + + Variable is used before it has been assigned a value + + + Static variable declared without an 'As' clause; type of Object assumed. + + + Static variable declared without an 'As' clause + + + Assembly reference '{0}' is invalid and cannot be resolved. + + + Assembly reference is invalid and cannot be resolved + + + XML comment block must immediately precede the language element to which it applies. XML comment will be ignored. + + + XML comment block must immediately precede the language element to which it applies + + + Only one XML comment block is allowed per language element. + + + Only one XML comment block is allowed per language element + + + XML comment must be the first statement on a line. XML comment will be ignored. + + + XML comment must be the first statement on a line + + + XML comment cannot appear within a method or a property. XML comment will be ignored. + + + XML comment cannot appear within a method or a property + + + XML documentation parse error: {0} XML comment will be ignored. + + + XML documentation parse error + + + XML comment tag '{0}' appears with identical attributes more than once in the same XML comment block. + + + XML comment tag appears with identical attributes more than once in the same XML comment block + + + XML comment tag '{0}' is not permitted on a '{1}' language element. + + + XML comment tag is not permitted on language element + + + XML comment parameter '{0}' does not match a parameter on the corresponding '{1}' statement. + + + XML comment parameter does not match a parameter on the corresponding declaration statement + + + XML comment parameter must have a 'name' attribute. + + + XML comment parameter must have a 'name' attribute + + + XML comment has a tag with a 'cref' attribute '{0}' that could not be resolved. + + + XML comment has a tag with a 'cref' attribute that could not be resolved + + + XML comment tag 'include' must have a '{0}' attribute. XML comment will be ignored. + + + XML comment tag 'include' must have 'file' and 'path' attributes + + + Unable to create XML documentation file '{0}': {1} + + + Unable to create XML documentation file + + + XML documentation comments must precede member or type declarations. + + + XML documentation comments must precede member or type declarations + + + XML comment tag 'returns' is not permitted on a 'WriteOnly' Property. + + + XML comment tag 'returns' is not permitted on a 'WriteOnly' Property + + + XML comment cannot be applied more than once on a partial {0}. XML comments for this {0} will be ignored. + + + XML comment cannot be applied more than once on a partial type + + + XML comment tag 'returns' is not permitted on a 'declare sub' language element. + + + XML comment tag 'returns' is not permitted on a 'declare sub' language element + + + XML documentation parse error: Start tag '{0}' doesn't have a matching end tag. XML comment will be ignored. + + + XML documentation parse error: Start tag doesn't have a matching end tag + + + XML comment type parameter '{0}' does not match a type parameter on the corresponding '{1}' statement. + + + XML comment type parameter does not match a type parameter on the corresponding declaration statement + + + XML comment type parameter must have a 'name' attribute. + + + XML comment type parameter must have a 'name' attribute + + + XML comment exception must have a 'cref' attribute. + + + XML comment exception must have a 'cref' attribute + + + Unable to include XML fragment '{0}' of file '{1}'. + + + Unable to include XML fragment + + + Unable to include XML fragment '{1}' of file '{0}'. {2} + + + Unable to include XML fragment + + + Runtime errors might occur when converting '{0}' to '{1}'. + + + Runtime errors might occur when converting to or from interface type + + + Using the iteration variable in a lambda expression may have unexpected results. Instead, create a local variable within the loop and assign it the value of the iteration variable. + + + Using the iteration variable in a lambda expression may have unexpected results + + + Lambda expression will not be removed from this event handler. Assign the lambda expression to a variable and use the variable to add and remove the event. + + + Lambda expression will not be removed from this event handler + + + Using the iteration variable in a query expression may have unexpected results. Instead, create a local variable within the loop and assign it the value of the iteration variable. + + + Using the iteration variable in a query expression may have unexpected results + + + The 'AddressOf' expression has no effect in this context because the method argument to 'AddressOf' requires a relaxed conversion to the delegate type of the event. Assign the 'AddressOf' expression to a variable, and use the variable to add or remove the ... + + + The 'AddressOf' expression has no effect in this context because the method argument to 'AddressOf' requires a relaxed conversion to the delegate type of the event + + + Range variable is assumed to be of type Object because its type cannot be inferred. Use an 'As' clause to specify a different type. + + + Range variable is assumed to be of type Object because its type cannot be inferred + + + Multiline lambda expression is missing 'End Function'. + + + Multiline lambda expression is missing 'End Sub'. + + + Attributes cannot be applied to return types of lambda expressions. + + + Statement is not valid inside a single-line statement lambda. + + + This single-line statement lambda must be enclosed in parentheses. For example: (Sub() <statement>)!key + + + This single-line statement lambda must be enclosed in parentheses. For example: (Sub() <statement>).Invoke() + + + This single-line statement lambda must be enclosed in parentheses. For example: Call (Sub() <statement>) () + + + Single-line statement lambdas must include exactly one statement. + + + Static local variables cannot be declared inside lambda expressions. + + + Expanded Properties cannot be initialized. + + + Auto-implemented properties cannot have parameters. + + + Auto-implemented properties cannot be WriteOnly. + + + 'If' operator requires either two or three operands. + + + Cannot initialize the type '{0}' with a collection initializer because it is not a collection type. + + + Cannot initialize the type '{0}' with a collection initializer because it does not have an accessible 'Add' method. + + + An Object Initializer and a Collection Initializer cannot be combined in the same initialization. + + + An aggregate collection initializer entry must contain at least one element. + + + XML end element must be preceded by a matching start element. + + + 'On Error' and 'Resume' cannot appear inside a lambda expression. + + + Keywords 'Out' and 'In' can only be used in interface and delegate declarations. + + + The literal string ']]>' is not allowed in element content. + + + Inappropriate use of '{0}' keyword in a module. + + + Type or namespace '{0}' is not defined. + + + Using DirectCast operator to cast a floating-point value to the same type is not supported. + + + Using DirectCast operator to cast a value-type to the same type is obsolete. + + + Using DirectCast operator to cast a value-type to the same type is obsolete + + + Unreachable code detected. + + + Unreachable code detected + + + Function '{0}' doesn't return a value on all code paths. Are you missing a 'Return' statement? + + + Function doesn't return a value on all code paths + + + Operator '{0}' doesn't return a value on all code paths. Are you missing a 'Return' statement? + + + Operator doesn't return a value on all code paths + + + Property '{0}' doesn't return a value on all code paths. Are you missing a 'Return' statement? + + + Property doesn't return a value on all code paths + + + Global namespace may not be nested in another namespace. + + + '{0}' cannot expose type '{1}' in {2} '{3}' through {4} '{5}'. + + + '{0}' cannot be referenced because it is not a valid assembly. + + + '{0}' cannot be implemented by a {1} property. + + + {0}: {1} + + + Cannot infer a common type because more than one type is possible. + + + Cannot infer a common type because more than one type is possible; 'Object' assumed. + + + Cannot infer a common type because more than one type is possible + + + Cannot infer a common type, and Option Strict On does not allow 'Object' to be assumed. + + + Cannot infer a common type; 'Object' assumed. + + + Cannot infer a common type + + + Cannot infer a common type. + + + Error extracting public key from file '{0}': {1} + + + Error extracting public key from container '{0}': {1} + + + Friend access was granted by '{0}', but the public key of the output assembly does not match that specified by the attribute in the granting assembly. + + + Friend access was granted by '{0}', but the strong name signing state of the output assembly does not match that of the granting assembly. + + + Public sign was specified and requires a public key, but no public key was specified + + + Public signing is not supported for netmodules. + + + Attribute '{0}' is ignored when public signing is specified. + + + Attribute is ignored when public signing is specified. + + + Delay signing was specified and requires a public key, but no public key was specified. + + + Delay signing was specified and requires a public key, but no public key was specified + + + Key file '{0}' is missing the private key needed for signing. + + + Error signing assembly '{0}': {1} + + + The specified version string does not conform to the required format - major[.minor[.build|*[.revision|*]]] + + + The specified version string does not conform to the recommended format - major.minor.build.revision + + + The specified version string does not conform to the recommended format + + + The specified version string does not conform to the recommended format - major.minor.build.revision + + + Executables cannot be satellite assemblies; culture should always be empty + + + The entry point of the program is global script code; ignoring '{0}' entry point. + + + The entry point of the program is global script code; ignoring entry point + + + The xmlns attribute has special meaning and should not be written with a prefix. + + + The xmlns attribute has special meaning and should not be written with a prefix + + + It is not recommended to have attributes named xmlns. Did you mean to write 'xmlns:{0}' to define a prefix named '{0}'? + + + It is not recommended to have attributes named xmlns + + + Expected a single script (.vbx file) + + + The assembly name '{0}' is reserved and cannot be used as a reference in an interactive session + + + #R is only allowed in scripts + + + You cannot declare Namespace in script code + + + You cannot use '{0}' in top-level script code + + + Cannot infer a return type. Consider adding an 'As' clause to specify the return type. + + + Cannot infer a return type; 'Object' assumed. + + + Cannot infer a return type + + + Cannot infer a return type because more than one type is possible; 'Object' assumed. + + + Cannot infer a return type because more than one type is possible + + + Cannot infer a return type. Consider adding an 'As' clause to specify the return type. + + + Cannot infer a return type because more than one type is possible. Consider adding an 'As' clause to specify the return type. + + + The command line switch '{0}' is not yet implemented and was ignored. + + + Command line switch is not yet implemented + + + Cannot infer an element type, and Option Strict On does not allow 'Object' to be assumed. Specifying the type of the array might correct this error. + + + Cannot infer an element type. Specifying the type of the array might correct this error. + + + Cannot infer an element type because more than one type is possible. Specifying the type of the array might correct this error. + + + Cannot infer an element type; 'Object' assumed. + + + Cannot infer an element type + + + Cannot infer an element type because more than one type is possible; 'Object' assumed. + + + Cannot infer an element type because more than one type is possible + + + Data type of '{0}' in '{1}' could not be inferred. '{2}' assumed. + + + Data type could not be inferred + + + Option Strict On does not allow implicit conversions from '{0}' to '{1}' because the conversion is ambiguous. + + + Conversion from '{0}' to '{1}' may be ambiguous. + + + Conversion may be ambiguous + + + '{0}' cannot be converted to '{1}'. Consider using '{2}' instead. + + + '{0}' cannot be converted to '{1}'. Consider using '{2}' instead. + + + Type cannot be converted to target collection type + + + '{4}' cannot be converted to '{5}' because '{0}' is not derived from '{1}', as required for the 'In' generic parameter '{2}' in '{3}'. + + + '{4}' cannot be converted to '{5}' because '{0}' is not derived from '{1}', as required for the 'Out' generic parameter '{2}' in '{3}'. + + + Implicit conversion from '{4}' to '{5}'; this conversion may fail because '{0}' is not derived from '{1}', as required for the 'In' generic parameter '{2}' in '{3}'. + + + Implicit conversion; this conversion may fail because the target type is not derived from the source type, as required for 'In' generic parameter + + + Implicit conversion from '{4}' to '{5}'; this conversion may fail because '{0}' is not derived from '{1}', as required for the 'Out' generic parameter '{2}' in '{3}'. + + + Implicit conversion; this conversion may fail because the target type is not derived from the source type, as required for 'Out' generic parameter + + + '{0}' cannot be converted to '{1}'. Consider changing the '{2}' in the definition of '{3}' to an In type parameter, 'In {2}'. + + + '{0}' cannot be converted to '{1}'. Consider changing the '{2}' in the definition of '{3}' to an Out type parameter, 'Out {2}'. + + + '{0}' cannot be converted to '{1}'. Consider changing the '{2}' in the definition of '{3}' to an In type parameter, 'In {2}'. + + + Type cannot be converted to target type + + + '{0}' cannot be converted to '{1}'. Consider changing the '{2}' in the definition of '{3}' to an Out type parameter, 'Out {2}'. + + + Type cannot be converted to target type + + + Interface '{0}' is ambiguous with another implemented interface '{1}' due to the 'In' and 'Out' parameters in '{2}'. + + + Interface is ambiguous with another implemented interface due to 'In' and 'Out' parameters + + + Enumerations, classes, and structures cannot be declared in an interface that has an 'In' or 'Out' type parameter. + + + Event definitions with parameters are not allowed in an interface such as '{0}' that has 'In' or 'Out' type parameters. Consider declaring the event by using a delegate type which is not defined within '{0}'. For example, 'Event {1} As Action(Of ...)'. + + + Type '{0}' cannot be used in this context because 'In' and 'Out' type parameters cannot be used for ByRef parameter types, and '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used in '{1}' because 'In' and 'Out' type parameters cannot be made nullable, and '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used in this context because '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used for the '{1}' in '{2}' in this context because '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used in '{1}' in this context because '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used for the '{2}' of '{3}' in '{1}' in this context because '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used as a property type in this context because '{0}' is an 'In' type parameter and the property is not marked WriteOnly. + + + Type '{0}' cannot be used as a ReadOnly property type because '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used as a return type because '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used in this context because 'In' and 'Out' type parameters cannot be used for ByRef parameter types, and '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used as a ByVal parameter type because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used as a generic type constraint because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used in '{1}' because 'In' and 'Out' type parameters cannot be made nullable, and '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used in this context because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used for the '{1}' in '{2}' in this context because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used in '{1}' in this context because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used for the '{2}' of '{3}' in '{1}' in this context because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used as a property type in this context because '{0}' is an 'Out' type parameter and the property is not marked ReadOnly. + + + Type '{0}' cannot be used as a WriteOnly property type because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used in this context because both the context and the definition of '{0}' are nested within interface '{1}', and '{1}' has 'In' or 'Out' type parameters. Consider moving the definition of '{0}' outside of '{1}'. + + + Type '{0}' cannot be used for the '{2}' in '{3}' in this context because both the context and the definition of '{0}' are nested within interface '{1}', and '{1}' has 'In' or 'Out' type parameters. Consider moving the definition of '{0}' outside of '{1}'. + + + Type '{0}' cannot be used in '{2}' in this context because both the context and the definition of '{0}' are nested within interface '{1}', and '{1}' has 'In' or 'Out' type parameters. Consider moving the definition of '{0}' outside of '{1}'. + + + Type '{0}' cannot be used for the '{3}' of '{4}' in '{2}' in this context because both the context and the definition of '{0}' are nested within interface '{1}', and '{1}' has 'In' or 'Out' type parameters. Consider moving the definition of '{0}' outside o ... + + + Parameter not valid for the specified unmanaged type. + + + Unmanaged type '{0}' not valid for fields. + + + Unmanaged type '{0}' is only valid for fields. + + + Attribute parameter '{0}' must be specified. + + + Attribute parameter '{0}' or '{1}' must be specified. + + + Conflicts with '{0}', which is implicitly declared for '{1}' in {2} '{3}'. + + + <project settings> + + + Attributes applied on a return type of a WriteOnly Property have no effect. + + + Attributes applied on a return type of a WriteOnly Property have no effect + + + Security attribute '{0}' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations. + + + Cannot find the interop type that matches the embedded type '{0}'. Are you missing an assembly reference? + + + Reference to class '{0}' is not allowed when its assembly is configured to embed interop types. + + + Embedded interop structure '{0}' can contain only public instance fields. + + + Interop type '{0}' cannot be embedded because it is missing the required '{1}' attribute. + + + Cannot embed interop types from assembly '{0}' because it is missing the '{1}' attribute. + + + Cannot embed interop type '{0}' found in both assembly '{1}' and '{2}'. Consider disabling the embedding of interop types. + + + Cannot embed interop types from assembly '{0}' because it is missing either the '{1}' attribute or the '{2}' attribute. + + + Interface '{0}' has an invalid source interface which is required to embed event '{1}'. + + + Source interface '{0}' is missing method '{1}', which is required to embed event '{2}'. + + + Nested type '{0}' cannot be embedded. + + + Embedding the interop type '{0}' from assembly '{1}' causes a name clash in the current assembly. Consider disabling the embedding of interop types. + + + Embedded interop method '{0}' contains a body. + + + 'Await' may only be used in a query expression within the first collection expression of the initial 'From' clause or within the collection expression of a 'Join' clause. + + + 'Await' requires that the type '{0}' have a suitable GetAwaiter method. + + + 'Await' requires that the return type '{0}' of '{1}.GetAwaiter()' have suitable IsCompleted, OnCompleted and GetResult members, and implement INotifyCompletion or ICriticalNotifyCompletion. + + + '{0}' does not implement '{1}'. + + + Cannot await Nothing. Consider awaiting 'Task.Yield()' instead. + + + Async methods cannot have ByRef parameters. + + + 'Async' and 'Iterator' modifiers cannot be used together. + + + The implicit return variable of an Iterator or Async method cannot be accessed. + + + 'Return' statements in this Async method cannot return a value since the return type of the function is 'Task'. Consider changing the function's return type to 'Task(Of T)'. + + + Since this is an async method, the return expression must be of type '{0}' rather than 'Task(Of {0})'. + + + The 'Async' modifier can only be used on Subs, or on Functions that return Task or Task(Of T). + + + '{0}' does not return a Task and cannot be awaited. Consider changing it to an Async Function. + + + 'Only the 'Async' or 'Iterator' modifier is valid on a lambda. + + + 'Await' can only be used within an Async method. Consider marking this method with the 'Async' modifier and changing its return type to 'Task(Of {0})'. + + + 'Await' can only be used within an Async method. Consider marking this method with the 'Async' modifier and changing its return type to 'Task'. + + + 'Await' can only be used within an Async lambda expression. Consider marking this lambda expression with the 'Async' modifier. + + + 'Await' can only be used when contained within a method or lambda expression marked with the 'Async' modifier. + + + Statement lambdas cannot be converted to expression trees. + + + Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the Await operator to the result of the call. + + + Because this call is not awaited, execution of the current method continues before the call is completed + + + Loop control variable cannot include an 'Await'. + + + Static variables cannot appear inside Async or Iterator methods. + + + '{0}' cannot be used as a parameter type for an Iterator or Async method. + + + Constructor must not have the 'Async' modifier. + + + '{0}' cannot be declared 'Partial' because it has the 'Async' modifier. + + + 'On Error' and 'Resume' cannot appear inside async or iterator methods. + + + Lambdas with the 'Async' or 'Iterator' modifiers cannot be converted to expression trees. + + + Variable of restricted type '{0}' cannot be declared in an Async or Iterator method. + + + 'Await' cannot be used inside a 'Catch' statement, a 'Finally' statement, or a 'SyncLock' statement. + + + This async method lacks 'Await' operators and so will run synchronously. Consider using the 'Await' operator to await non-blocking API calls, or 'Await Task.Run(...)' to do CPU-bound work on a background thread. + + + This async method lacks 'Await' operators and so will run synchronously + + + The Task returned from this Async Function will be dropped, and any exceptions in it ignored. Consider changing it to an Async Sub so its exceptions are propagated. + + + The Task returned from this Async Function will be dropped, and any exceptions in it ignored + + + Async and Iterator methods are not allowed in a [Class|Structure|Interface|Module] that has the 'SecurityCritical' or 'SecuritySafeCritical' attribute. + + + Security attribute '{0}' cannot be applied to an Async or Iterator method. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to an Async or Iterator method. + + + 'MethodImplOptions.Synchronized' cannot be applied to an Async method. + + + The 'Main' method cannot be marked 'Async'. + + + Some overloads here take an Async Function rather than an Async Sub. Consider either using an Async Function, or casting this Async Sub explicitly to the desired type. + + + Some overloads here take an Async Function rather than an Async Sub + + + MyGroupCollectionAttribute cannot be applied to itself. + + + Literal expected. + + + Event declarations that target WinMD must specify a delegate type. Add an As clause to the event declaration. + + + Event '{0}' cannot implement a Windows Runtime event '{1}' and a regular .NET event '{2}' + + + Event '{0}' cannot implement event '{1}' on interface '{2}' because the parameters of their 'RemoveHandler' methods do not match. + + + The type of the 'AddHandler' method's parameter must be the same as the type of the event. + + + In a Windows Runtime event, the type of the 'RemoveHandler' method parameter must be 'EventRegistrationToken' + + + '{0}.{1}' from 'implements {2}' is already implemented by the base class '{3}'. Re-implementation of Windows Runtime Interface '{4}' is not allowed + + + '{0}.{1}' is already implemented by the base class '{2}'. Re-implementation of Windows Runtime Interface '{3}' is not allowed + + + Iterator methods cannot have ByRef parameters. + + + Single-line lambdas cannot have the 'Iterator' modifier. Use a multiline lambda instead. + + + Iterator functions must return either IEnumerable(Of T), or IEnumerator(Of T), or the non-generic forms IEnumerable or IEnumerator. + + + To return a value from an Iterator function, use 'Yield' rather than 'Return'. + + + 'Yield' can only be used in a method marked with the 'Iterator' modifier. + + + 'Yield' cannot be used inside a 'Catch' statement or a 'Finally' statement. + + + The AddHandler for Windows Runtime event '{0}' doesn't return a value on all code paths. Are you missing a 'Return' statement? + + + The AddHandler for Windows Runtime event doesn't return a value on all code paths + + + Optional parameter of a method '{0}' does not have the same default value as the corresponding parameter of the partial method '{1}'. + + + Parameter of a method '{0}' differs by ParamArray modifier from the corresponding parameter of the partial method '{1}'. + + + Module name '{0}' stored in '{1}' must match its filename. + + + Invalid module name: {0} + + + Attribute '{0}' from module '{1}' will be ignored in favor of the instance appearing in source. + + + Attribute from module will be ignored in favor of the instance appearing in source + + + Attribute '{0}' given in a source file conflicts with option '{1}'. + + + Referenced assembly '{0}' does not have a strong name. + + + Referenced assembly does not have a strong name + + + Invalid signature public key specified in AssemblySignatureKeyAttribute. + + + Type '{0}' conflicts with public type defined in added module '{1}'. + + + Type '{0}' exported from module '{1}' conflicts with type declared in primary module of this assembly. + + + Type '{0}' exported from module '{1}' conflicts with type '{2}' exported from module '{3}'. + + + Referenced assembly '{0}' has different culture setting of '{1}'. + + + Referenced assembly has different culture setting + + + Agnostic assembly cannot have a processor specific module '{0}'. + + + Assembly and module '{0}' cannot target different processors. + + + Referenced assembly '{0}' targets a different processor. + + + Referenced assembly targets a different processor + + + Cryptographic failure while creating hashes. + + + Conflicting options specified: Win32 resource file; Win32 manifest. + + + Forwarded type '{0}' conflicts with type declared in primary module of this assembly. + + + Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' forwarded to assembly '{3}'. + + + Name '{0}' exceeds the maximum length allowed in metadata. + + + Reference to '{0}' netmodule missing. + + + Module '{0}' is already defined in this assembly. Each module must have a unique filename. + + + Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' exported from module '{3}'. + + + Adding assembly reference '{0}' + + + Adding embedded assembly reference '{0}' + + + Adding module reference '{0}' + + + Type '{0}' does not inherit the generic type parameters of its container. + + + Failure writing debug information: {0} + + + The parameter has multiple distinct default values. + + + The field has multiple distinct constant values. + + + Cannot continue since the edit includes a reference to an embedded type: '{0}'. + + + Member '{0}' added during the current debug session can only be accessed from within its declaring assembly '{1}'. + + + '{0}' is an unsupported .NET module. + + + '{0}' is an unsupported event. + + + Properties can not have type arguments + + + IdentifierSyntax not within syntax tree + + + AnonymousObjectCreationExpressionSyntax not within syntax tree + + + FieldInitializerSyntax not within syntax tree + + + The system cannot find the path specified + + + There are no pointer types in VB. + + + There are no function pointer types in VB. + + + There is no dynamic type in VB. + + + There are no native integer types in VB. + + + variableSyntax not within syntax tree + + + AggregateSyntax not within syntax tree + + + FunctionSyntax not within syntax tree + + + Position is not within syntax tree + + + RangeVariableSyntax not within syntax tree + + + DeclarationSyntax not within syntax tree + + + StatementOrExpression is not an ExecutableStatementSyntax or an ExpressionSyntax + + + DeclarationSyntax not within tree + + + TypeParameter not within tree + + + not within tree + + + Location must be provided in order to provide minimal type qualification. + + + SemanticModel must be provided in order to provide minimal type qualification. + + + the number of type parameters and arguments should be the same + + + Cannot link resource files when building a module + + + Not a VB symbol. + + + Elements cannot be null. + + + Unused import clause. + + + Unused import statement. + + + Expected a {0} SemanticModel. + + + Position must be within span of the syntax tree. + + + Syntax node to be speculated cannot belong to a syntax tree from the current compilation. + + + Chaining speculative semantic model is not supported. You should create a speculative model from the non-speculative ParentModel. + + + Microsoft (R) Visual Basic Compiler + + + {0} version {1} + + + Copyright (C) Microsoft Corporation. All rights reserved. + + + Supported language versions: + + + Visual Basic Compiler Options + + - OUTPUT FILE - + -out:<file> Specifies the output file name. + -target:exe Create a console application (default). + ( ... + + + Local name '{0}' is too long for PDB. Consider shortening or compiling without /debug. + + + Local name is too long for PDB + + + Import string '{0}' is too long for PDB. Consider shortening or compiling without /debug. + + + Import string is too long for PDB + + + XML comment has a tag with a 'cref' attribute '{0}' that bound to a type parameter. Use the <typeparamref> tag instead. + + + XML comment has a tag with a 'cref' attribute that bound to a type parameter + + + Linked netmodule metadata must provide a full PE image: '{0}'. + + + An instance of analyzer {0} cannot be created from {1} : {2}. + + + Instance of analyzer cannot be created + + + The assembly {0} does not contain any analyzers. + + + Assembly does not contain any analyzers + + + Unable to load analyzer assembly {0} : {1}. + + + Unable to load analyzer assembly + + + Skipping some types in analyzer assembly {0} due to a ReflectionTypeLoadException : {1}. + + + Skip loading types in analyzer assembly that fail due to a ReflectionTypeLoadException + + + Error reading ruleset file {0} - {1} + + + {0} is not supported in current project type. + + + The RequiredAttribute attribute is not permitted on Visual Basic types. + + + Cannot emit debug information for a source text without encoding. + + + '{0}' is not a valid format specifier + + + Preprocessor constant '{0}' of type '{1}' is not supported, only primitive types are allowed. + + + 'Warning' expected. + + + '{0}' cannot be made nullable. + + + Leading '?' can only appear inside a 'With' statement, but not inside an object member initializer. + + + A null propagating operator cannot be converted into an expression tree. + + + An expression is too long or complex to compile + + + This expression does not have a name. + + + This sub-expression cannot be used inside NameOf argument. + + + Method type arguments unexpected. + + + SearchCriteria is expected. + + + Assembly culture strings may not contain embedded NUL characters. + + + There is an error in a referenced assembly '{0}'. + + + Format specifier may not contain trailing whitespace. + + + Alignment value is outside of the supported range. + + + There were one or more errors emitting a call to {0}.{1}. Method or its return type may be missing or malformed. + + + Unused import clause + + + Unused import statement + + + Length of String constant resulting from concatenation exceeds System.Int32.MaxValue. Try splitting the string into multiple constants. + + + Visual Basic {0} does not support {1}. + + + Error reading debug information for '{0}' + + + array literal expressions + + + async methods or lambdas + + + auto-implemented properties + + + readonly auto-implemented properties + + + variance + + + collection initializers + + + comments after line continuation + + + declaring a Global namespace + + + iterators + + + implicit line continuation + + + multi-line lambda expressions + + + 'Sub' lambda expressions + + + null conditional operations + + + 'nameof' expressions + + + region directives within method bodies or regions crossing boundaries of declaration blocks + + + multiline string literals + + + CObj in attribute arguments + + + line continuation comments + + + TypeOf IsNot expression + + + year-first date literals + + + warning directives + + + partial modules + + + partial interfaces + + + implementing read-only or write-only property with read-write property + + + digit separators + + + binary literals + + + tuples + + + Private Protected + + + Debug entry point must be a definition of a method declared in the current compilation. + + + The pathmap option was incorrectly formatted. + + + Syntax tree should be created from a submission. + + + Combined length of user strings used by the program exceeds allowed limit. Try to decrease use of string or XML literals. + + + An error occurred while writing the output file: {0} + + + Option '{0}' must be an absolute path. + + + /sourcelink switch is only supported when emitting PDB. + + + Tuple element names must be unique. + + + The tuple element name '{0}' is ignored because a different name or no name is specified by the target type '{1}'. + + + The tuple element name is ignored because a different name or no name is specified by the assignment target. + + + Tuple element name '{0}' is only allowed at position {1}. + + + Tuple element name '{0}' is disallowed at any position. + + + Tuple must contain at least two elements. + + + Cannot define a class or member that utilizes tuples because the compiler required type '{0}' cannot be found. Are you missing a reference? + + + Cannot reference 'System.Runtime.CompilerServices.TupleElementNamesAttribute' explicitly. Use the tuple syntax to define tuple names. + + + An expression tree may not contain a call to a method or property that returns by reference. + + + /embed switch is only supported when emitting a PDB. + + + Invalid instrumentation kind: {0} + + + Invalid hash algorithm name: '{0}' + + + Error writing to XML documentation file: {0} + + + Invalid assembly name: {0} + + + Module '{0}' in assembly '{1}' is forwarding the type '{2}' to multiple assemblies: '{3}' and '{4}'. + + + Merge conflict marker encountered + + + Do not use refout when using refonly. + + + Cannot compile net modules when using /refout or /refonly. + + + Named argument '{0}' is used out-of-position but is followed by an unnamed argument + + + Provided documentation mode is unsupported or invalid: '{0}'. + + + Provided language version is unsupported or invalid: '{0}'. + + + Provided source code kind is unsupported or invalid: '{0}' + + + Tuple element name '{0}' is inferred. Please use language version {1} or greater to access an element by its inferred name. + + + '{0}' is for evaluation purposes only and is subject to change or removal in future updates. + + + Type is for evaluation purposes only and is subject to change or removal in future updates. + + + Unable to read debug information of method '{0}' (token 0x{1}) from assembly '{2}' + + + {0} is not a valid Visual Basic conversion expression + + + {0} is not a valid Visual Basic argument + + + leading digit separator + + + Predefined type '{0}' is declared in multiple referenced assemblies: '{1}' and '{2}' + + + {0} is not a valid Visual Basic compound assignment operation + + + interpolated strings + + + unconstrained type parameters in binary conditional expressions + + + Multiple analyzer config files cannot be in the same directory ('{0}'). + + + Type '{0}' cannot be embedded because it has a non-abstract member. Consider setting the 'Embed Interop Types' property to false. + + + Type '{0}' cannot be embedded because it has a re-abstraction of a member from base interface. Consider setting the 'Embed Interop Types' property to false. + + + Command-line syntax error: '{0}' is not a valid value for the '{1}' option. The value must be of the form '{2}'. + + + Target runtime doesn't support default interface implementation. + + + Target runtime doesn't support 'Protected', 'Protected Friend', or 'Private Protected' accessibility for a member of an interface. + + + '{0}' is not supported in VB. + + + Attribute is not supported in VB + + + Generator '{0}' failed to generate source. It will not contribute to the output and compilation errors may occur as a result. Exception was of type '{1}' with message '{2}' + + + Generator threw the following exception: + '{0}'. + + + Generator failed to generate source. + + + Generator '{0}' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type '{1}' with message '{2}' + + + Generator threw the following exception: + '{0}'. + + + Generator failed to initialize. + + + The assembly '{0}' containing type '{1}' references .NET Framework, which is not supported. + + + The loaded assembly references .NET Framework, which is not supported. + + + assigning to or passing 'ByRef' properties with init-only setters + + + Init-only property '{0}' can only be assigned by an object member initializer, or on 'Me', 'MyClass` or 'MyBase' in an instance constructor. + + + '{0}' cannot override init-only '{1}'. + + + Init-only '{0}' cannot be implemented. + + + 'UnmanagedCallersOnly' attribute is not supported. + + + caller argument expression + + + The CallerArgumentExpressionAttribute applied to parameter '{0}' will have no effect because it's self-referential. + + + The CallerArgumentExpressionAttribute applied to parameter will have no effect because it's self-referential. + + + The CallerArgumentExpressionAttribute applied to parameter '{0}' will have no effect. It is applied with an invalid parameter name. + + + The CallerArgumentExpressionAttribute applied to parameter will have no effect. It is applied with an invalid parameter name. + + + A shared abstract interface member cannot be accessed. + + + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract '{2}'. + + + + DiagnosticAnalyzer for VB compiler's syntax/semantic/compilation diagnostics. + + + + + An array of child bound nodes. + + Note that any of the child nodes may be null. + + + + Returns Nothing if parent is not known. + + + + + Creates the Lazy IOperation from a delegate creation operand or a bound conversion operand, handling when the conversion + is actually a delegate creation. + + + + + Gets the operand from a BoundConversion, compensating for if the conversion is a user-defined conversion + + + + + Addition Visual Basic syntax extension methods. + + + + + Determines if is of a specified kind. + + The source trivia. + The syntax kind to test for. + if the trivia is of the specified kind; otherwise, . + + + + Determines if is of a specified kind. + + The source token. + The syntax kind to test for. + if the token is of the specified kind; otherwise, . + + + + Determines if is of a specified kind. + + The Source node. + The syntax kind to test for. + if the node is of the specified kind; otherwise, . + + + + Determines if is of a specified kind. + + The source node or token. + The syntax kind to test for. + if the node or token is of the specified kind; otherwise, . + + + + Returns the index of the first node of a specified kind in the node list. + + Node list. + The to find. + Returns non-negative index if the list contains a node which matches , -1 otherwise. + + + + Tests whether a list contains node of a particular kind. + + The to test for. + Returns true if the list contains a token which matches + + + + Returns the index of the first node of a specified kind in the node list. + + Node list. + The to find. + Returns non-negative index if the list contains a node which matches , -1 otherwise. + + + + Tests whether a list contains node of a particular kind. + + The to test for. + Returns true if the list contains a token which matches + + + + Returns the index of the first trivia of a specified kind in the trivia list. + + Trivia list. + The to find. + Returns non-negative index if the list contains a trivia which matches , -1 otherwise. + + + + Tests whether a list contains trivia of a particular kind. + + The to test for. + Returns true if the list contains a trivia which matches + + + + Returns the index of the first token of a specified kind in the token list. + + Token list. + The to find. + Returns non-negative index if the list contains a token which matches , -1 otherwise. + + + + Tests whether a list contains token of a particular kind. + + The to test for. + Returns true if the list contains a token which matches + +
+
diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..53f8ee9 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..181cb41 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..f7f5ae1 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..06eebc9 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..9e1c775 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..9da374c Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..d671dfc Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..410c582 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..2771509 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..2fefc81 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..ead83f6 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..a14ed11 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..324991a Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.dll new file mode 100644 index 0000000..9849c0c Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.pdb b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.pdb new file mode 100644 index 0000000..73cff87 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.pdb differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.xml b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.xml new file mode 100644 index 0000000..24535b1 --- /dev/null +++ b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.xml @@ -0,0 +1,81514 @@ + + + + +Microsoft.CodeAnalysis.VisualBasic + + + + + + Analyzes method body for error conditions such as definite assignments, unreachable code etc... + + This analysis is done when doing the full compile or when responding to GetCompileDiagnostics. + This method assume that the trees are already bound and will not do any rewriting/lowering + It is possible and common for this analysis to be done in the presence of errors. + + + + + Mutate 'self' flow analysis state to reflect the fact that there is a control-flow + convergence with the 'other' flow analysis state. Return true if and only if the + state has changed as a result of the Join. + + + + + Mutate 'self' flow analysis state to reflect the fact that there is a control-flow + sequence with the 'other' flow analysis state - in other words, this occurs and then + the other. + + + + + Produce a duplicate of this flow analysis state. + + + + + + + BlockLevel is used to keep track of the lexical nesting level of label and goto statements. + The other most block has a path of {} + + + + + + The state associated with a label includes the statement itself, the local state and the nesting. + + + + + + A pending branch. There are created for a return, break, continue, or goto statement. The + idea is that we don't know if the branch will eventually reach its destination because of an + intervening finally block that cannot complete normally. So we store them up and handle them + as we complete processing each construct. At the end of a block, if there are any pending + branches to a label in that block we process the branch. Otherwise we relay it up to the + enclosing construct as a pending branch of the enclosing construct. + + + + Start of the region being analyzed, or Nothing if it is not a region based analysis + + + End of the region being analyzed, or Nothing if it is not a region based analysis + + + Current region span, valid only for region based analysis + + + Tells whether we are analyzing the position before, during, or after the region + + + + A cache of the state at the backward branch point of each loop. This is not needed + during normal flow analysis, but is needed for region analysis. + + + + Checks if the text span passed is inside the region + + + + Subclasses may override EnterRegion to perform any actions at the entry to the region. + + + + + Subclasses may override LeaveRegion to perform any action at the end of the region. + + + + + If invalid region is dynamically detected this string contains text description of the reason. + + Currently only the following case can cause the region to be invalidated: + + - We have declaration of several variables using 'As New' having object + initializer with implicit receiver; if region included such a receiver, + it should include the whole declaration. Example: + Dim a, b As New Clazz(...) With { .X = [| .Y |] } + + - Part of With statement expression which was not captured into locals and + was not evaluated during With statement body execution. Example: + initializer with implicit receiver; if region included such a receiver, + it should include the whole declaration. Example: + Dim sArray() As StructType = ... + With sArray([| 0 |]) + End With + + + + + + The compilation in which the analysis is taking place. This is needed to determine which + conditional methods will be compiled and which will be omitted. + + + + + The symbol of method whose body is being analyzed or field or property whose + initializer is being analyzed + + + + + The bound code of the method or initializer being analyzed + + + + + The flow analysis state at each label, computed by merging the state from branches to + that label with the state when we fall into the label. Entries are created when the + label is encountered. One case deserves special attention: when the destination of the + branch is a label earlier in the code, it is possible (though rarely occurs in practice) + that we are changing the state at a label that we've already analyzed. In that case we + run another pass of the analysis to allow those changes to propagate. This repeats until + no further changes to the state of these labels occurs. This can result in quadratic + performance in unlikely but possible code such as this: "int x; if (cond) goto l1; x = + 3; l5: print x; l4: goto l5; l3: goto l4; l2: goto l3; l1: goto l2;" + + + + All of the labels seen so far in this forward scan of the body + + + + Set to true after an analysis scan if the analysis was incomplete due to a backward + "goto" branch changing some analysis result. In this case the caller scans again (until + this is false). Since the analysis proceeds by monotonically changing the state computed + at each label, this must terminate. + + + + Actual storage for PendingBranches + + + The definite assignment and/or reachability state at the point currently being analyzed. + + + + 'Me' parameter, relevant for methods, fields, properties, otherwise Nothing + + + + + Used only in the data flows out walker, we track unassignments as well as assignments + + + + + The current lexical nesting in the BoundTree. + + + + + + Where all diagnostics are deposited. + + + + Indicates whether or not support of constant expressions (boolean and nothing) + is enabled in this analyzer. In general, constant expressions support is enabled in analysis + exposed to public API consumer and disabled when used from command-line compiler. + + + + Construct an object for outside-region analysis + + + + + Construct an object for region-aware analysis + + + + Set conditional state + + + Set unconditional state + + + Split state + + + Intersect and unsplit state + + + + Pending escapes generated in the current scope (or more deeply nested scopes). When jump + statements (goto, break, continue, return) are processed, they are placed in the + Me._pendingBranches buffer to be processed later by the code handling the destination + statement. As a special case, the processing of try-finally statements might modify the + contents of the Me._pendingBranches buffer to take into account the behavior of + "intervening" finally clauses. + + + + + Perform a single pass of flow analysis. Note that after this pass, + this.backwardBranchChanged indicates if a further pass is required. + + False if the region is invalid + + + False if the region is invalid + + + + If analysis is being performed in a context of a method returns method's parameters, + otherwise returns an empty array + + + + + Specifies whether or not method's ByRef parameters should be analyzed. If there's more than one location in + the method being analyzed, then the method is partial and we prefer to report an out parameter in partial + method error. + Note: VB doesn't support "out" so it doesn't warn for unassigned parameters. However, check variables passed + byref are assigned so that data flow analysis detects parameters flowing out. + + true if the out parameters of the method should be analyzed + + + + Method symbol or nothing + TODO: Need to try and get rid of this property + + + + + If analysis is being performed in a context of a method returns method's return type, + otherwise returns Nothing + + + + + Return the flow analysis state associated with a label. + + + + + + + + Set the current state to one that indicates that it is unreachable. + + + + + Called at the point in a loop where the backwards branch would go to. + + + + + + + Called at the point in a loop where the backward branch is placed. + + + + + + + Used to resolve exit statements in each statement form that has an Exit statement + (loops, switch). + + + + + Used to resolve continue statements in each statement form that supports it. + + + + + + Subclasses override this if they want to take special actions on processing a goto + statement, when both the jump and the label have been located. + + + + + To handle a label, we resolve all pending forward references to branches to that label. Returns true if the state of + the label changes as a result. + + + + + + + When branching into constructs that don't support jumps into/out of (i.e. lambdas), + we save the pending branches when visiting more nested constructs. + + + + + We use this to restore the old set of pending branches and labels after visiting a construct that contains nested statements. + + The old pending branches/labels, which are to be merged with the current ones + + + + We look at all pending branches and attempt to resolve the branches with labels if the nesting of the + block is the nearest common parent to the branch and the label. Because the code is evaluated recursively + outward we only need to check if the current nesting is a prefix of both the branch and the label nesting. + + + + + Report an unimplemented language construct. + + + + + + + + Visit a node. + + + + + Visit a node, process + + + + + Visit a boolean condition expression. + + + + + Visit a general expression, where we will only need to determine if variables are + assigned (or not). That is, we will not be needing AssignedWhenTrue and + AssignedWhenFalse. + + + + + Since each language construct must be handled according to the rules of the language specification, + the default visitor reports that the construct for the node is not implemented in the compiler. + + + + Bound field access passed may require tracking if it is an access to a non-shared structure field + + + + If a receiver is included in cases where the receiver will not be + evaluated (an instance for a shared method for instance), we + still want to visit the receiver but treat it as unreachable code. + + + + + A region analysis walker that computes the set of variables that are always assigned a value in the region. + A variable is "always assigned" in a region if an analysis of the + region that starts with the variable unassigned ends with the variable + assigned. + + + + + This class implements the region control flow analysis operations. Region control flow analysis provides + information about statements which enter and leave a region. The analysis done lazily. When created, it performs + no analysis, but simply caches the arguments. Then, the first time one of the analysis results is used it + computes that one result and caches it. Each result is computed using a custom algorithm. + + + + + A collection of statements outside the region that jump into the region. + + + + + A collection of statements inside the region that jump to locations outside the region. + + + + + Returns true if and only if the last statement in the region can complete normally or the region contains no + statements. + + + + + A collection of return, exit sub, exit function, exit operator and exit property statements found within the region that return to the enclosing method. + + + + Produce a duplicate of this flow analysis state. + + + + Perform control flow analysis, reporting all necessary diagnostics. Returns true if the end of + the body might be reachable.. + + + + + + + Intersect bit arrays taking into account 'all bits set' flag + + receiver will be changed as a result + + + + Union bit arrays taking into account 'all bits set' flag + + receiver will be changed as a result + + + + Produce a duplicate of this flow analysis state. + + + + + + Collection of 0, 1 or more slots. Allows returning of several slots by some + DataFlowPass methods to handle cases where implicit receiver represents + several variables, like in: + Dim a, b, c As New C(...) With {...} + + Because such constructions are very rare in real user code, the collection only + allocates an array builder for storing several values if there are indeed more + than one slot to be stored. Because the collection may optionally create an + array builder, collection's Free() method must be called when appropriate. + + Note that the collection is mutable, so one can add or modify the values. + If some collection elements get replaced with 'SlotKind.NotTracked' collection + does NOT "shrink", i.e. once allocated the array builder is not freed even if + all the elements are set to 'SlotKind.NotTracked'. + + Collection cannot store 'SlotKind.Unreachable' (0) which has a special meaning. + + + + + AmbiguousLocalsPseudoSymbol is a pseudo-symbol used in flow analysis representing + a symbol of the implicit receiver in case Dim statement defines more than one variable, + but uses the same object initializer for all of them, like: + Dim a,b As New C() With { .X = .Y } + + + + Represents variable symbol combined with the containing variable slot + + + + Special slot for untracked variables + + + + + Special slot for tracking whether code is reachable + + + + + Special slot for tracking the implicit local for the function return value + + + + + The first available slot for variables + + + + + + Some variables that should be considered initially assigned. Used for region analysis. + + + + + Defines whether or not fields of intrinsic type should be tracked. Such fields should + not be tracked for error reporting purposes, but should be tracked for region flow analysis + + + + + Variables that were used anywhere, in the sense required to suppress warnings about unused variables. + + + + + Variables that were initialized or written anywhere. + + + + + A mapping from local variables to the index of their slot in a flow analysis local state. + WARNING: if variable identifier maps into SlotKind.NotTracked, it may mean that VariableIdentifier + is a structure without traceable fields. This mapping is created in MakeSlotImpl(...) + + + + + A mapping from the local variable slot to the symbol for the local variable itself. This is used in the + implementation of region analysis (support for extract method) to compute the set of variables "always + assigned" in a region of code. + + + + + Variable slots are allocated to local variables sequentially and never reused. This is + the index of the next slot number to use. + + + + + Tracks variables for which we have already reported a definite assignment error. This + allows us to report at most one such error per variable. + + + + + Did we see [On Error] or [Resume] statement? Used to suppress some diagnostics. + + + + + Perform data flow analysis, reporting all necessary diagnostics. + + + + + Locals are given slots when their declarations are encountered. We only need give slots to local variables, and + the "Me" variable of a structure constructs. Other variables are not given slots, and are therefore not tracked + by the analysis. This returns SlotKind.NotTracked for a variable that is not tracked, for fields of structs + that have the same assigned status as the container, and for structs that (recursively) contain no data members. + We do not need to track references to variables that occur before the variable is declared, as those are reported + in an earlier phase as "use before declaration". That allows us to avoid giving slots to local variables before + processing their declarations. + + + + + Return the slot for a variable, or SlotKind.NotTracked if it is not tracked (because, for example, it is an empty struct). + + + + + Force a variable to have a slot. + + + + + + + Descends through Rest fields of a tuple if "symbol" is an extended field + As a result the "symbol" will be adjusted to be the field of the innermost tuple + and a corresponding containingSlot is returned. + Return value -1 indicates a failure which could happen for the following reasons + a) Rest field does not exist, which could happen in rare error scenarios involving broken ValueTuple types + b) Rest is not tracked already and forceSlotsToExist is false (otherwise we create slots on demand) + + + + Calculates the flag of being already reported; for structure types + the slot may be reported if ALL the children are reported + + + Marks slot as reported, propagates 'reported' flag to the children if necessary + + + Unassign a slot for a regular variable + + + Assign a slot for a regular variable in a given state. + + + Assign a slot for a regular variable. + + + Hash structure fields as we may query them many times + + + + Check that the given variable is definitely assigned. If not, produce an error. + + + + Version of CheckAssigned for bound field access + + + Check node for being assigned, return the value of unassigned slot in unassignedSlot + + + + Property controls Roslyn data flow analysis features which are disabled in command-line + compiler mode to maintain backward compatibility (mostly diagnostics not reported by Dev11), + but *enabled* in flow analysis API + + + + + Specifies if the analysis should process compiler generated locals. + + Note that data flow API should never report compiler generated variables + as well as those should not generate any diagnostics (like being unassigned, etc...). + + But when the analysis is used for iterators or async captures it should process + compiler generated locals as well... + + + + + Report a given variable as not definitely assigned. Once a variable has been so + reported, we suppress further reports of that variable. + + + + + Mark a variable as assigned (or unassigned). + + + + + A variable declared with As New can be considered assigned before the initializer is executed in case the variable + is a value type. The reason is that in this case the initialization happens in place (not in a temporary) and + the variable already got the object creation expression assigned. + + + + + A region analysis walker that computes the set of variables whose values flow into (are used in) + the region. + A variable assigned outside is used inside if an analysis + that leaves the variable unassigned on entry to the region would cause the + generation of "unassigned" errors within the region. + + + + + A region analysis walker that computes the set of variables for + which their assigned values flow out of the region. + A variable assigned inside is used outside if an analysis that + treats assignments in the region as un-assigning the variable would + cause "unassigned" errors outside the region. + + + + + A region analysis walker that computes the set of variables that are definitely assigned + when a region is entered. + + + + + A region analysis walker that records jumps into the region. Works by overriding NoteBranch, which is + invoked by a superclass when the two endpoints of a jump have been identified. + + + + + + A region analysis walker that records jumps out of the region. + + + + + Region being analyzed: start node + + + Region being analyzed: end node + + + Region itself + + + + The flow analysis pass. This pass reports required diagnostics for unreachable + statements and uninitialized variables (through the call to FlowAnalysisWalker.Analyze). + + the method to be analyzed + the method's body + the receiver of the reported diagnostics + + + + A region analysis walker that records reads and writes of all variables, both inside and outside the region. + + + + + Represents analysis context attributes such as compilation, region, etc... + + + + Current compilation + + + Method, field or property symbol + + + Bound node defining the root of the bound subtree to be analyzed + + + Region being analyzed: start node + + + Region being analyzed: end node + + + Region itself + + + True if the input was bad, such as no first and last nodes + + + + Construct context from model and region + + 'boundNode' defines a bound sub-tree to be analyzed and is being used in + both region-based and not region based analysis processes. + + The last three parameters define a region. In most cases firstInRegion and lastInRegion + are being used for identifying when we should enter or leave the region. + + Text span is also being passed to define the region which is used in few places. Those + places can be rewritten to use first/last bound nodes, but simple [region.Contains(...)] + check simplifies the code significantly. (Note, C# implementation uses the same logic, + but calculates the region's text span based on first/last node; in VB to perform such + calculation would have to traverse bound subtree under first/last nodes to detect + region boundaries; we avoid this additional cost by passing the original text span as + a separate parameter because we do have it anyways) + + + + + Construct context with Failed flag + + + + + A region analysis walker that computes whether or not the region completes normally. It does this by determining + if the point at which the region ends is reachable. + + + + + An analysis that computes the set of variables that may be used + before being assigned anywhere within a method. + + + + + + A region analysis walker that records declared variables. + + + + + This class implements the region data flow analysis operations. Region data flow analysis provides information + how data flows into and out of a region. The analysis is done lazily. When created, it performs no analysis, but + simply caches the arguments. Then, the first time one of the analysis results is used it computes that one + result and caches it. Each result is computed using a custom algorithm. + + + + + A collection of the local variables that are declared within the region. Note that the region must be + bounded by a method's body or a field's initializer, so parameter symbols are never included in the result. + + + + + A collection of the local variables for which a value assigned outside the region may be used inside the region. + + + + + A collection of the local variables for which a value assigned inside the region may be used outside the region. + + + + + A collection of the local variables for which a value is always assigned inside the region. + + + + + A collection of the local variables that are read inside the region. + + + + + A collection of local variables that are written inside the region. + + + + + A collection of the local variables that are read outside the region. + + + + + A collection of local variables that are written inside the region. + + + + + A collection of the local variables that have been referenced in anonymous functions + and therefore must be moved to a field of a frame class. + + + + + A BoundForLoopStatement node has a list of control variables (from the attached next statement). + When binding the control variable of a for/for each loop that is nested in another for/for each loop, it must be + checked that the control variable has not been used by a containing for/for each loop. Because bound nodes do not + know their parents and we try to avoid passing around a stack of variables, we just walk the bound tree after the + initial binding to report this error. + In addition, it must be checked that the control variables of the next statement match the loop. Because the inner + most loop contains the next with control variables from outer binders, checking this here is also convenient. + + There are two diagnostics reported by this walker: + 1. BC30069: For loop control variable '{0}' already in use by an enclosing For loop. + 2. BC30070: Next control variable does not match For loop control variable '{0}'. + + + + + Checks if the control variable was already used in an enclosing for loop + + + + + Checks if the control variables from the next statement match the control variable of the enclosing + for loop. + Some loops may contain a next with multiple variables. + + + + + Gets the referenced symbol of the bound expression. + Used for matching variables between For and Next statements. + + The bound expression. + + + + Turns the bound initializers into a list of bound assignment statements + + + + + Builds a constructor body. + + + Lowers initializers to fields assignments if not lowered yet and the first statement of the body isn't + a call to another constructor of the containing class. + + + Bound block including + - call to a base constructor + - field initializers and top-level code + - remaining constructor statements (empty for a submission) + + + + + Rewrites GlobalStatementInitializers to ExpressionStatements and gets the initializers for fields and properties. + + + Initializers for fields and properties cannot be rewritten to their final form at this place because they might need + to be rewritten to replace their placeholder expressions to the final locals or temporaries (e.g. in case of a field + declaration with "AsNew" and multiple variable names. The final rewriting will during local rewriting. + The statement list returned by this function can be copied into the initializer without reprocessing it. + + + + + Determines if this constructor calls another constructor of the constructor's containing class. + + + + + A walker that computes the set of local variables of an iterator + method that must be moved to fields of the generated class. + + + + + Binder used for attributes + + + + Root syntax node + + + Field or property declaration statement syntax node + + + + Some nodes have special binder's for their contents + + + + + Binding info for attribute syntax and expressions that are part of a attribute. + + + + + Creates an AttributeSemanticModel that allows asking semantic questions about an attribute node. + + + + + Creates a speculative AttributeSemanticModel that allows asking semantic questions about an attribute node that did not appear in the original source code. + + + + + Backstop that forms the end of the binder chain. Does nothing, and should never actually get hit. Provides + asserts that methods never get called. + + + + + Returns true if the node is in a position where an unbound type + such as (C(of)) is allowed. + + + + + Causes lookups to assume that the given set of classes are having their + bases being resolved, so lookups should not check for base classes. + + + + + A Binder object represents a general location from where binding is happening, and provides + virtual methods for looking up unqualified names, reporting errors, and also other + operations that need to know about where binding happened from (accessibility checking, + etc.) It also contains most of the methods related to general binding of constructs, + although some large sections are factored into their own classes. + + Yes, Binder is a big grab bag of features. The reason for this is that binders are threaded + through essentially ALL binding functions. So, basically Binder has all the features that + need to be threaded through binding. + + Binder objects form a linked list and each binder links to its containing binder. Each + binder only handles operations that it knows how to handles, and passes on other calls to + its containing binder. This maintains separation of concerns and allows binders to be strung + together in various configurations to enable different binding scenarios (e.g., debugger + expression evaluator). + + In general, binder objects should be constructed via the BinderBuilder class. + + Binder class has GetBinder methods that return binders for scopes nested into the current + binder scope. One should not expect to get a binder from the functions unless a syntax that + originates a scope is passed as the argument. Also, the functions do not cross lambda + boundaries, if binder's scope contains a lambda expression, binder will not return any + binders for nodes contained in the lambda body. In order to get them, the lambda must be + bound to BoundLambda node, which exposes LambdaBinder, which can be asked for binders in the + lambda body (but it will not descend into nested lambdas). Currently, only + , + and have special implementation of GetBinder functions, + the rest just delegate to containing binder. + + + + + If the binding context requires specific binding options, then modify the given + lookup options accordingly. + + + + + Lookup the given name in the binder and containing binders. + Returns the result of the lookup. See the definition of LookupResult for details. + + + This method is virtual, but usually there is no need to override it. It + calls the virtual LookupInSingleBinder, which should be overridden instead, + for each binder in turn, and merges the results. + Overriding this method is needed only in limited scenarios, for example for + a binder that binds query [Into] clause and has implicit qualifier. + + + + + Lookup in just a single binder, without delegating to containing binder. The original + binder passed in is used for accessibility checking and so forth. + + + + + Collect extension methods with the given name that are in scope in this binder. + The passed in ArrayBuilder must be empty. Extension methods from the same containing type + must be grouped together. + + + + + Lookup all names of extension methods that are available from a single binder, without delegating + to containing binder. The original binder passed in is used for accessibility checking + and so forth. + Names that are available are inserted into "nameSet". This is a hashSet that accumulates + names, and should be created with the VB identifierComparer. + + + + + Lookups labels by label names, returns a label or Nothing + + + + + Lookup all names that are available from a single binder, without delegating + to containing binder. The original binder passed in is used for accessibility checking + and so forth. + Names that are available are inserted into "nameSet". This is a hashSet that accumulates + names, and should be created with the VB identifierComparer. + + + + + Determine if "sym" is accessible from the location represented by this binder. For protected + access, use the qualifier type "accessThroughType" if not Nothing (if Nothing just check protected + access with no qualifier). + + + Overriding methods should consider . + + + + + Determine if "sym" is accessible from the location represented by this binder. For protected + access, use the qualifier type "accessThroughType" if not Nothing (if Nothing just check protected + access with no qualifier). + + + + + Some nodes have special binder's for their contents + + + + + Some nodes have special binder's for their contents + + + + + The member containing the binding context + + + + + Additional members associated with the binding context + Currently, this field is only used for multiple field/property symbols initialized by an AsNew initializer, e.g. "Dim x, y As New Integer" or "WithEvents x, y as New Object" + + + + + Tells whether binding is happening in a query context. + + + + + Tells whether binding is happening in a lambda context. + + + + + Returns true if the node is in a position where an unbound type + such as (C(of)) is allowed. + + + + + The type containing the binding context + + + + + Returns true if the binder is binding top-level script code. + + + + + The namespace or type containing the binding context + + + + + Get the built-in MSCORLIB type identified. If it's not available (an error type), then report the + error with the given syntax and diagnostic bag. If the node and diagBag are Nothing, then don't report the error (not recommended). + + Type to get + Where to report the error, if any. + + + + This is a layer on top of the Compilation version that generates a diagnostic if the well-known + type isn't found. + + + + + WARN: Retrieves the symbol but does not check its viability (accessibility, etc). + + + + + This is a layer on top of the assembly version that generates a diagnostic if the well-known + member isn't found. + + + + + This is a layer on top of the Compilation version that generates a diagnostic if the well-known + member isn't found. + + + + + Get the source module. + + + + + Get the compilation. + + + + + Get an error symbol. + + + + + Get the Location associated with a given TextSpan. + + + + + Get a SyntaxReference associated with a given syntax node. + + + + + Returns the syntax tree. + + + + + Called in member lookup right before going into the base class of a type. Results a set of named types whose + bases classes are currently in the process of being resolved, so we shouldn't look into their bases + again to prevent/detect circular references. + + Nothing if no bases being resolved, otherwise the set of bases being resolved. + + + + Called during member lookup before going into the base class of a type. If returns + true, the base class is ignored. Primarily used for binding Imports. + + + + + Current Option Strict mode. + + + + + True if Option Infer On is in effect. False if Option Infer Off is in effect. + + + + + True if Option Explicit On is in effect. False if Option Explicit Off is in effect. + Note that even if Option Explicit Off is in effect, there are places (field initializers) + where implicit variable declaration is not permitted. See the ImplicitVariablesDeclarationAllowedHere + property also. + + + + + True if Option Compare Text is in effect. False if Option Compare Binary is in effect. + + + + + True if integer overflow checking is On. + + + + + True if implicit variable declaration is available within this binder, and the binder + has already finished binding all possible implicit declarations inside (and is not accepting) + any more. + + + + + True if implicit variable declaration is allow by the language here. Differs from OptionExplicit + in that it is only try if this binder is associated with a region that allows implicit variable + declaration (field initializers and attributes don't, for example). + + + + + Declare an implicit local variable. The type of the local is determined + by the type character (if any) on the variable. + + + + + Get all implicitly declared variables that were declared in this method body. + + + + + Disallow additional local variable declaration and report delayed shadowing diagnostics. + + + + + + Get the label that a Exit XXX statement should branch to, or Nothing if we are + not inside a context that would be exited by that kind of statement. The passed in kind + is the SyntaxKind for the exit statement that would target the label (e.g. SyntaxKind.ExitDoStatement). + + + + + Get the label that a Continue XXX statement should branch to, or Nothing if we are + not inside a context that would be exited by that kind of statement. The passed in kind + is the SyntaxKind for the exit statement that would target the label (e.g. SyntaxKind.ContinueDoStatement). + + + + + Get the label that a Return statement should branch to, or Nothing if we are + not inside a context that would be exited by that kind of statement. This method + is equivalent to calling with the appropriate exit + . + + + + + Get the special local symbol with the same name as the enclosing function. + + + + + Create a diagnostic at a particular syntax node and place it in a diagnostic bag. + + + + + Issue an error or warning for a symbol if it is Obsolete. If there is not enough + information to report diagnostics, then store the symbols so that diagnostics + can be reported at a later stage. + Also, check runtime/language support for the symbol. + + + + + Returns the type of construct being bound (BaseTypes, MethodSignature, + etc.) to allow the Binder to provide different behavior in certain cases. + Currently, this property is only used by ShouldCheckConstraints. + + + + + Returns true if the binder is performing early decoding of a + (well-known) attribute. + + + + + Return True if type constraints should be checked when binding. + + + + + Returns True if the binder, or any containing binder, has xmlns Imports. + + + + + Add { prefix, namespace } pairs from the explicitly declared namespaces in the + XmlElement hierarchy. The order of the pairs is the order the xmlns attributes + are declared on each element, and from innermost to outermost element. + + + + + This method reports use site errors if a required attribute constructor is missing. + Some attributes are considered to be optional (e.g. the CompilerGeneratedAttribute). In this case the use site + errors will be ignored. + + + + + This method reports use site errors if a required attribute constructor is missing. + Some attributes are considered to be optional (e.g. the CompilerGeneratedAttribute). In this case the use site + errors will be ignored. + + + + + Returns a placeholder substitute for a With statement placeholder specified or Nothing if not found + + Note: 'placeholder' is needed to make sure the binder can check that the placeholder is + associated with the statement. + + + + + Indicates that this binder is being used to answer SemanticModel questions (i.e. not + for batch compilation). + + + Imports touched by a binder with this flag set are not consider "used". + + + + + Binder to be used for binding New With { ... } expressions. + + + + + If set, the state of the binder shouldn't be modified by subsequent binding operations, + which could be performed by SemanticModel in context of this binder. + + + + + Having this binder, which is created for each field initializer within AnonymousObjectCreationExpressionSyntax + gives us the following advantages: + - We no longer rely on transient state of AnonymousTypeField objects to detect out of order field references + within initializers. This way we can be sure that result of binding performed by SemanticModel is consistent + with result of initial binding of the entire node. + - AnonymousTypeCreationBinder overrides CreateAnonymousObjectCreationExpression in such a way that it mutates + its state. That overridden method shouldn't be called while we are binding each initializer (by queries, for example), + it should be called only by AnonymousTypeCreationBinder itself after all initializers are bound and we are producing + the resulting node. So having an extra binder in between takes care of that. + + + + + Gets but does not fully validate a symbol's attributes. Returns binding errors but not attribute usage and attribute specific errors. + + + + + Walk a custom attribute argument bound node and return a TypedConstant. Verify that the expression is a constant expression. + + + + + + This function must return a BoundConversion node in case of non-identity conversion. + + + + + This function must return a BoundConversion node in case of explicit or non-identity conversion. + + + + + This function must return a BoundConversion node in case of non-identity conversion. + + + + + Returns True if error or warning was reported. + + This function is invoked on the occasion of a Narrowing or NoConversion. + It looks at the conversion. If the conversion could have been helped by variance in + some way, it reports an error/warning message to that effect and returns true. This + message is a substitute for whatever other conversion-failed message might have been displayed. + + Note: these variance-related messages will NOT show auto-correct suggestion of using CType. That's + because, in these cases, it's more likely than not that CType will fail, so it would be a bad suggestion + + + + + Handle expression reclassification, if any applicable. + + If function returns True, the "argument" parameter has been replaced + with result of reclassification (possibly an error node) and appropriate + diagnostic, if any, has been reported. + + If function returns false, the "argument" parameter must be unchanged and no + diagnostic should be reported. + + conversionSemantics can be one of these: + SyntaxKind.CTypeKeyword, SyntaxKind.DirectCastKeyword, SyntaxKind.TryCastKeyword + + + + + Structure is used to store all information which is needed to construct and classify a Delegate creation + expression later on. + + + + + Binds the AddressOf expression. + + The AddressOf expression node. + The diagnostics. + + + + Binds the delegate creation expression. + This comes in form of e.g. + Dim del as new DelegateType(AddressOf methodName) + + Type of the delegate. + The argument list. + Syntax node to attach diagnostics to in case the argument list is nothing. + The diagnostics. + + + + Resolves the target method for the delegate and classifies the conversion + + The bound AddressOf expression itself. + The delegate type to assign the result of the AddressOf operator to. + + + + + Resolves the method for delegate invoke with all or relaxed arguments / return types. It also determines + the method conversion kind. + + The AddressOf expression. + The delegate invoke method. + Ignore method's return type for the purpose of calculating 'methodConversions'. + The diagnostics. + The resolved method if any. + + + + Resolves the method for delegate invoke with all or relaxed arguments / return types. It also determines + the method conversion kind. + + The AddressOf expression. + The delegate invoke method. + Ignore method's return type for the purpose of calculating 'methodConversions'. + The diagnostics. + if set to true use zero argument relaxation. + The resolved method if any. + + + + Determines the method conversion for delegates based on the arguments. + + The resolution result. + The delegate invoke method. + + + + Classifies the address of conversion. + + The bound AddressOf expression. + The target type to convert this AddressOf expression to. + + + + Checks if a parameter is a ParamArray and reports this as an error. + + The containing type. + The current parameter token. + The flags of this parameter. + The diagnostics. + + + + Reclassifies the bound address of operator into a delegate creation expression (if there is no delegate + relaxation required) or into a bound lambda expression (which gets a delegate creation expression later on) + + The AddressOf expression. + The delegate resolution result. + Type of the target. + The diagnostics. + + + + Build a lambda that has a shape of the [delegateInvoke] and calls + the only method from the [methodGroup] passing all parameters of the lambda + as arguments for the call. + Note, that usually the receiver of the [methodGroup] should be captured before entering the + relaxation lambda in order to prevent its reevaluation every time the lambda is invoked and + prevent its mutation. + + !!! Therefore, it is not common to call this overload directly. !!! + + + Location to use for various synthetic nodes and symbols. + The Invoke method to "implement". + The method group with the only method in it. + Delegate relaxation to store within the new BoundLambda node. + + + + + Report a diagnostic, and also produce an error expression with error type. + + + + + Report a diagnostic, and also produce an error expression with error type. + + + + + Report a diagnostic, and also produce an error expression with error type. + + + + + Report a diagnostic, and also produce an error expression with error type. + + + + + Report a diagnostic, and also produce an error expression with error type. + + + + + The dispatcher method that handles syntax nodes for all stand-alone expressions. + + + + + Create a BoundBadExpression node for the given syntax node. No symbols or bound nodes are associated with it. + + + + + Create a BoundBadExpression node for the given child-expression, which is preserved as a sub-expression. + No ResultKind is associated + + + + + Create a BoundBadExpression node for the given child-expression, which is preserved as a sub-expression. + A ResultKind explains why the node is bad. + + + + + Create a BoundBadExpression node for the given child expression, which is preserved as a sub-expression. Symbols + associated with the child node are not given a result kind. + + + + + Removes duplicate entries in and frees it if only nulls remain. + + + + + Returns the type to be used as a field type. + + + + + This function is only needed for SemanticModel to perform binding for erroneous cases. + + + + + BindValue evaluates the node and returns a BoundExpression. BindValue snaps expressions to values. For now that means that method groups + become invocations. + + + + + Adjusts receiver of a call or a member access. + * will turn Unknown property access into Get property access + * will turn TypeOrValueExpression into a value expression + + + + + Adjusts receiver of a call or a member access if the receiver is an + ambiguous BoundTypeOrValueExpression. This can only happen if the + receiver is the LHS of a member access expression in which the + RHS cannot be resolved (i.e. the RHS is an error or a late-bound + invocation/access). + + + + + Adjusts receiver of a call or a member access if it is a value + * will turn Unknown property access into Get property access + + + + + BindRValue evaluates the node and returns a BoundExpression. + It ensures that the expression is a value that can be used on the right hand side of an assignment. + If not, it reports an error. + + Note that this function will reclassify all expressions to have their "default" type, i.e. + Anonymous Delegate for a lambda, default array type for an array literal, will report an error + for an AddressOf, etc. So, if you are in a context where there is a known target type for the + expression, do not use this function. Instead, use BindValue followed by + ApplyImplicitConversion/ApplyConversion. + + + + + Determine whether field access should be treated as LValue. + + + + + Return MethodKind corresponding to the method the code being interpreted is going to end up in. + + + + Process the result of dominant type inference, generate diagnostics + + + + True if inside in binding arguments of constructor + call with {'Me'/'MyClass'/'MyBase'}.New(...) from another constructor + + + + + Can we access MyBase in this location. If False is returned, + also returns the error id associated with that. + + + + + Can we access Me in this location. If False is returned, + also returns the error id associated with that. + + + + + Can we access MyClass in this location. If False is returned, + also returns the error id associated with that. + + + + + Second part of BindSimpleName. + It is a separate function so that it could be called directly + when we have already looked up for the name. + + + + + Method binds member access in case when we got hold + of a bound node representing the left expression + + + The method is protected, so that it can be called from other + binders overriding TryBindMemberAccessWithLeftOmitted + + + + + Returns a bound node for left part of member access node with omitted left syntax. + In particular it handles member access inside With statement. + + By default the method delegates the work to it's containing binder or returns Nothing. + + + Specifies the binder which requests an access to the bound node for omitted left. + + + NOTE: in some cases, like for binding inside anonymous object creation expression, this + method returns bound node for the whole expression rather than only for omitted left part. + + + + + Given a localSymbol and a syntaxNode where the symbol is used, safely return the symbol's type. + + The local symbol + The syntax node that references the symbol + diagnostic bag if errors are to be reported + Returns the symbol's type or an ErrorTypeSymbol if the local is referenced before its definition or if the symbol is still being bound. + This method safely returns a local symbol's type by checking for circular references or references before declaration. + + + + Report diagnostics relating to access shared/nonshared symbols. Returns true if an ERROR (but not a warning) + was reported. Also replaces receiver as a type with DefaultPropertyInstance when appropriate. + + + + + Returns a bound node for left part of dictionary access node with omitted left syntax. + In particular it handles dictionary access inside With statement. + + By default the method delegates the work to it's containing binder or returns Nothing. + + + + + Handle ArrayCreationExpressionSyntax + new integer(n)(,) {...} + new integer() {...} + + + + + Binds CollectionInitializeSyntax. i.e. { expr, ... } from an ArrayCreationExpressionSyntax + + The collection initializer syntax + The type of array. + This is in/out. It comes in with sizes from explicit bounds but will be updated based on the number of initializers for dimensions without bounds + Where to put errors + + + + Binds CollectionInitializeSyntax. i.e. { expr, ... } from an ArrayCreationExpressionSyntax + + The collection initializer syntax + This is in/out. It comes in with sizes from explicit bounds but will be updated based on the number of initializers for dimensions without bounds + When the inferred type is Object() indicates that the dominant type algorithm computed this type. + The number of candidates found during inference + The inferred element type + Where to put errors + + + + Bind the array bounds and return the sizes for each dimension. + + The bounds + Where to put the errors + The bounds if they are constants, if argument is not specified this info is not returned + + + + The Imports binder handles binding of Imports statements in files, and also the project-level imports. + + + + + Checks use site error and returns True in case it should be reported for the alias. + In current implementation checks for errors #36924 and #36925 + + + + + Used to store the bound field and property initializers and the associated list of + bound assignment statements because they are reused for multiple constructors + + + + + Indicate the fact that binding of initializers produced a tree with errors. + This property does not indicate whether or not a diagnostic was produced during the + binding of the initializers. + + + + + Binds all field initializers of a . + + The named type symbol where the field initializers are declared. + Script initializer or Nothing if not binding top-level statements. + The initializers itself. For each partial type declaration there is an array of + field initializers + The diagnostics. + + + + Bind an initializer for an implicitly allocated array field (for example: Private F(2) As Object). + + + + + Binds the field initializer. A bound field initializer contains the bound field access and bound init value. + + The field symbol. + The syntax node for the optional initialization. + The array of bound initializers to add the newly bound ones to. + The diagnostics. + + + + Checks for errors in the constant initialization of a field, and only returns a BoundFieldOrPropertyInitializer for + decimals and dates because they aren't compile time constant in CLR. Other data type end up directly in metadata and + do not cause a BoundFieldOrPropertyInitializer node. + + The field symbol. + The syntax node for the optional initialization. + The array of bound initializers to add the newly bound ones to. + + + + Binds constant initialization value of the field. + + The symbol. + The initialization syntax. + The diagnostics. + + + + Binds a constant local's value. + + The local symbol. + The local symbol's type. It is passed in because this method is called while the type is being resolved and before it is set. + + + + Binds a parameter's default value syntax + + + + + Returns if all the rules for a "Me.New" or "MyBase.New" constructor call are satisfied: + a) In instance constructor body + b) First statement of that constructor + c) "Me", "MyClass", or "MyBase" is the receiver. + + + + + Bind a Me.New(...), MyBase.New (...), MyClass.New(...) constructor call. + (NOT a normal constructor call like New Type(...)). + + + + + Bind an invocation expression representing an array access, + delegate invocation, or default member. + + + + + Returns a BoundPropertyGroup if the expression represents a valid + default property access. If there is a default property but the property + access is invalid, a BoundBadExpression is returned. If there is no + default property for the expression type, Nothing is returned. + + Note, that default Query Indexer may be a method, not a property. + + + + + Tests whether or not the method or property group should be bound without arguments. + In case of method group it may also update the group by filtering out all subs + + + + + Optimizes some runtime library calls through replacing them with a literal if possible. + VB Spec 11.2 defines the following runtime functions as being constant: + - Microsoft.VisualBasic.Strings.ChrW + - Microsoft.VisualBasic.Strings.Chr, if the constant value is between 0 and 128 + - Microsoft.VisualBasic.Strings.AscW, if the constant string is not empty + - Microsoft.VisualBasic.Strings.Asc, if the constant string is not empty + + The method. + The arguments of the method call. + The syntax node for report errors. + The diagnostics. + Set to true if there are conversion errors (e.g. Asc("")). Otherwise it's not written to. + The constant value that replaces this node, or nothing. + + + +Figure out the set of best candidates in the following preference order: + 1) Applicable + 2) ArgumentMismatch, GenericConstraintsViolated + 3) TypeInferenceFailed + 4) ArgumentCountMismatch + 5) BadGenericArity + 6) Ambiguous + 7) HasUseSiteError + 8) HasUnsupportedMetadata + + Also return the set of unique symbols behind the set. + + Returns type symbol for the common type, if any. + Otherwise returns ErrorTypeSymbol.UnknownResultType. + + + + + Should be kept in sync with OverloadResolution.MatchArguments. Anything that + OverloadResolution.MatchArguments flags as an error should be detected by + this function as well. + + + + + Should be in sync with OverloadResolution.MatchArgumentToByRefParameter + + + + + Should be in sync with OverloadResolution.MatchArgumentToByValParameter. + + + + + Should be kept in sync with OverloadResolution.MatchArguments, which populates + data this function operates on. + + + + + Return true if the node is an immediate child of a call statement. + + + + + If we are inside a lambda in a constructor and are passing ByRef a non-LValue field, which + would be an LValue field, if it were referred to in the constructor outside of a lambda, + we need to report an error because the operation will result in a simulated pass by + ref (through a temp, without a copy back), which might be not the intent. + + + + + Collects expressions that are effective return values of the lambda body. + In iterators those would be arguments of Yield statements. + + + + + Used by Add*LookupSymbolsInfo* to determine whether the symbol is of interest. + Distinguish from , which performs an analogous task for LookupSymbols*. + + + Does not consider - that is left to the caller. + + + + + This class handles binding of members of namespaces and types. + The key member is Lookup, which handles looking up a name + in a namespace or type, by name and arity, and produces a + lookup result. + + + + + Lookup a member name in a namespace or type, returning a LookupResult that + summarizes the results of the lookup. See LookupResult structure for a detailed + discussing of the meaning of the results. The supplied binder is used for accessibility + checked and base class suppression. + + + + + Lookup a member name in a namespace, returning a LookupResult that + summarizes the results of the lookup. See LookupResult structure for a detailed + discussing of the meaning of the results. The supplied binder is used for accessibility + checked and base class suppression. + + + + + Lookup an immediate (without descending into modules) member name in a namespace, + returning a LookupResult that summarizes the results of the lookup. + See LookupResult structure for a detailed discussion of the meaning of the results. + The supplied binder is used for accessibility checks and base class suppression. + + + + + Lookup a member name in modules of a namespace, + returning a LookupResult that summarizes the results of the lookup. + See LookupResult structure for a detailed discussion of the meaning of the results. + The supplied binder is used for accessibility checks and base class suppression. + + + + + Lookup a member name in a type, returning a LookupResult that + summarizes the results of the lookup. See LookupResult structure for a detailed + discussing of the meaning of the results. The supplied binder is used for accessibility + checked and base class suppression. + + + + + Lookup a member name in a module, class, struct, enum, or delegate, returning a LookupResult that + summarizes the results of the lookup. See LookupResult structure for a detailed + discussing of the meaning of the results. The supplied binder is used for accessibility + checks and base class suppression. + + + + + This function generalizes the idea of producing a set of non-conflicting + WinRT members of a given type based on the results of some arbitrary lookup + closure (which produces a LookupResult signifying success as IsGood). + + A non-conflicting WinRT member lookup looks for all members of projected + WinRT interfaces which are implemented by a given type, discarding any + which have equal signatures. + + If is true then + this function lookups up members with the given , + , and . Otherwise, it looks for default properties. + + + + + Lookup a member name in a submission chain. + + + We start with the current submission class and walk the submission chain back to the first submission. + The search has two phases + 1) We are looking for any symbol matching the given name, arity, and options. If we don't find any the search is over. + If we find an overloadable symbol(s) (a method or a property) we start looking for overloads of this kind + (lookingForOverloadsOfKind) of symbol in phase 2. + 2) If a visited submission contains a matching member of a kind different from lookingForOverloadsOfKind we stop + looking further. Otherwise, if we find viable overload(s) we add them into the result. Overloads modifier is ignored. + + + + + Include the InternalXmlHelper.Value extension property in the LookupResult + if the container implements IEnumerable(Of XElement), the name is "Value", + and the arity is 0. + + + + + Checks if two interfaces have a base-derived relationship + + + + + Merges two lookup results while eliminating symbols that are shadowed. + Note that the final result may contain unrelated and possibly conflicting symbols as + this helper is not intended to catch ambiguities. + + + If is not Nothing and False filters out all Event symbols, and if is not Nothing + and True filters out all non-Event symbols, nos not have any effect otherwise. + Is used for special handling of Events inside COM interfaces. + + + + + first.Where(t IsNot Nothing).Concat(second.Where(t IsNot Nothing)) + + + + + + + + + + if any symbol in the list Shadows. This implies that name is not visible through the base. + + + + + Lookup a member name in a type without considering inheritance, returning a LookupResult that + summarizes the results of the lookup. See LookupResult structure for a detailed + discussing of the meaning of the results. + + + + + Binds the object collection or member initializer from a object creation. + E.g. "new CollType() From {...}" or "new AType() With {...}" + + The type of the created object expression. + The object creation expression syntax. + The diagnostics. + + + + Bind the ObjectInitializer. + During the binding we basically bind the member access for each initializer, as well as the value that will be assigned. + The main information stored in the bound node is a list of assignment operators (that may contain placeholders), as + well as the information whether expression creates a temporary or not. + + + + + Binds a object collection initializer. + During the binding of this node we are binding calls to Add methods of the created object. Once the "collection" + type passed the requirements (same as for each collection requirements + must have accessible Add method), all + diagnostics are handled by the overload resolution. + The bound node contains a list of call expressions (that may contain placeholders). + + + + + Binds a call expression for a given top level object collection initializer. + + + + + Validate and apply appropriate conversion for the target argument of Is/IsNot expression. + + + + + This helper is used to wrap nullable argument into something that would return null string if argument is null. + + Unlike conversion to a string where nullable nulls result in an exception, + concatenation requires that nullable nulls are treated as null strings. + Note that conversion is treated as explicit conversion. + + + + + This function builds a bound tree representing an overloaded short circuiting expression + after determining that the necessary semantic conditions are met. + + An expression of the form: + + x AndAlso y (where the type of x is X and the type of y is Y) + + is an overloaded short circuit operation if X and Y are user-defined types and an + applicable operator And exists after applying normal operator resolution rules. + + Given an applicable And operator declared in type T, the following must be true: + + - The return type and parameter types must be T. + - T must contain a declaration of operator IsFalse. + + If these conditions are met, the expression "x AndAlso y" is translated into: + + !T.IsFalse(temp = x) ? T.And(temp, y) : temp + + The temporary is necessary for evaluating x only once. Similarly, "x OrElse y" is + translated into: + + !T.IsTrue(temp = x) ? T.Or(temp, y) : temp + + + + + Returns Symbol for String type. + + + + + Get symbol for a special type, reuse symbols for operand types to avoid type + lookups and construction of new instances of symbols. + + + + + Get symbol for a Nullable type of particular type, reuse symbols for operand types to avoid type + lookups and construction of new instances of symbols. + + + + + §11.12.2 Object Operands + The value Nothing is treated as the default value of the type of + the other operand in a binary operator expression. In a unary operator expression, + or if both operands are Nothing in a binary operator expression, + the type of the operation is Integer or the only result type of the operator, + if the operator does not result in Integer. + + + + + Bind a Query Expression. + This is the entry point. + + + + + Given a result of binding of initial set of collection range variables, the source, + bind the rest of the operators in the enumerator. + + There is a special method to bind an operator of each kind, the common thing among them is that + all of them take the result we have so far, the source, and return result of an application + of one or two following operators. + Some of the methods also take operators enumerator in order to be able to do a necessary look-ahead + and in some cases even to advance the enumerator themselves. + Join and From operators absorb following Select or Let, that is when the process of binding of + a single operator actually handles two and advances the enumerator. + + + + + Bind query expression that starts with From keyword, as opposed to the one that starts with Aggregate. + + From {collection range variables} [{other operators}] + + + + + Bind query expression that starts with Aggregate keyword, as opposed to the one that starts with From. + + Aggregate {collection range variables} [{other operators}] Into {aggregation range variables} + + If Into clause has one item, a single value is produced. If it has multiple items, values are + combined into an instance of an Anonymous Type. + + + + + Given result of binding preceding query operators, the source, bind the following Aggregate operator. + + {Preceding query operators} Aggregate {collection range variables} [{other operators}] Into {aggregation range variables} + + Depending on how many items we have in the INTO clause, + we will interpret Aggregate operator as follows: + + FROM a in AA FROM a in AA + AGGREGATE b in a.BB => LET count = (FROM b IN a.BB).Count() + INTO Count() + + FROM a in AA FROM a in AA + AGGREGATE b in a.BB => LET Group = (FROM b IN a.BB) + INTO Count(), Select a, Count=Group.Count(), Sum=Group.Sum(b=>b) + Sum(b) + + + + + + Apply implicit Select operator at the end of the query to + ensure that at least one query operator is called. + + Basically makes query like: + From a In AA + into: + From a In AA Select a + + + + + Given result of binding preceding query operators, the source, bind the following Select operator. + + {Preceding query operators} Select {expression range variables} + + From a In AA Select b ==> AA.Select(Function(a) b) + + From a In AA Select b, c ==> AA.Select(Function(a) New With {b, c}) + + + + + Given result of binding preceding query operators, the source, bind the following Let operator. + + {Preceding query operators} Let {expression range variables} + + Ex: From a In AA Let b ==> AA.Select(Function(a) New With {a, b}) + + Ex: From a In AA Let b, c ==> AA.Select(Function(a) New With {a, b}).Select(Function({a, b}) New With {a, b, c}) + + Note, that preceding Select operator can introduce unnamed range variable, which is dropped by the Let + + Ex: From a In AA Select a + 1 Let b ==> AA.Select(Function(a) a + 1).Select(Function(unnamed) b) + + Also, depending on the amount of expression range variables declared by the Let, and the following query operators, + translation can produce a nested, as opposed to flat, compound variable. + + Ex: From a In AA Let b, c, d ==> AA.Select(Function(a) New With {a, b}). + Select(Function({a, b}) New With {{a, b}, c}). + Select(Function({{a, b}, c}) New With {a, b, c, d}) + + + + + In some scenarios, it is safe to leave compound variable in nested form when there is an + operator down the road that does its own projection (Select, Group By, ...). + All following operators have to take an Anonymous Type in both cases and, since there is no way to + restrict the shape of the Anonymous Type in method's declaration, the operators should be + insensitive to the shape of the Anonymous Type. + + + + + In some scenarios, it is safe to leave compound variable in nested form when there is an + operator down the road that does its own projection (Select, Group By, ...). + All following operators have to take an Anonymous Type in both cases and, since there is no way to + restrict the shape of the Anonymous Type in method's declaration, the operators should be + insensitive to the shape of the Anonymous Type. + + + + + Given result of binding preceding query operators, if any, bind the following From operator. + + [{Preceding query operators}] From {collection range variables} + + Ex: From a In AA ==> AA + + Ex: From a In AA, b in BB ==> AA.SelectMany(Function(a) BB, Function(a, b) New With {a, b}) + + Ex: {source with range variable 'd'} From a In AA, b in BB ==> source.SelectMany(Function(d) AA, Function(d, a) New With {d, a}). + SelectMany(Function({d, a}) BB, + Function({d, a}, b) New With {d, a, b}) + + Note, that preceding Select operator can introduce unnamed range variable, which is dropped by the From + + Ex: From a In AA Select a + 1 From b in BB ==> AA.Select(Function(a) a + 1). + SelectMany(Function(unnamed) BB, + Function(unnamed, b) b) + + Also, depending on the amount of collection range variables declared by the From, and the following query operators, + translation can produce a nested, as opposed to flat, compound variable. + + Ex: From a In AA From b In BB, c In CC, d In DD ==> AA.SelectMany(Function(a) BB, Function(a, b) New With {a, b}). + SelectMany(Function({a, b}) CC, Function({a, b}, c) New With {{a, b}, c}). + SelectMany(Function({{a, b}, c}) DD, + Function({{a, b}, c}, d) New With {a, b, c, d}) + + If From operator translation results in a SelectMany call and the From is immediately followed by a Select or a Let operator, + they are absorbed by the From translation. When this happens, operatorsEnumerator is advanced appropriately. + + Ex: From a In AA From b In BB Select a + b ==> AA.SelectMany(Function(a) BB, Function(a, b) a + b) + + Ex: From a In AA From b In BB Let c ==> AA.SelectMany(Function(a) BB, Function(a, b) new With {a, b, c}) + + + + + + See comments for BindFromClause method, this method actually does all the work. + + + + + Given result of binding preceding query operators, the outer, bind the following Join operator. + + [{Preceding query operators}] Join {collection range variable} + [{additional joins}] + On {condition} + + Ex: From a In AA Join b in BB On Key(a) Equals Key(b) ==> AA.Join(BB, Function(a) Key(a), Function(b) Key(b), + Function(a, b) New With {a, b}) + + Ex: From a In AA AA.Join( + Join b in BB BB.Join(CC, Function(b) Key(b), Function(c) Key(c), + Join c in CC ==> Function(b, c) New With {b, c}), + On Key(c) Equals Key(b) Function(a) Key(a), Function({b, c}) Key(b), + On Key(a) Equals Key(b) Function(a, {b, c}) New With {a, b, c}) + + + Also, depending on the amount of collection range variables in scope, and the following query operators, + translation can produce a nested, as opposed to flat, compound variable. + + Ex: From a In AA AA.Join(BB, Function(a) Key(a), Function(b) Key(b), + Join b in BB Function(a, b) New With {a, b}). + On Key(a) Equals Key(b) Join(CC, Function({a, b}) Key(a, b), Function(c) Key(c), + Join c in CC ==> Function({a, b}, c) New With {{a, b}, c}). + On Key(c) Equals Key(a, b) Join(DD, Function({{a, b}, c}) Key(a, b, c), Function(d) Key(d), + Join d in DD Function({{a, b}, c}, d) New With {a, b, c, d}) + On Key(a, b, c) Equals Key(d) + + If Join is immediately followed by a Select or a Let operator, they are absorbed by the translation. + When this happens, operatorsEnumerator is advanced appropriately. + + Ex: From a In AA Join b in BB On Key(a) Equals Key(b) ==> AA.Join(BB, Function(a) Key(a), Function(b) Key(b), + Select a + b Function(a, b) a + b) + + Ex: From a In AA Join b in BB On Key(a) Equals Key(b) ==> AA.Join(BB, Function(a) Key(a), Function(b) Key(b), + Let c Function(a, b) New With {a, b, c}) + + + + + + Given result of binding preceding query operators, the outer, bind the following Group Join operator. + + [{Preceding query operators}] Group Join {collection range variable} + [{additional joins}] + On {condition} + Into {aggregation range variables} + + Ex: From a In AA Group Join b in BB AA.GroupJoin(BB, Function(a) Key(a), Function(b) Key(b), + On Key(a) Equals Key(b) ==> Function(a, group_b) New With {a, group_b.Count()}) + Into Count() + + Also, depending on the amount of collection range variables in scope, and the following query operators, + translation can produce a nested, as opposed to flat, compound variable (see BindInnerJoinClause for an example). + + Note, that type of the group must be inferred from the set of available GroupJoin operators in order to be able to + interpret the aggregation range variables. + + + + + Given result of binding preceding query operators, the source, bind the following Group By operator. + + [{Preceding query operators}] Group [{items expression range variables}] + By {keys expression range variables} + Into {aggregation range variables} + + Ex: From a In AA Group By Key(a) AA.GroupBy(Function(a) Key(a), + Into Count() ==> Function(key, group_a) New With {key, group_a.Count()}) + + Ex: From a In AA Group Item(a) AA.GroupBy(Function(a) Key(a), + By Key(a) ==> Function(a) Item(a), + Into Count() Function(key, group_a) New With {key, group_a.Count()}) + + Note, that type of the group must be inferred from the set of available GroupBy operators in order to be able to + interpret the aggregation range variables. + + + + + Returns Nothing if items were omitted. + + + + + Infer type of the group for a Group By operator from the set of available GroupBy methods. + + In short, given already bound itemsLambda and keysLambda, this method performs overload + resolution over the set of available GroupBy operator methods using fake Into lambda: + Function(key, group As typeToBeInferred) New With {group} + + If resolution succeeds, the type inferred for the best candidate is our result. + + + + + Infer type of the group for a Group Join operator from the set of available GroupJoin methods. + + In short, given already bound inner source and the join key lambdas, this method performs overload + resolution over the set of available GroupJoin operator methods using fake Into lambda: + Function(outerVar, group As typeToBeInferred) New With {group} + + If resolution succeeds, the type inferred for the best candidate is our result. + + + + + This is a helper method to create a BoundQueryLambda for an Into clause + of a Group By or a Group Join operator. + + + + + Given result of binding preceding query operators, the source, bind the following Where operator. + + {Preceding query operators} Where {expression} + + Ex: From a In AA Where a > 0 ==> AA.Where(Function(a) a > b) + + + + + + Given result of binding preceding query operators, the source, bind the following Skip While operator. + + {Preceding query operators} Skip While {expression} + + Ex: From a In AA Skip While a > 0 ==> AA.SkipWhile(Function(a) a > b) + + + + + + Given result of binding preceding query operators, the source, bind the following Take While operator. + + {Preceding query operators} Take While {expression} + + Ex: From a In AA Skip While a > 0 ==> AA.TakeWhile(Function(a) a > b) + + + + + + This helper method does all the work to bind Where, Take While and Skip While query operators. + + + + + Given result of binding preceding query operators, the source, bind the following Distinct operator. + + {Preceding query operators} Distinct + + Ex: From a In AA Distinct ==> AA.Distinct() + + + + + + Given result of binding preceding query operators, the source, bind the following Skip operator. + + {Preceding query operators} Skip {expression} + + Ex: From a In AA Skip 10 ==> AA.Skip(10) + + + + + + Given result of binding preceding query operators, the source, bind the following Take operator. + + {Preceding query operators} Take {expression} + + Ex: From a In AA Take 10 ==> AA.Take(10) + + + + + + This helper method does all the work to bind Take and Skip query operators. + + + + + Given result of binding preceding query operators, the source, bind the following Order By operator. + + {Preceding query operators} Order By {orderings} + + Ex: From a In AA Order By a ==> AA.OrderBy(Function(a) a) + + Ex: From a In AA Order By a.Key1, a.Key2 Descending ==> AA.OrderBy(Function(a) a.Key1).ThenByDescending(Function(a) a.Key2) + + + + + + This is a top level binder used to bind bodies of query lambdas. + It also contains a bunch of helper methods to bind bodies of a particular kind. + + + + + Bind body of a lambda representing Select operator selector in context of this binder. + + + + + Bind Select like selector based on the set of expression range variables in context of this binder. + + + + + Bind ExpressionRangeVariableSyntax in context of this binder. + + + + + Bind Let operator selector for a particular ExpressionRangeVariableSyntax. + Takes care of "carrying over" of previously declared range variables as well as introduction of the new one. + + + + + Bind body of a lambda representing first Select operator selector for an aggregate clause in context of this binder. + + + + + Bind Join/From selector that absorbs following Select/Let in context of this binder. + + + + + Bind Join/Let like and mixed selector in context of this binder. + + Join like selector: Function(a, b) New With {a, b} + + Let like selector: Function(a) New With {a, letExpressionRangeVariable} + + Mixed selector: Function(a, b) New With {a, b, letExpressionRangeVariable} + + + + + Bind key selectors for a Join/Group Join operator. + + + + + Helper visitor to determine what join sides are referenced by an expression. + + + + + Helper visitor to report query specific errors for an operand of an Equals expression. + + + + + Knows how to bind FunctionAggregationSyntax and GroupAggregationSyntax + within particular [Into] clause. + + Also implements Lookup/LookupNames methods to make sure that lookup without + container type, uses type of the group as the container type. + + + + + Given aggregationVariables, bind Into selector in context of this binder. + + + + + Bind AggregationRangeVariableSyntax in context of this binder. + + + + + Same as IntoClauseBinder, but disallows references to GroupAggregationSyntax. + + + + + Bind CollectionRangeVariableSyntax, applying AsQueryable/AsEnumerable/Cast(Of Object) calls and + Select with implicit type conversion as appropriate. + + + + + Apply "conversion" to the source based on the target AsClause Type of the CollectionRangeVariableSyntax. + Returns implicit BoundQueryClause or the source, in case of an early failure. + + + + + Convert source expression to queryable type by inferring control variable type + and applying AsQueryable/AsEnumerable or Cast(Of Object) calls. + + In case of success, returns possibly "converted" source and non-Nothing controlVariableType. + In case of failure, returns passed in source and Nothing as controlVariableType. + + + + + Given query operator source, infer control variable type from available + 'Select' methods. + + Returns inferred type or Nothing. + + + + + Given a set of 'Select' methods, infer control variable type. + + Returns inferred type or Nothing. + + + + + Given a method, infer control variable type. + + Returns inferred type or Nothing. + + + + + Return method group or Nothing in case nothing was found. + Note, returned group might have ResultKind = "Inaccessible". + + + + + [methodGroup] can be Nothing if lookup didn't find anything. + + + + + The dispatcher method that handles syntax nodes for all stand-alone statements. + + + + + Check presence of [On Error]/[Resume] statements and report diagnostics based on presence of other + "incompatible" statements. + Report Async/Await diagnostics, which depends on surrounding context. + + + + Defines max allowed rank of the array + Currently set to 32 because of COM+ array type limits + + + + Decodes a set of local declaration modifier flags and reports any errors with the flags. + + The syntax list of the modifiers. + returns True if any errors are reported + + + + Compute the type of a local symbol using the type character, as clause and equals value expression. + 1. Try to compute the type based on the identifier/modified identifier and as clause. If there is a type then we're done. + 2. If OptionInfer is on then evaluate the expression and use that to infer the type. + + ComputeVariableType will only bind the value if the symbol does not have an explicit type. + + The local symbol + The symbols modified identifier is there is one + The optional as clause + The optional initializing expression + The bound initializing expression + The bound as clause type + + + + Infer the type of a for-from-to control variable. + + + + + Infer the type of a for-each control variable. + + + + + Infer the type of a variable declared with an initializing expression. + + + + + Verifies that declaration of a local symbol does not cause name clashes. + + + + + Should be called on the binder, at which the check should begin. + + + + + Binds a list of statements and puts in a scope. + + + + + Binds a list of statements and puts in a scope. + + + + + Binds all the common part for ForTo and ForEach loops except the loop body and the next variables. + + The node. + The control variable syntax. + The declared or inferred local symbol. + The control variable. + The diagnostics. + true if there were errors; otherwise false + + + + Binds loop body and the next variables for ForTo and ForEach loops. + + + The binding of the loop body and the next variables cannot happen before the local type inference has + completed, which happens in the specialized binding functions for foreach and for loops. Otherwise we would + loose the diagnostics from the type inference. + + The loop body. + The next variables. + + + + Can return Nothing in case of failure. + + + + + Verifies for control variable declaration and outputs diagnostics as needed. + + The variable declarator. + The diagnostics. + + + + This function tries to bind the given controlVariableSyntax. + If it was an identifier of a valid target, the bound node is written to controlVariable and true is returned. + If something else was bound, that is not legal as a control variable (e.g. a property), a BoundBadNode is written + to controlVariable and false is returned. + If nothing declared was found, false is returned and controlVariable is set to nothing. In this case it's safe to + create a new local for the loop node. + + + + + If the control variable was bound to a non bad expression, this function checks if the + bound expression is a variable and reports diagnostics appropriately. + It reports the errors from 10.9.3 2.2 + + The control variable. + The diagnostics. + + + + Verifies that the collection is either a string, and array or matches the design pattern criteria and reports + diagnostics appropriately. + + The collection of the for each statement. + If the collection meets all criteria, currentType contains the type of the element from + the collection that get's returned by the current property. + Element type of the collection, could be different from . + For example, based on the pattern for an array is Object, but the + is the element type of the array. + if set to true, the collection is enumerable (matches design pattern, IEnumerable + or IEnumerable(Of T); otherwise (string or arrays) it's set to false. + The diagnostics. + The collection which might have been converted to IEnumerable or IEnumerable(Of T) if needed. + + + + Checks if the type of the collection matches the for each collection design pattern. + + + The rules are that the collection type must have an accessible GetEnumerator method that takes no parameters and + returns a type that has both: + - an accessible MoveNext method that takes no parameters and returns a Boolean + - an accessible Current property that takes no parameters and is not WriteOnly + + NOTE: this function ONLY checks for a function named "GetEnumerator" with the appropriate properties. + In the spec $10.9 it has these conditions: a type C is a "collection type" if one of + (1) it satisfies MatchesForEachCollectionDesignPattern (i.e. has a method named GetEnumerator() which + returns a type with MoveNext/Current); or + (2) it implements System.Collections.Generic.IEnumerable(Of T); or + (3) it implements System.Collections.IEnumerable. + + This function ONLY checks for part (1). Callers are expected to check for (2)/(3) themselves. The + scenario where something satisfies (2/3) but not (1) is + Class C + Implements IEnumerable + Function g1() as IEnumerator implements IEnumerable.GetEnumerator : End Function + + Clearly this class does not have a method _named_ GetEnumerator, but it does implement IEnumerable. + + The type of the for each collection. + The bound collection expression. + Return type of the property named "Current" if found. + A bound call to GetEnumerator on the collection if found. + A bound placeholder value for the collection local if GetEnumerator + was bound successful + A bound call to MoveNext on the instance returned by GetEnumerator if found. + A bound property access for "Current" on the instance returned by GetEnumerator if found. + A placeholder for the collection expression. + An empty diagnostic bag to capture diagnostics that have to be reported if the + collection matches the design pattern and that can be used instead of the generic error message in case non of the + for each collection criteria match. + If all required methods have been successfully looked up and bound, true is being returned; otherwise false. + + + + + Creates a BoundCall or BoundPropertyAccess from a MethodOrPropertyGroup. + + + This is not a general purpose helper! + + The syntax node. + The method or property group. + The diagnostics. + + + + Checks if a given symbol is a function that takes no parameters. + + + + + Checks if a given symbol is a property that is readable. + + + + + Returns the lookup result if at least one found symbol matches the requirements that are verified + by using the given symbolChecker. Extension methods will be considered in this check. + + The name of the method or property to look for. + The container to look in. + The symbol checker which performs additional checks. + + + + Determines whether derivedType is, inherits from or implements the given interface. + + The possible derived type. + Type of the interface. + + A list of matching interfaces. + + true if derivedType is, inherits from or implements the interface; otherwise, false. + + + + + Initially binding using blocks. + A Using statement names a resource that is supposed to be disposed on completion. + The resource can be an expression or a list of local variables with initializers. + the type of the resource must implement System.IDispose + A using statement of the form: + using Expression + list_of_statements + end using + + when the resource is a using locally declared variable no temporary is generated but the variable is read-only + A using statement of the form: + using v as new myDispose + list_of_statements + end using + It is also possible to use multiple variable resources: + using v1 as new myDispose, v2 as myDispose = new myDispose() + list_of_statements + end using + + + + Check the given type of and report WRN_MutableGenericStructureInUsing if needed. + This function should only be called for a type of a using variable. + + + + Binds a sync lock block. + A SyncLock come in the following form: + + SyncLock <expression> + <body> + End SyncLock + + The node. + The diagnostics. + + + + Bind a type name using the given binder. Returns a type symbol if the binding bound to something, + or an error symbol if the binding failed. In either case, errors may be reported via the + context. For example, if an inaccessible type or type with the wrong arity was found, the best possible + type is returned, but an error is also generated. + + The syntax to bind. + Place to put diagnostics. If no reasonable type was found, an undefined type + diagnostic is placed in here. Other diagnostics (both related to the type being bound, or + type arguments thereof) can be placed here also. + The best type that can be found, or and ErrorTypeSymbol if no reasonable type can be found. + + + + Bind a type or namespace using the given binder. + + The syntax to bind. + The best type or namespace that can be found, or and ErrorTypeSymbol if no reasonable type can be found. + + + + Apply generic type arguments, returning the constructed type. Produces errors for constraints + that aren't validated. If the wrong number of type arguments are supplied, the set of types + is silently truncated or extended with the type parameters. + + The type to construct from + The types to apply + The place to report errors for the generic type as a whole + The place to report errors for each generic type argument. + The diagnostics collection. + The constructed generic type. + + + + The type binder class handles binding of type names. + + + + + Bind a type name using the given binder. Returns a type symbol if the binding bound + to something, or an error symbol if the binding failed. In either case, errors may + be reported via the context. For example, if an inaccessible type or type with the + wrong arity was found, the best possible type is returned, but an error is also + generated. + + The syntax to bind. + The binder to bind within. This binder is used for looking up + unqualified names, accessibility checking, reporting errors, and probably other + stuff too. + The best type that can be found, or and ErrorTypeSymbol if no reasonable type can be found. + + + + If lookup failed for a qualified name, we don't know which part of the lookup failed. Therefore, we have + to check for a type forwarder for each prefix of the name. + + Starting assembly. + Full name of type that failed lookup. Shortened as different prefixes are checked. + GetBaseNamesForDiagnostic(typeSyntax) (basically dot-delimited list of names). Shortened as different prefixes are checked. + Set if some prefix matches a forwarded type. + Diagnostics bag (Nothing if errors should not be reported). + + + + Look for a type forwarder for the given type in the containing assembly and any referenced assemblies. + If one is found, search again in the target assembly. Return the last assembly in the chain. + + The assembly in which to look for the type forwarder. + The metadata name of the (potentially) forwarded type, including the arity (if non-zero). + The arity of the forwarded type. + The syntax to report types on (if any). + The diagnostics bag (Nothing if errors should not be reported). + + + Since this method is intended to be used for error reporting, it stops as soon as it finds + any type forwarder (or an error to report). It does not check other assemblies for consistency or better results. + + NOTE: unlike in C#, this method searches for type forwarders case-insensitively. + + + + + Bind a type or namespace using the given binder. + + The syntax to bind. + The binder to bind within. This binder is used for looking up + unqualified names, accessibility checking, reporting errors, and probably other stuff too. + The best type or namespace that can be found, or and ErrorTypeSymbol if no reasonable type can be found. + + + + Lookup a typeSyntax, confining the lookup to namespaces or types. Returns a LookupResult + that summarizes the results of the lookup, which might contain a Diagnostic associated with the lookup. + However, other diagnostics associated with parts of the binding process (i.e., binding type arguments) + will be emitted via the diagnostic bag. + + The LookupResult will always have at most one symbol in it, since types and namespaces are not overloadable symbols. + + + + + Check that the given symbol is a type. If it is a namespace, report an error into the diagnostic bag + and return an error symbol. + + + + + Bind a built in type name to the correct type symbol. + + + + + Bind array type syntax to the correct type symbol. + + + + + Bind Nullable (?) type syntax to the correct type symbol. + + + + + Bind a basic name to a type or namespace. + + + + + Bind a generic name to a type. + + + + + Bind a dotted name to a type or namespace. + + + + + Bind a generic dotted name to a type or namespace. + + + + + Bind to the global namespace. + + + + + Bind a list of type arguments to their types. + + + + + Given a type syntax, strip out ?, (), (of xxx) stuff and return a string of the form + x.y.z, for use in an error message. + + + + + If the identifier has a type character, report an error on it. + + + + + Given a list of keywords and a set of keywords kinds to search, return the first keyword + in the list, if any, that matches one of the keyword kinds. + + + + + Map syntax kind of a modifier keyword to SourceMemberFlags value + + + + + Decodes a set of modifier flags, reported any errors with the flags. + + The syntax list of the modifiers. + A bit-flag of the allowable modifiers. If a bit isn't set, an error occurs. + Error ID to report if a bad modifier is found. + The default accessibility. + Flags for the modifiers. + + + + Decode a list of parameter modifiers, and return the flags associated with it. + + + + + Create the Nullable version of a type. + + + + + Possible create the array version of type, given the element type and the array modifier syntax. + + + + + Possibly create the array version of type, given the element type and the array modifier syntax. + + + + + Create the array version of type, given the element type and the array modifier syntax. Throws if + there aren't any array modifiers and the result is not an array type. + + + + + Given an identifier and an As clause, return true if the identifier does not have a type + declared for it (e.g., no type character and no as clause). + + + + + Given an identifier and an As clause, return true if the identifier does not have a type + declared for it (e.g., no type character and no as clause). + + + + + Given an identifier, return true if the identifier declares an array. + (e.g., identifier specifies ()) + + + + + Flags to specify where the decoding of the modified identifier's type happens. + + + + + No context given (default). + + + + + Modified identifier appeared in a lambda declaration. + + + + + Modified identifier appeared in a local declaration. + + + + + Modified identifier appeared in a field declaration. + + + + + Modified identifier appeared in a parameter. + + + + + Modified identifier appeared in a query range variable declaration. + + + + + Combined flag to express that a modified identifier appeared in a local or field declaration. + + + + + Combined flag to express that a modified identifier appeared in a parameter of a lambda. + + + + + Given a modified identifier and a type, return the actual type to use. Applies the type character + and type modifiers to the given type. + + The modified identifier. + Bound type after the As or a type from the initializing value expression. Can be nothing if no type was supplied. + If specified then it is the syntax for the as clause and the type is the bound type from this syntax. + Delegate to get diagnostic info to generate if a required type is missing (Option Strict On/Custom) + The type, as modified by the type character, type modifiers. Uses Object as default if needed. + + + + + Given a modified identifier and a type syntax, return the actual type to use. Applies the type character + and type modifiers to the given type. + + The modified identifier. + As clause syntax. Can be nothing if no type was supplied. + Delegate to get diagnostic info to generate if a required type is missing (Option Strict On/Custom) + The type of the AsClauseOpt before applying any modifiers + The type, as modified by the type character, type modifiers. Uses Object as default if needed. + + + + Given a modified identifier and a type syntax, return the actual type to use. Applies the type character + and type modifiers to the given type. + + The modified identifier. + As clause syntax. Can be nothing if no type was supplied. + Delegate to get diagnostic info to generate if a required type is missing (Option Strict On/Custom) + The type, as modified by the type character, type modifiers. Uses Object as default if needed. + + + + Given a identifier and as clause syntax, return the actual type to use. Uses the type character or the type syntax. + + The identifier. + Syntax for optional as clause. Can be nothing if no type was supplied. + Delegate to get diagnostic info to generate if a required type is missing (Option Strict On/Custom) + The type, either from the type character or the as clause. Uses Object as default if needed. + + + + + Given a identifier and as clause syntax, return the actual type to use. Uses the type character or the type syntax. + + The identifier. + Syntax for optional as clause. Can be nothing if no type was supplied. + Delegate to get diagnostic info to generate if a required type is missing (Option Strict On/Custom) + The type, either from the type character or the as clause. Uses Object as default if needed. + + + + + Given a identifier and a type, return the actual type to use. Uses the type character or the given type. + + The identifier. + Bound type after the As. Can be nothing if no type was supplied. + Delegate to get diagnostic info to generate if a required type is missing (Option Strict On/Custom) + The type, either from the type character or the as clause type. Uses Object as default if needed. + + + + + Decode an option "On" or "Off" values into true or false. Not specified is considered true. + + + + + Decode an option "Text" or "Binary" value into true or false. The syntax is not optional. + + + + + Decode a parameter list from a delegate declaration into a list of parameter symbols. + + Containing method declaration. + Optional parameter list syntax + + + + Decode a parameter list into a list of parameter symbols. + + Containing method declaration. + Parameter is for a lambda expression rather than a regular method. + Optional parameter list syntax + DO NOT call this to get the parameters of a delegate declaration (DecodeParameterListOfDelegateDeclaration). + + + + Decode a parameter list into a list of parameter symbols. + + Containing property declaration. + Optional parameter list syntax + + + + Modifier validation code shared between properties and methods. + + + + + This function checks if the given expression is a constant from a language point of view and returns + constant value if it is. This is different from the fact that the bound node has a constant value. + This method also adds the required diagnostics for non const values. + + The bound expression. + The diagnostics. + ConstantValue if the bound expression is compile time constant and can be used + for const field/local initializations or enum member initializations. Nothing if not + + + isWinMd says whether to mangle the name for winmdobj output. See the param tag for details. + isWinMd is only necessary for set properties, so any MethodKind which is definitely not + a set property can safely set this value to False. + + + + Returns True if the xmlns { prefix, namespace } pair matches + an Imports declaration and there aren't any xmlns declarations + for the same prefix on any outer XElement scopes. + + + + + Bind the expression within the XmlEmbeddedExpressionSyntax, + and wrap in a BoundXmlEmbeddedExpression. + + + + + If the method or property group is not Nothing, bind as an invocation expression. + Otherwise return a BoundBadExpression containing the arguments. + + + + + Check if XML features are allowed. If not, report an error and return a + separate DiagnosticBag that can be used for binding sub-expressions. + + + + + Bind any xmlns declaration attributes and return the bound nodes plus a Dictionary + of { prefix, namespace } pairs that will be used for namespace lookup at and below + the containing XmlElement. Any xmlns declarations that are redundant with Imports + in scope (same prefix and namespace) are dropped, and instead, an entry is added + to the 'importedNamespaces' collection. When the root XmlElement is generated, + xmlns attributes will be added for all entries in importedNamespaces. Any attributes + other than xmlns are added to the 'otherAttributes' collection for binding by the caller. + + + + + If the attribute represents an xmlns declaration, populate 'prefix' and 'namespace', + and generate diagnostics and set hasErrors if there are errors. Returns True if this + is an xmlns declaration, even if there are errors. Unless this attribute is from an + Imports statement, generate the BoundExpression for the namespace as well. + (For Imports, binding is skipped, since a BoundNode is not needed, and in the + invalid case of "xmlns:p=<%= expr %>", expr may result in a cycle. + + + + + If name is "xmlns", set prefix to String.Empty and return True. + If name is "xmlns:p", set prefix to p and return True. + Otherwise return False. + + + + + State tracked for the root XmlElement while binding nodes within the + tree. This state is mutable since it includes the set of namespaces from + Imports referenced within the tree. Ideally, this state would be part of the + XmlRootElementBinder, but since this state is mutable, there would be + issues caching and reusing the Binder. Instead, the state is passed + explicitly as an argument to each binding method. + + + + + Makes it look like Option Strict is Off, all other operations + are delegated up the chain. + + + + + A BinderBuilder builds a linked list of Binder objects for various typical binders. + + Typically the binder chain looks something like this: + BackstopBinder + SourceModuleBinder + TypesOfImportedNamespacesMembersBinder (for modules of project-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for project-level imported namespaces and types) + ImportAliasesBinder (for project-level import aliases) + SourceFileBinder + TypesOfImportedNamespacesMembersBinder (for modules of file-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for file-level imported namespaces and types) + ImportAliasesBinder (for file-level import aliases) + NamespaceBinder... (for each namespace, starting at the global namespace) + TypeBinder... (for each type, and nested type) + (maybe more) + DiagnosticBagBinder + + Note: Binders are also built by the BinderCache class. Changes to how namespace and type Binders + are built may need changes there also. + + + + + Creates a binder for a binding global imports in a source file. This includes the following binders: + BackstopBinder + SourceModuleBinder + SourceFileBinder + NamespaceBinder (for the global namespace) + IgnoreBaseClassesBinder (so that base classes are ignore during binding) + + + + + Creates a binder for a binding project-level imports. This includes the following binders: + BackstopBinder + SourceModuleBinder + ProjectImportsBinder + NamespaceBinder (for the global namespace) + IgnoreBaseClassesBinder (so that base classes are ignore during binding) + + + + + Creates a binder for a source file. This includes the following binders: + BackstopBinder + SourceModuleBinder + TypesOfImportedNamespacesMembersBinder (for modules of project-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for project-level imported namespaces and types) + ImportAliasesBinder (for project-level import aliases) + SourceFileBinder + TypesOfImportedNamespacesMembersBinder (for modules of file-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for file-level imported namespaces and types) + ImportAliasesBinder (for file-level import aliases) + + + + + Creates a binder for a project level namespace declaration + This includes the following binders: + BackstopBinder + SourceModuleBinder + TypesOfImportedNamespacesMembersBinder (for modules of project-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for project-level imported namespaces and types) + SourceFileBinder + TypesOfImportedNamespacesMembersBinder (for modules of file-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for file-level imported namespaces and types) + ImportAliasesBinder (for file-level import aliases) + NamespaceBinder... (for each namespace, starting at the global namespace) + + + + + Creates a binder for a source namespace declaration (the part of a namespace + in a single namespace declaration). This includes the following binders: + BackstopBinder + SourceModuleBinder + TypesOfImportedNamespacesMembersBinder (for modules of project-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for project-level imported namespaces and types) + SourceFileBinder + TypesOfImportedNamespacesMembersBinder (for modules of file-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for file-level imported namespaces and types) + ImportAliasesBinder (for file-level import aliases) + NamespaceBinder... (for each namespace, starting at the global namespace) + + + + + Creates a binder for a source type declaration (the part of a type in a single + type declaration. For partial types this include just one part). This includes the following binders: + BackstopBinder + SourceModuleBinder + TypesOfImportedNamespacesMembersBinder (for modules of project-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for project-level imported namespaces and types) + SourceFileBinder + TypesOfImportedNamespacesMembersBinder (for modules of file-level imported namespaces) + ImportedTypesAndNamespacesMembersBinder (for file-level imported namespaces and types) + ImportAliasesBinder (for file-level import aliases) + NamespaceBinder... (for each namespace, starting at the global namespace) + NamedTypeBinder... (for each type, and nested type) + + + + + Creates a binder for a source attribute block from the containing type or containing namespace. + This binder is used by the normal compilation code path for source attributes. In this case, no + containing binder exists. + + + + The symbol which is the target of the attribute. + + + + Creates a binder for a source attribute block when a containing binder is available. Used by semantic model. + + + + + Creates a binder for binding a source parameter's default value. + + + + + Creates a binder for binding for binding inside the interior of documentation comment + + + + + Create a binder for the source module. Includes the following: + BackstopBinder + SourceModuleBinder + + + + + The class finds the correct Binder to use for a node in a syntax + tree, down to method level. Within a method, the has a + cache of further binders within the method. + + The caches results so that binders are efficiently reused between queries. + + + + + A helper to bind conditional access. + + + + + Data for Binder.BindImportClause that exposes dictionaries of + the members and aliases that have been bound during the + execution of BindImportClause. It is the responsibility of derived + classes to update the dictionaries in AddMember and AddAlias. + + + + + Provides context for binding body of a Lambda. + + + + + Special binder for binding ObjectInitializers. + This binder stores a reference to the receiver of the initialization, because fields in an object initializer can be + referenced with an omitted left expression in a member access expression (e.g. .Fieldname = .OtherFieldname). + + + + + Use the receiver of the ObjectCreationExpression as the omitted left of a member access. + + + + + Use the receiver of the ObjectCreationExpression to as the omitted left of a dictionary access. + + + + + Holds information about a member in a compact form. Used for all non-type members for simplicity + + + + + + These are the flags that are found in the syntax. They must correspond to the modifiers list. + + + + + + These are flags that are implied or computed + + + + + + Binder used to bind statements inside With blocks. + + + + Reference to a With statement syntax this binder is created for + + + Reference to an expression from With statement + + + + Holds information needed by With block to properly bind + references to With block expression placeholder + + + + + True if there were references to the With statement expression + placeholder which prevent ByRef local from being used + + + + + With statement expression placeholder is a bound node being used in initial binding + to represent with statement expression. In lowering it is to be replaced with + the lowered expression which will actually be emitted. + + + + + A draft version of initializers which will be used in this With statement. + Initializers are expressions which are used to capture expression in the current + With statement; they can be empty in some cases like if the expression is a local + variable of value type. + + Note, the initializers returned by this property are 'draft' because they are + generated based on initial bound tree, the real initializers will be generated + in lowering based on lowered expression form. + + + + + A draft version of placeholder substitute which will be used in this With statement. + + Note, the placeholder substitute returned by this property is 'draft' because it is + generated based on initial bound tree, the real substitute will be generated in lowering + based on lowered expression form. + + + + Holds information needed by With block to properly bind + references to With block expression, placeholder, etc... + + + Original bound expression from With statement + + + Bound placeholder expression if used, otherwise Nothing + + + Diagnostics produced while binding the expression + + + + Draft initializers for With statement, is based on initial binding tree + and is only to be used for warnings generation as well as for flow analysis + and semantic API; real initializers will be re-calculated in lowering + + + + + Draft substitute for With expression placeholder, is based on initial + binding tree and is only to be used for warnings generation as well as + for flow analysis and semantic API; real substitute will be re-calculated + in lowering + + + + + If With statement expression is being used from nested lambda there are some restrictions + to the usage of Me reference in this expression. As these restrictions are only to be checked + in few scenarios, this flag is being calculated lazily. + + + + Create a new instance of With statement binder for a statement syntax provided + + + + A bound tree walker which search for a bound Me and MyClass references of value type. + Is being only used for calculating the value of 'ExpressionHasByRefMeReference' + + + + Asserts that the node is NOT from With statement expression + + + + Binding state used by the rewriter for XContainer derived types. + + + + + A binder to expose namespaces from Imports<xmlns:...> statements. + + + + + A binder for XmlElement declarations. + + + + + An extension property in reduced form, with first parameter + removed and exposed as an explicit receiver type. + + + + + A specific location for binding. + + + + + Binder used to bind Catch blocks. + It hosts the control variable (if one is declared) + and inherits BlockBaseBinder since there are no Exit/Continue for catch blocks. + + + + + This is used while computing the values of constant fields. Since they can depend on each + other, we need to keep track of which ones we are currently computing in order to avoid (and + report) cycles. + + + + + This binder keeps track of the set of constant fields that are currently being evaluated + so that the set can be passed into the next call to SourceFieldSymbol.ConstantValue (and + its callers). + + + + + Binder used for field, auto property initializations and parameter default values. + + + + + Backing field for the ContainingMember property + + + + + Backing field for the AdditionalContainingMembers property + + + + Root syntax node + + + + Initializes a new instance of the class. + + The field, property or parameter symbol with an initializer or default value. + Additional field for property symbols initialized with the initializer. + The next binder. + Root syntax node + + + + The member containing the binding context. + This property is the main reason for this binder, because the binding context for an initialization + needs to be the field or property symbol. + + + + + Additional members associated with the binding context + Currently, this field is only used for multiple field/property symbols initialized by an AsNew initializer, e.g. "Dim x, y As New Integer" or "WithEvents x, y as New Object" + + + + Field or property declaration statement syntax node + + + + This binder keeps track of the set of parameters that are currently being evaluated + so that the set can be passed into the next call to ParameterSymbol.DefaultConstantValue (and + its callers). + + + + + This binder keeps track of the set of symbols that are currently being evaluated + so that the set can be passed to methods to support breaking infinite recursion + cycles. + + + + + Provides a way to obtain binders for descendant scopes in method or lambda body. + Factory for a method body does not create binders for scopes inside a lambda, + contained by the method. A dedicated factory must be created for each lambda body. + + + + + Binder used for interiors of documentation comment + + + + + Assuming there is one, the containing member of the binder is the commented symbol if and only if + the commented symbol is a non-delegate named type. (Otherwise, it is the containing type or namespace of the commented symbol.) + + + Delegates don't have user-defined members, so it makes more sense to treat + them like methods. + + + + + Symbol commented with the documentation comment handled by this binder. In general, + all name lookup is being performed in context of this symbol's containing symbol. + We still need this symbol, though, to be able to find type parameters or parameters + referenced from 'param', 'paramref', 'typeparam' and 'typeparamref' tags. + + + + + Removes from symbol collection overridden methods or properties + + + + + Binder used for interiors of documentation comment for binding 'cref' attribute value + + + + + Binder used for interiors of documentation comment for binding 'name' attribute + value of 'param' and 'paramref' documentation comment tags + + + + + Binder used for interiors of documentation comment for binding 'name' attribute + value of 'typeparam' documentation comment tag + + + + + Binder used for interiors of documentation comment for binding 'name' attribute + value of 'typeparamref' documentation comment tag + + + + + This is a binder for use when early decoding of well known attributes. The binder will only bind expressions that can appear in an attribute. + Its purpose is to allow a symbol to safely decode any attribute without the possibility of any attribute related infinite recursion during binding. + If an attribute and its arguments are valid then this binder returns a BoundAttributeExpression otherwise it returns a BadExpression. + + + + + Check that the syntax can appear in an attribute argument. + + + + + A ExecutableCodeBinder provides context for looking up labels within a context represented by a syntax node, + and also implementation of GetBinder. + + + + + Binder for Finally blocks. + Its purpose is to hide exit try label of the enclosing try binder. + + + + + Holds all information needed to rewrite a bound for each node. + + + + + A bound call to the GetEnumerator method. + + + + + + A bound call to the MoveNext method. + + + + + + A bound access to the Current property. + + + + + + Element type of the collection. + + + + + + True is the enumerator needs or may need (in case of IEnumerator) to be disposed. + + + + + + True if the enumerator is, inherits from or implements IDisposable. + + + + + + The condition that is used to determine whether to call Dispose or not (contains a placeholder). + + + + + + The conversion of the enumerator to the target type on which Dispose is called + (contains a placeholder). + + + + + + The conversion of the return value of the current call to the type of the control variable + (contains a placeholder). + + + + + + Placeholder for the bound enumerator local. + + + + + + Placeholder for the bound call to the get_Current method. + + + + + + Placeholder for the collection; used only when the collection's type + is not an one dimensional array or string. + + + + + + Initializes a new instance of the class. + + A bound call to the GetEnumerator method. + A bound call to the MoveNext method. + A bound access to the Current property. + An element type. + if set to true the enumerator needs to be disposed. + if set to true the enumerator is or inherits from or implements IDisposable. + The condition whether to call dispose or not. + The conversion of the enumerator to call Dispose on. + The conversion from Current return type to the type of the controlVariable. + The placeholder for the bound enumerator local. + The placeholder for the expression that get's the current value. + The placeholder for the collection expression. + + + + Binder used to bind For and ForEach blocks. + It hosts the control variable (if one is declared) + and inherits ExitableStatementBinder to provide Continue/Exit labels if needed. + + + + + This binder is for binding the argument to GetType. It traverses + the syntax marking each open type ("unbound generic type" in the + VB spec) as either allowed or not allowed, so that BindType can + appropriately return either the corresponding type symbol or an + error type. + + + + + This visitor walks over a type expression looking for open types. + Open types are allowed if an only if: + 1) There is no constructed generic type elsewhere in the visited syntax; and + 2) The open type is not used as a type argument or array/nullable + element type. + + + + The argument to typeof. + + Keys are GenericNameSyntax nodes representing unbound generic types. + Values are false if the node should result in an error and true otherwise. + + True if no constructed generic type was encountered. + + + + Causes lookups to ignore base classes. Used for binding + Imports statements. + + + + + If Option Explicit is Off for this source file, then implicit variable declaration will be allowed + in this binder. "containerOfLocals" is the container for implicitly declared variables. + + + + + Disallow additional local variable declaration (make binder frozen) + and report delayed shadowing diagnostics. + + + + + + True if implicit variable declaration is done (binder is frozen and doesn't + allow additional implicit variable declaration) + + + + + True if we are in a place that allows implicit variable declaration. This binder + implies that. + + + + + Get all implicitly declared variables that were declared in this method body. The binder + must be frozen before this can be obtained. + + + + + Declare an implicit local variable. The type of the local is determined + by the type character (if any) on the variable. + + + + + A tricky problem is reporting the "Variable 'x' hides a variable in an enclosing block" message if the variable in + an enclosing block is an implicit variable that hasn't been declared yet. We handle this by remembering any variable + declarations in enclosed blocks, and then report the error when the implicit variable is declared. + + + + + A ImportAliasesBinder provides lookup for looking up import aliases (A = Goo.Bar), + either at file level or project level. + + + + + Provides lookup in imported namespaces and types (not the alias kind), + either at file level or project level. + + + + + Collect extension methods with the given name that are in scope in this binder. + The passed in ArrayBuilder must be empty. Extension methods from the same containing type + must be grouped together. + + + + + Creates an InitializerSemanticModel that allows asking semantic questions about an initializer node. + + + + + Creates a speculative InitializerSemanticModel that allows asking semantic questions about an initializer node that did not appear in the original source code. + + + + + The is used to build up the map of all s within a method body, and the associated + . To do so it traverses all the statements, handling blocks and other + statements that create scopes. For efficiency reasons, it does not traverse into + expressions. This means that blocks within lambdas and queries are not created. + Blocks within lambdas are bound by their own when they are + analyzed. + + For reasons of lifetime management, this type is distinct from the + which also creates a map from to . That type owns it's binders + and that type's lifetime is that of the compilation. Therefore we do not store + binders local to method bodies in that type's cache. + + + + + Creates binders for top-level executable statements. + + + + + This binder is for binding the initializer of an implicitly typed + local variable. While binding an implicitly typed local variable + this binder is used to break cycles. + + + + + A simple Binder that wraps another Binder and reports a specific + binding location, but otherwise delegates to the other Binder. + + + + + Options that can be used to modify the symbol lookup mechanism. Multiple options can be combined together. + + + + + Consider all symbols, using normal accessibility rules. + + + + + Consider only namespaces and types. + + + + + Consider only labels. If this is not set, labels are not considered at all. + + + + + Do not consider symbols that are shared members. + + + + + Do not consider symbols that are instance members. + + + + + Do not consider the return value local variable. + This is similar to the C# LookupOption.MustBeInvocableMember. + + The only non-invocable member in Visual Basic is the function return variable + (see language specification 10.1.1). If this flag is set, lookup will not + return the function return variable, but instead return the containing function or property, + and any overloads thereof. + + + + + Do not do lookup in base classes (similar to how types in Imports are bound). + + + + + + Ignore accessibility checking when determining if a symbol is a viable match. + + + + + Consider methods of any arity (but still consider arity for other types of symbols). + + + + + Do not look for extension methods. + + + + + Ensures that lookup eagerly looks for extension methods and merges them with + instance methods, if any. + + If this flag is not set and lookup found viable instance method, it will not look + for extension methods that might be in scope. + + It is not an error to combine this flag with LookupOptions.IgnoreExtensionMethods, + the LookupOptions.IgnoreExtensionMethods takes precedence. + + + + + Consider only methods. Used by Query Expressions. + + 11.21.2 Queryable Types + When binding well-known method names, non-methods are ignored for the purpose of + multiple inheritance in interfaces and extension method binding, although shadowing + semantics still apply. + + + + + Ignore 'throughType' in accessibility checking. Used in checking accessibility of symbols accessed via 'MyBase'. + + + + + Do not consider locals or parameters during lookup. + + + + + Consider only events. Used to indicate that lookup searches for events only. Is used + to change lookup semantic for searching inside interfaces having CoClass attribute defined. + + Essentially this is a special casing for searching events (and non-event symbols) in + COM interfaces, see the following example from Dev11 code: + + Performing a lookup in a CoClass interface affects how we treat ambiguities between events and other members. + In COM, events are separated into their own binding space, thus it is possible for an event and member to have + the same name. This is not possible in the .NET world, but for backwards compatibility, especially with Office, + the compiler will ignore ambiguities when performing a lookup in a CoClass interface. Example: + + Interface _Goo + Sub Quit + + Interface GooSource + Event Quit + + < System.Runtime.InteropServices.CoClass(GetType(GooClass)) > + Interface Goo : Inherits _Goo, GooSource + + Class GooClass : Implements Goo + Event Quit Implements Goo.Quit + Sub Quit Implements Goo.Quit + + + + + + When performing a lookup in interface do NOT lookup in System.Object + + + + + Handle a case of being able to refer to System.Int32 through System.Integer. + Same for other intrinsic types with intrinsic name different from emitted name. + + + + + Represents a result of lookup operation over a 0 or 1 symbol (as opposed to a scope). + The typical use is to represent that a particular symbol is good/bad/unavailable. + +For more explanation of Kind, Symbol, Error - see LookupResult. + + + + + A LookupResult summarizes the result of a name lookup, and allows combining name lookups + from different scopes in an easy way. + + A LookupResult can be ONE OF: + empty - nothing found. + a non-accessible result - this kind of result means that search continues into further scopes of lower priority for + a viable result. An error is attached with the inaccessibility errors. Non-accessible results take priority over + non-viable results. + a non-viable result - a result that means that the search continues into further scopes of lower priority for + a viable or non-accessible result. An error is attached with the error that indicates + why the result is non-viable. + a bad symbol that stops further lookup - this kind of result prevents lookup into further scopes of lower priority. + a diagnostic is attached explaining why the symbol is bad. + ambiguous symbols.- In this case, an AmbiguousSymbolDiagnostic diagnostic has the other symbols. + a good symbol, or set of good overloaded symbols - no diagnostic is attached in this case + + Occasionally, good or ambiguous results are referred to as "viable" results. + + Multiple symbols can be represented in a single LookupResult. Multiple symbols are ONLY USED for overloadable + entities, such as methods or properties, and represent all the symbols that overload resolution needs to consider. + When ambiguous symbols are encountered, a single representative symbols is returned, with an attached AmbiguousSymbolDiagnostic + from which all the ambiguous symbols can be retrieved. This implies that Lookup operations that are restricted to namespaces + and/or types always create a LookupResult with 0 or 1 symbol. + + Note that the class is poolable so its instances can be obtained from a pool via GetInstance. + Also it is a good idea to call Free on instances after they no longer needed. + + The typical pattern is "caller allocates / caller frees" - + + Dim result = LookupResult.GetInstance() + + scope.Lookup(result, "goo") + ... use result ... + + result.Clear() + anotherScope.Lookup(result, "moo") + ... use result ... + + result.Free() 'result and its content is invalid after this + + + + + Set current result according to another + + + + + Set current result according to another + + + + + Set current result according to a given symbol + + + + + + + Merge two results, returning the best. If there are + multiple viable results, either produce a result with both symbols if they + can overload each other, or use the current. + + Other result. + + If the checkIfCurrentHasOverloads is True, then we only overload if every symbol in + our current result has "Overloads" modifier; otherwise we overload + regardless of the modifier. + + + + + + Returns: negative value - when first lost, 0 - when neither lost, > 0 - when second lost. + + + + + Returns: negative value - when current lost, 0 - when neither lost, > 0 - when other lost. + + + + + Returns: negative value - when first lost, 0 - when neither lost, > 0 - when second lost. + + + + + Returns: negative value - when namespace lost, 0 - when neither lost, > 0 - when type lost. + + + + + Replace the symbol replaced with a new one, but the kind + and diagnostics retained from the current result. Typically used when constructing + a type from a symbols and type arguments. + + + + + Binding info for expressions and statements that are part of a member declaration. + + + + + Field specific to non-speculative MemberSemanticModel + + + + + Get the highest bound node in the tree associated with a particular syntax node. + + + + + Get the lowest bound node in the tree associated with a particular syntax node. Lowest is defined as last + in a pre-order traversal of the bound tree. + + + + + If node has an immediate parent that is an expression or statement or attribute, return + that (making sure it can be bound on its own). Otherwise return Nothing. + + + + + Get a summary of the bound nodes associated with a particular syntax nodes, + and its parent. This is what the rest of the semantic model uses to determine + what to return back. + + + + + Gets a summary of the bound nodes associated with an underlying + bound call node for a raiseevent statement. + + + + + if "node" argument is a BoundRaiseEvent, returns its underlying boundcall instead. + Otherwise returns "node" unchanged. + + + + + Return True if the statement can be bound by a Binder on its own. + For example Catch statement cannot be bound on its own, only + as part of Try block. Similarly, Next statement cannot be bound on its own, + only as part of For statement. + + Only handles statements that are in executable code. + + + + + Get all of the syntax errors within the syntax tree associated with this + object. Does not get errors involving declarations or compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + + + + Get all the syntax and declaration errors within the syntax tree associated with this object. Does not get + errors involving compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the process of obtaining the + diagnostics. + The declaration errors for a syntax tree are cached. The first time this method is called, a ll + declarations are analyzed for diagnostics. Calling this a second time will return the cached diagnostics. + + + + + Get all the syntax and declaration errors within the syntax tree associated with this object. Does not get + errors involving compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the process of obtaining the + diagnostics. + The declaration errors for a syntax tree are cached. The first time this method is called, a ll + declarations are analyzed for diagnostics. Calling this a second time will return the cached diagnostics. + + + + + Get all the errors within the syntax tree associated with this object. Includes errors involving compiling + method bodies or initializers, in addition to the errors returned by GetDeclarationDiagnostics. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the process of obtaining the + diagnostics. + + Because this method must semantically all method bodies and initializers to check for diagnostics, it may + take a significant amount of time. Unlike GetDeclarationDiagnostics, diagnostics for method bodies and + initializers are not cached, the any semantic information used to obtain the diagnostics is discarded. + + + + + Given a type declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The type symbol that was declared. + + + + Given a enum declaration, get the corresponding type symbol. + + The syntax node that declares an enum. + The type symbol that was declared. + + + + Given a namespace declaration, get the corresponding type symbol. + + The syntax node that declares a namespace. + The namespace symbol that was declared. + + + + Given a method, property, or event declaration, get the corresponding symbol. + + The syntax node that declares a method, property, or event. + The method, property, or event symbol that was declared. + + + + Given a parameter declaration, get the corresponding parameter symbol. + + The syntax node that declares a parameter. + The parameter symbol that was declared. + + + + Given an import clause get the corresponding symbol for the import alias that was introduced. + + The import statement syntax node. + The alias symbol that was declared or Nothing if no alias symbol was declared. + + + + Given a type parameter declaration, get the corresponding type parameter symbol. + + The syntax node that declares a type parameter. + The type parameter symbol that was declared. + + + + Gets the semantic information of a for each statement. + + The for each syntax node. + + + + The SyntaxTree that is bound + + + + + Get the correct enclosing binder for the given position, taking into account + block constructs and lambdas. + + Binder for the method body, lambda body, or field initializer. The + returned binder will be nested inside the binder, or be this binder. + Syntax node that is the root of the construct associated with "memberBinder". + Syntax node that position is in. + Position we are finding the enclosing binder for. + The enclosing binder within "memberBinder" for the given position. + + WARN WARN WARN: The result is not guaranteed to have IsSemanticModelBinder set. + + + + + If answer is True, the binder is returned via [binder] parameter. + + + + + If answer is True, the binder is returned via [binder] parameter. + + + + + Get all bound nodes associated with a node, ordered from highest to lowest in the bound tree. + Strictly speaking, the order is that of a pre-order traversal of the bound tree. + As a side effect, caches nodes and binders. + + + + + A collection initializer syntax node is not always treated as a VB expression syntax node + in case it's part of a CollectionInitializer (outer most or top level initializer). + + The syntax node to check. + True if the syntax node represents an expression syntax, but it's not + an expression from the VB language point of view; otherwise False. + + + + Incrementally bind bindingRoot (which is always a non-lambda enclosed statement, or the + root of this model). Side effect is to store nodes into the guarded node map. + + + + + In order that any expression level special binders are used, lambdas are fully resolved, + and that any other binding context is correctly handled, we only use the binder to create bound + nodes for: + a) The root syntax of this semantic model (because there's nothing more outer to bind) + b) A stand-alone statement is that is not inside a lambda. + + + + + The incremental binder is used when binding statements. Whenever a statement + is bound, it checks the bound node cache to see if that statement was bound, + and returns it instead of rebinding it. + + FOr example, we might have: + While x > goo() + y = y * x + z = z + y + End While + + We might first get semantic info about "z", and thus bind just the statement + "z = z + y". Later, we might bind the entire While block. While binding the while + block, we can reuse the binding we did of "z = z + y". + + + + + We override GetBinder so that the BindStatement override is still + in effect on nested binders. + + + + + We override GetBinder so that the BindStatement override is still + in effect on nested binders. + + + + + Traverse a tree of bound nodes, and update the following maps inside the SemanticModel: + + guardedNodeMap - a map from syntax node to bound nodes. Bound nodes are added in the order they are bound + traversing the tree, so they will be in order from upper to lower node. + + guardedQueryBindersMap - a map from query-specific syntax node to an array of binders used to + bind various children of the node. + + guardedAnonymousTypeBinderMap - a map from Anonymous Type initializer's FieldInitializerSyntax to + Binder.AnonymousTypeFieldInitializerBinder used to bind its expression. + + + + + Should we record bound node mapping for this node? Generally, we ignore compiler generated, but optionally can + allow. + + + + + Provides context for binding body of a MethodSymbol. + + + + + Create binder for binding the body of a method. + + + + + Creates a MethodBodySemanticModel that allows asking semantic questions about an attribute node. + + + + + Creates a speculative MethodBodySemanticModel that allows asking semantic questions about an attribute node that did not appear in the original source code. + + + + + A MethodTypeParametersBinder provides the context for looking up type parameters on a method. + It is split out since binding of type in the parameters and return value need to happen with a context + that includes the type parameters, but we don't have a fully complete method symbol yet. + + + + + Looks up the name in the type parameters + a) type parameters in this type (but not outer or base types) + Returns all members of that name, or empty list if none. + + + + + A NamedTypeBinder provides the context for a type symbol; e.g., looking up names + inside the type. + + + + + Some nodes have special binder's for their contents + + + + + Gets all symbols of the particular name as + a) members of this type + b) members of base types + c) type parameters in this type (but not outer or base types) + In that order. + + Note, that section "11.4.4 Simple Name Expression" of VB Language spec + implies that type parameters are examined first, and only then members + of the type are examined. But this is inconsistent with Dev10 behavior. + + Returns all members of that name, or empty list if none. + + + + + Collect extension methods with the given name that are in scope in this binder. + The passed in ArrayBuilder must be empty. Extension methods from the same containing type + must be grouped together. + + + + + A namespace binder provides the context for a namespace symbol; e.g., looking up names + inside the namespace. + + + + + Collect extension methods with the given name that are in scope in this binder. + The passed in ArrayBuilder must be empty. Extension methods from the same containing type + must be grouped together. + + + + + A ProjectImportsBinder provides the equivalent of a SourceFileBinder, but for the project-level + imports, which don't live in any file. + It primarily provides the services of getting locations of nodes, since it holds onto a SyntaxTree, although + that tree isn't technically a source tree. + + + + + Returns True for + + + + + A SourceFileBinder provides the context associated with a give source file, not including the + Imports statements (which have their own binders). It primarily provides the services of getting + locations of node, since it holds onto a SyntaxTree. + + + + + A source module binder provides the context associated with a source module. + + + + + Binder used for speculatively binding. + + + + + Allows asking semantic questions about a TypeSyntax or RangeArgumentSyntax node within a member, that did not appear in the original source code. + Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. + + + + + Creates a speculative SemanticModel for a TypeSyntax or a RangeArgumentSyntax node at a position within an existing MemberSemanticModel. + + + + + Provides context for binding statements in speculative code. + + + + + Create binder for binding statements in speculative code. + + + + + A SubOrFunctionBodyBinder provides context for looking up parameters/labels in a body of an executable entity (a method, lambda, or top-level script code), + and also for the implementation of ContainingMember, GetLocalForFunctionValue and GetBinder. + + + + + This is used while computing the values of constant symbols. Since they can depend on each other, + we need to keep track of which ones we are currently computing in order to avoid (and report) cycles. + + + + + Manages anonymous types and delegates created on module level. All requests + for anonymous type/delegate symbols go via the instance of this class. + + Manager also is in charge of creating implementation types which are used in + emit phase to substitute anonymous type/delegate public symbols. + + + + + Builds a condition in the following form: + + [preaction: localMyFieldBoxed = DirectCast(Me.field, System.Object)] + [preaction: localOtherFieldBoxed = DirectCast(Other.field, System.Object)] + IF(localMyFieldBoxed IsNot Nothing AndAlso localOtherFieldBoxed IsNot Nothing, + localMyFieldBoxed.Equals(localOtherFieldBoxed), + localMyFieldBoxed Is localOtherFieldBoxed + ) + + + + Source module + + + Owning compilationSource module + + + + Given anonymous type descriptor provided construct an anonymous type symbol + + + + + Given anonymous delegate descriptor provided, construct an anonymous delegate symbol + + + + Cache of created anonymous types + + + Cache of created anonymous delegates + + + + Given anonymous type public symbol construct an anonymous type symbol to be used + in emit; the type symbol is created based on generic type generated for each + 'unique' anonymous type structure. + + + + + Given anonymous delegate public symbol construct an anonymous type symbol to be + used in emit; the type symbol may be created based on generic type generated for + each 'unique' anonymous delegate structure OR if the delegate's signature is + 'Sub()' it will be an instance of NonGenericAnonymousDelegateSymbol type. + + + + + Resets numbering in anonymous type names and compiles the + anonymous type methods. Also seals the collection of templates. + + + + + Translates anonymous type public symbol into an implementation type symbol to be used in emit. + + + + + Translates anonymous type method symbol into an implementation method symbol to be used in emit. + + + + Returns all templates owned by this type manager + + + + Checks if all special and well-known symbols required for emitting anonymous types + provided exist, if not reports errors and returns True. + + + + + Force all declaration errors to be generated. + + + + + Map an anonymous type or delegate public symbol to an implementation symbol to be + used in emit. + + NOTE: All anonymous types/delegated (except for delegate with signature 'Sub()') with the + same set of fields/parameters (field names and IsKey flags are taken into account) are + generated based on the same generic type template. + + + + + Map an anonymous type or delegate's method symbol to an implementation method symbol to be used in emit + + + + + Map an anonymous type or delegate's method symbol to a substituted method symbol. + + + + Index of the property in the containing anonymous type + + + + This is a symbol to represent Anonymous Delegate for a lambda + like: + Sub() ... + + This delegate type doesn't have generic parameters. Unlike generic anonymous types, + for which we are constructing new instance of substituted symbol for each use site + with reference to the location, we are creating new instance of this symbol with its + own location for each use site. But all of them are representing the same delegate + type and are going to be equal to each other. + + + + + The name used to emit definition of the type. Will be set when the type's + metadata is ready to be emitted, Name property will throw exception if this field + is queried before that moment because the name is not defined yet. + + + + + The key of the anonymous type descriptor used for this type template + + + + Describes the type descriptor location and property/parameter names associated with this location + + + + In emit phase every time a created anonymous type is referenced we try to adjust name of + template's fields as well as store the lowest location of the template. The last one will + be used for ordering templates and assigning emitted type names. + + + + + Force all declaration errors to be generated. + + + + Index of the property in the containing anonymous type + + + + This class represents a compiler generated parameterless constructor + + + + + Initializes a new instance of the class. + + + The containing type for the synthesized constructor. + if set to true if this is a shared constructor. + if set to true if this constructor will include debuggable initializers. + Binder to be used for error reporting, or Nothing. + Diagnostic bag, or Nothing. + + + + The parameters forming part of this signature. + + + + + This class represents a simple customizable hash method to hash the string constants + corresponding to the case clause string constants. + If we have at least one string type select case statement in a module that needs a + hash table based jump table, we generate a single public string hash synthesized + method (SynthesizedStringSwitchHashMethod) that is shared across the module. + We must emit this function into the compiler generated PrivateImplementationDetails class. + + + + + Compute the hashcode of a sub string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + This method should be kept consistent with MethodBodySynthesizer.ConstructStringSwitchHashFunctionBody + The control flow in this method mimics lowered "for" loop. It is exactly what we want to emit + to ensure that JIT can do range check hoisting. + + + + + Construct a body for String Switch Hash Function + + + This method should be kept consistent with ComputeStringHash + + + + + The parameters forming part of this signature. + + + + + A Declaration summarizes the declaration structure of a source file. Each entity declaration + in the program that is a container (specifically namespaces, classes, interfaces, structs, + and delegate declarations) is represented by a node in this tree. At the top level, the + compilation unit is treated as a declaration of the unnamed namespace. + + Special treatment is required for namespace declarations, because a single namespace + declaration can declare more than one namespace. For example, in the declaration + +namespace A.B.C {} + +we see that namespaces A and B and C are declared. This declaration is represented as three + declarations. All three of these ContainerDeclaration objects contain a reference to the + syntax tree for the declaration. + + A "single" declaration represents a specific namespace or type declaration at a point in + source code. A "root" declaration is a special single declaration which summarizes the + contents of an entire file's types and namespaces. Each source file is represented as a tree + of single declarations. + + A "merged" declaration merges together one or more declarations for the same symbol. For + example, the root namespace has multiple single declarations (one in each source file) but + there is a single merged declaration for them all. Similarly partial classes may have + multiple declarations, grouped together under the umbrella of a merged declaration. In the + common trivial case, a merged declaration for a single declaration contains only that single + declaration. The whole program, consisting of the set of all declarations in all of the + source files, is represented by a tree of merged declarations.''' + + + + + A declaration table is a device which keeps track of type and namespace declarations from + parse trees. It is optimized for the case where there is one set of declarations that stays + constant, and a specific root namespace declaration corresponding to the currently edited + file which is being added and removed repeatedly. It maintains a cache of information for + "merging" the root declarations into one big summary declaration; this cache is efficiently + re-used provided that the pattern of adds and removes is as we expect. + + + + + A wrapper around RootSingleNamespaceDeclaration. The namespace declaration + is evaluated lazily to avoid evaluating the namespace and associated SyntaxTree + for embedded syntax trees before we can determine whether the syntax tree is needed. + + + + + Pool of builders used to create our member name sets. Importantly, these use + so that name lookup happens in an + appropriate manner for VB identifiers. This allows fast member name O(log(n)) even if + the casing doesn't match. + + + + + Represents global namespace. Namespace's name is always empty + + + + + + This function is used to determine the best name of a type or namespace when there are multiple declarations that + have the same name but with different spellings. + If this declaration is part of the rootnamespace (specified by /rootnamespace:<nsname> this is considered the best name. + Otherwise the best name of a type or namespace is the one that String.Compare considers to be less using a Ordinal. + In practice this prefers uppercased or camelcased identifiers. + + + The single declarations. + Set to true if there were multiple distinct spellings. + + + + This function is used to determine the best name of a type or namespace when there are multiple declarations that + have the same name but with different spellings. + If this declaration is part of the rootnamespace (specified by /rootnamespace:<nsname> this is considered the best name. + Otherwise the best name of a type or namespace is the one that String.Compare considers to be less using a Ordinal. + In practice this prefers uppercased or camelcased identifiers. + + + The single declarations. + Set to true if there were multiple distinct spellings. + + + + An ArrayTypeSymbol represents an array type, such as Integer() or Object(,). + + + + + Create a new ArrayTypeSymbol. + + + + + Create a new ArrayTypeSymbol. + + + + + Returns the list of custom modifiers, if any, associated with the array. + + + + + Returns the number of dimensions of this array. A regular single-dimensional array + has rank 1, a two-dimensional array has rank 2, etc. + + + + + Is this a zero-based one-dimensional array, i.e. SZArray in CLR terms. + + + + + Specified sizes for dimensions, by position. The length can be less than , + meaning that some trailing dimensions don't have the size specified. + The most common case is none of the dimensions have the size specified - an empty array is returned. + + + + + Specified lower bounds for dimensions, by position. The length can be less than , + meaning that some trailing dimensions don't have the lower bound specified. + The most common case is all dimensions are zero bound - a default (Nothing) array is returned in this case. + + + + + Note, equality should be checked separately!!! + + + + + Normally VB arrays have default sizes and lower bounds - sizes are not specified and all dimensions are zero bound. + This property should return false for any deviations. + + + + + Returns the type of the elements that are stored in this array. + + + + + Returns true if this type is known to be a reference type. It is never the case + that and both return true. However, for an unconstrained + type parameter, and will both return false. + + True + + + + Returns true if this type is known to be a value type. It is never the case + that and both return true. However, for an unconstrained + type parameter, and will both return false. + + False + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types that have a particular name, and any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types that have a particular name and arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns Nothing. + + + + Returns of the symbol. + + + + + + Returns of the symbol. + + + + + + Get the symbol that logically contains this symbol. + + Nothing + + + + Gets the locations where this symbol was originally defined, either in source + or metadata. Some symbols (for example, partial classes) may be defined in more + than one location. + + + + + Get the syntax node(s) where this symbol was declared in source. + + + An empty read-only array. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Represents SZARRAY - zero-based one-dimensional array + + + + + Represents MDARRAY - multi-dimensional array (possibly of rank 1) + + + + + Represents an attribute applied to a Symbol. + + + + + Gets the attribute class being applied. + + + + + Gets the constructor used in this application of the attribute. + + + + + Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. + + + + + Gets the list of constructor arguments specified by this application of the attribute. This list contains both positional arguments + and named arguments that are formal parameters to the constructor. + + + + + Gets the list of named field or property value arguments specified by this application of the attribute. + + + + + Compares the namespace and type name with the attribute's namespace and type name. Returns true if they are the same. + + + + + Checks if an applied attribute with the given attributeType matches the namespace name and type name of the given early attribute's description + and the attribute description has a signature with parameter count equal to the given attribute syntax's argument list count. + NOTE: We don't allow early decoded attributes to have optional parameters. + + + + + Returns the that represents the current AttributeData. + + A that represents the current AttributeData. + + + + Gets the attribute class being applied as an + + + + + Gets the constructor used in this application of the attribute as an . + + + + + Gets a reference to the source for this application of the attribute. Returns null for applications of attributes on metadata Symbols. + + + + + Decodes PermissionSetAttribute applied in source to determine if it needs any fixup during codegen. + + + PermissionSetAttribute needs fixup when it contains an assignment to the 'File' property as a single named attribute argument. + Fixup performed is ported from SecurityAttributes::FixUpPermissionSetAttribute. + It involves following steps: + 1) Verifying that the specified file name resolves to a valid path. + 2) Reading the contents of the file into a byte array. + 3) Convert each byte in the file content into two bytes containing hexa-decimal characters. + 4) Replacing the 'File = fileName' named argument with 'Hex = hexFileContent' argument, where hexFileContent is the converted output from step 3) above. + + Step 1) is performed in this method, i.e. during binding. + Remaining steps are performed during serialization as we want to avoid retaining the entire file contents throughout the binding/codegen pass. + See for remaining fixup steps. + + String containing the resolved file path if PermissionSetAttribute needs fixup during codegen, null otherwise. + + + + This method determines if an applied attribute must be emitted. + Some attributes appear in symbol model to reflect the source code, but should not be emitted. + + + + + Represents a custom modifier (modopt/modreq). + + + + + A type used as a tag that indicates which type of modification applies. + + + + + Represents an event. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + True if the event itself Is excluded from code coverage instrumentation. + True for source events marked with . + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Gets the attributes on event's associated field, if any. + + Returns an array of or an empty array if there are no attributes. + + + + Backing field of the event, or Nothing if the event doesn't have any. + + + Events imported from metadata return Nothing. + + + + + Gets the parameters of this event. If this event has no parameters, returns + an empty list. + + + + + Gets the return type of the event (typically System.Void). + + + + + Can be null in error cases. + + + + + Implements visitor pattern. + + + + + Is this an event of a tuple type? + + + + + If this is an event of a tuple type, return corresponding underlying event from the + tuple underlying type. Otherwise, Nothing. + + + + + Represents a member variable -- a variable declared as a member of a Class or Structure. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Gets the type of this variable. + + + + + Gets a value indicating whether this instance has declared type. This means a field was declared with an AsClause + or in case of const fields with an AsClause whose type is not System.Object + + + true if this instance has declared type; otherwise, false. + + + + + The list of custom modifiers, if any, associated with the member variable. + + + + + If this variable serves as a backing variable for an automatically generated + property or event, returns that property or event. + Otherwise returns Nothing. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns true if this variable was declared as ReadOnly + + + + + Returns true if this field was declared as "const" (i.e. is a constant declaration), or + is an Enum member. + + + + + Gets a value indicating whether this instance is metadata constant. A field is considered to be + metadata constant if the field value is a valid default value for a field. + + + true if this instance is metadata constant; otherwise, false. + + + + + Gets a value indicating whether this instance is const, but not metadata constant. A field is considered to be + const but not metadata constant if the const field's type is either Date or Decimal. + + + true if this instance is metadata constant; otherwise, false. + + + + + Returns false if the field wasn't declared as "const", or constant value was omitted or erroneous. + True otherwise. + + + + + If IsConst returns true, then returns the value of the constant or Enum member. + If IsConst return false, then returns Nothing. + + + + + Gets the constant value. + + Used to detect dependencies between constant field values. + + + + Const fields do not (always) have to be declared with a given type. To get the inferred type determined from + the initialization this method should be called instead of "Type". For non const field this method returns the + declared type. + + Used to detect dependencies between constant field values. + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + True if RuntimeSpecialName metadata flag is set for this symbol. + + + + + True if NotSerialized metadata flag is set for this symbol. + + + + + Describes how the field is marshalled when passed to native code. + Null if no specific marshalling information is available for the field. + + PE symbols don't provide this information and always return Nothing. + + + + Returns the marshalling type of this field, or 0 if marshalling information isn't available. + + + By default this information is extracted from if available. + Since the compiler does only need to know the marshalling type of symbols that aren't emitted + PE symbols just decode the type from metadata and don't provide full marshalling information. + + + + + Offset assigned to the field when the containing type is laid out by the VM. + Nothing if unspecified. + + + + + Get the "this" parameter for this field. This is only valid for source fields. + + + + + Returns true when field is a backing field for a captured frame pointer (typically "Me"). + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Is this a field of a tuple type? + + + + + Returns True when field symbol is not mapped directly to a field in the underlying tuple struct. + + + + + Returns true if this is a field representing a Default element like Item1, Item2... + + + + + If this is a field of a tuple type, return corresponding underlying field from the + tuple underlying type. Otherwise, Nothing. In case of a malformed underlying type + the corresponding underlying field might be missing, return Nothing in this case too. + + + + + If this field represents a tuple element, returns a corresponding default element field. + Otherwise returns Nothing + + + + + If this is a field representing a tuple element, + returns the index of the element (zero-based). + Otherwise returns -1 + + + + + This method indicates whether or not the runtime will regard the method + as newslot (as indicated by the presence of the "newslot" modifier in the + signature). + WARN WARN WARN: We won't have a final value for this until declaration + diagnostics have been computed for all s, + so pass ignoringInterfaceImplementationChanges: True if you need a value sooner + and aren't concerned about tweaks made to satisfy interface implementation + requirements. + NOTE: Not ignoring changes can only result in a value that is more true. + + + + + Gets what kind of method this is. There are several different kinds of things in the + VB language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + True, if the method kind was determined by examining a syntax node (i.e. for source methods - + including substituted and retargeted ones); false, otherwise. + + + + + Returns whether this method is using VARARG calling convention. + + + + + Returns whether this built-in operator checks for integer overflow. + + + + + Returns whether this method is generic; i.e., does it have any type parameters? + + + + + Returns the arity of this method, or the number of type parameters it takes. + A non-generic method has zero arity. + + + + + Get the type parameters on this method. If the method has not generic, + returns an empty list. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Returns the method symbol that this method was constructed from. This method symbol + has the same containing type (if any), but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + Always returns false because the 'readonly members' feature is not available in VB. + + + + + Returns true if this method has no return type; i.e., is a Sub instead of a Function. + + + + + Source: Returns whether this method is async; i.e., does it have the Async modifier? + Metadata: Returns False; methods from metadata cannot be async. + + + + + Source: Returns whether this method is an iterator; i.e., does it have the Iterator modifier? + Metadata: Returns False; methods from metadata cannot be an iterator. + + + + + Indicates whether the accessor is marked with the 'init' modifier. + + + + + Source: Returns False; methods from source cannot return by reference. + Metadata: Returns whether or not this method returns by reference. + + + + + Gets the return type of the method. If the method is a Sub, returns + the same type symbol as is returned by Compilation.VoidType. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. + + + + + Custom modifiers associated with the ref modifier, or an empty array if there are none. + + + + + Returns the list of attributes, if any, associated with the return type. + + + + + Build and add synthesized return type attributes for this method symbol. + + + + + Optimization: in many cases, the parameter count (fast) is sufficient and we + don't need the actual parameter symbols (slow). + + + The default implementation is always correct, but may be unnecessarily slow. + + + + + Gets the parameters of this method. If this method has no parameters, returns + an empty list. + + + + + Should return syntax node that originated the method. + + + + + Returns true if calls to this method are omitted in the given syntax tree at the given syntax node location. + Calls are omitted when the called method is a partial method with no implementation part, or when the + called method is a conditional method whose condition is not true at the given syntax node location in the source file + corresponding to the given syntax tree. + + + + + Calls are conditionally omitted if all the following requirements are true: + (a) Me.IsSub == True. + (b) Containing type is not an interface type. + (c) Me.IsConditional == True, i.e. it has at least one applied conditional attribute. + (d) This method is not the Property Set method. + (e) None of conditional symbols corresponding to these conditional attributes are true at the given syntax node location. + + + Forces binding and decoding of attributes. + + + + + Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. + + + + + Returns a flag indicating whether this symbol has at least one applied conditional attribute. + + + Forces binding and decoding of attributes. + NOTE: Conditional symbols on the overridden method must be inherited by the overriding method, but the native VB compiler doesn't do so. We maintain compatibility. + + + + + True if the method itself Is excluded from code coverage instrumentation. + True for source methods marked with . + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + This is set for methods with special semantics such as constructors or accessors + as well as in special synthetic methods such as lambdas. + Also set for methods marked with System.Runtime.CompilerServices.SpecialNameAttribute. + + + + + If this method has MethodKind of MethodKind.PropertyGet or MethodKind.PropertySet, + returns the property that this method is the getter or setter for. + If this method has MethodKind of MethodKind.EventAdd or MethodKind.EventRemove, + returns the event that this method is the adder or remover for. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + If this method is a Lambda method (MethodKind = MethodKind.LambdaMethod) and + there is an anonymous delegate associated with it, returns this delegate. + + Returns Nothing if the symbol is not a lambda or if it does not have an + anonymous delegate associated with it. + + + + + If this method overrides another method (because it both had the Overrides modifier + and there correctly was a method to override), returns the overridden method. + + + + + Returns interface methods explicitly implemented by this method. + + + + + Returns true if this method is not implemented in IL of the assembly it is defined in. + + + External methods are + 1) Declare Subs and Declare Functions, + 2) methods marked by , + 3) methods marked by + with or + flags. + 4) Synthesized constructors of ComImport types + + + + + Returns platform invocation information for this method if it is a PlatformInvoke method, otherwise returns Nothing. + + + + + Marshalling information for return value (FieldMarshal in metadata). + + + + + Misc implementation metadata flags (ImplFlags in metadata). + + + + + Declaration security information associated with this method, or null if there is none. + + + + + True if the method has declarative security information (HasSecurity flags). + + + + + Returns true if this method is an extension method from the VB language perspective; + i.e., declared with an Extension attribute and meets other language requirements. + + + + + Returns true if this method might be a reducible extension method. This method may return true + even if the method is not an extension method, but if it returns false, it must be the + case that this is not an extension method. + + Allows checking extension methods from source in a quicker manner than fully binding attributes. + + + + + Returns true if this method hides a base method by name and signature. + The equivalent of the "hidebysig" flag in metadata. + + + This property should not be confused with general method overloading in Visual Basic, and is not directly related. + This property will only return true if this method hides a base method by name and signature (Overloads keyword). + + + + + True if the implementation of this method is supplied by the runtime. + + + implies . + + + + + Determines whether this method is a candidate for a default + assembly entry point. Any method called "Main" is. + + True if the method can be used as an entry point. + + + + Entry point is considered accessible if it is not private and none of the containing types is private (they all might be Family or Friend). + + + + + Checks if the method has an entry point compatible signature, i.e. + - the return type is either void or int + - has either no parameter or a single parameter of type string[] + + + + Checks for validity of Construct(...) on this method with these type arguments. + + + + Call and throw if it returns false. + + + + + + True if this type supports retrieving the Me parameter + and false otherwise. Note that a return value of true does not guarantee a non-Nothing + (e.g. fails for shared methods). + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + If this method is a reduced extension method, gets the extension method definition that + this method was reduced from. Otherwise, returns Nothing. + + + + + Is this a reduced extension method? + + + + + If this method is a reduced extension method, gets the extension method (possibly constructed) that + should be used at call site during ILGen. Otherwise, returns Nothing. + + + + + If this method can be applied to an object, returns the type of object it is applied to. + + + + + If this method is a reduced extension method, returns a type inferred during reduction process for the type parameter. + + Type parameter of the corresponding method. + Inferred type or Nothing if nothing was inferred. + If this is not a reduced extension method. + If is Nothing. + If doesn't belong to the corresponding method. + + + + Fixed type parameters for a reduced extension method or empty. + + + + + If this is an extension method that can be applied to a instance of the given type, + returns the reduced method symbol thus formed. Otherwise, returns Nothing. + + Name lookup should use this method in order to capture proximity, which affects + overload resolution. + + + + + If this is an extension method that can be applied to a instance of the given type, + returns the reduced method symbol thus formed. Otherwise, returns Nothing. + + + + + Proximity level of a reduced extension method. + + + + + Returns bound block representing method's body. This method is called + by 'method compiler' when it is ready to emit IL code for the method. + + The bound method body is typically a high-level tree - it may contain + lambdas, foreach etc... which will be processed in CompileMethod(...) + + Enables synthesized methods to create instances. + Optionally returns a binder, OUT parameter! + + The method MAY return a binder used for binding so it can be reused later in method compiler + + + + + True iff the method contains user code. + + + + + Calculates a syntax offset for a local (user-defined or long-lived synthesized) declared at . + Must be implemented by all methods that may contain user code. + + + Syntax offset is a unique identifier for the local within the emitted method body. + It's based on position of the local declarator. In single-part method bodies it's simply the distance + from the start of the method body syntax span. If a method body has multiple parts (such as a constructor + comprising of code for member initializers and constructor initializer calls) the offset is calculated + as if all source these parts were concatenated together and prepended to the constructor body. + The resulting syntax offset is then negative for locals defined outside of the constructor body. + + + + + Specifies whether existing, "unused" locals (corresponding to proxies) are preserved during lambda rewriting. + + + This value will be checked by the and is needed so that existing locals aren't + omitted in the EE (method symbols in the EE will override this property to return True). + + + + + Is this a method of a tuple type? + + + + + If this is a method of a tuple type, return corresponding underlying method from the + tuple underlying type. Otherwise, Nothing. + + + + + Returns true if this symbol is defined outside of the compilation. + For instance if the method is Declare Sub. + + + + + If this is a partial method declaration without a body, and the method also + has a part that implements it with a body, returns that implementing + definition. Otherwise null. + + + + + If this is a partial method with a body, returns the corresponding + definition part (without a body). Otherwise null. + + + + + Represents a type other than an array, a type parameter. + + + + + Should return Nothing if there are none. + + + + + Returns the arity of this type, or the number of type parameters it takes. + A non-generic type has zero arity. + + + + + Returns the type parameters that this type has. If this is a non-generic type, + returns an empty ImmutableArray. + + + + + Returns custom modifiers for the type argument that has been substituted for the type parameter. + The modifiers correspond to the type argument at the same ordinal within the + array. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a give type parameters, + then the type parameter itself is consider the type argument. + + + + + Returns the type symbol that this type was constructed from. This type symbol + has the same containing type, but has type arguments that are the same + as the type parameters (although its containing type might not). + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + For implicitly declared delegate types returns the EventSymbol that caused this + delegate type to be generated. + For all other types returns null. + Note, the set of possible associated symbols might be expanded in the future to + reflect changes in the languages. + + + + + Returns True for one of the types from a set of Structure types if + that set represents a cycle. This property is intended for flow + analysis only since it is only implemented for source types, + and only returns True for one of the types within a cycle, not all. + + + + + Is this a NoPia local type explicitly declared in source, i.e. + top level type with a TypeIdentifier attribute on it? + + + + + Returns true and a string from the first GuidAttribute on the type, + the string might be null or an invalid guid representation. False, + if there is no GuidAttribute with string argument. + + + + + True if the type itself Is excluded from code coverage instrumentation. + True for source types marked with . + + + + + Should the name returned by Name property be mangled with [`arity] suffix in order to get metadata name. + Must return False for a type with Arity == 0. + + + Default implementation to force consideration of appropriate implementation for each new subclass + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + True if this type is considered serializable (metadata flag Serializable is set). + + + + + Type layout information (ClassLayout metadata and layout kind flags). + + + + + The default charset used for type marshalling. + Can be changed via applied on the containing module. + + + + + Marshalling charset of string data fields within the type (string formatting flags in metadata). + + + + + For delegate types, gets the delegate's invoke method. Returns null on + all other kinds of types. Note that it is possible to have an ill-formed + delegate type imported from metadata which does not have an Invoke method. + Such a type will be classified as a delegate but its DelegateInvokeMethod + would be null. + + + + + Returns true if this type was declared as requiring a derived class; + i.e., declared with the "MustInherit" modifier. Always true for interfaces. + + + + + Returns true if this type does not allow derived types; i.e., declared + with the NotInheritable modifier, or else declared as a Module, Structure, + Enum, or Delegate. + + + + + If this property returns false, it is certain that there are no extension + methods inside this type. If this property returns true, it is highly likely + (but not certain) that this type contains extension methods. This property allows + the search for extension methods to be narrowed much more quickly. + + !!! Note that this property can mutate during lifetime of the symbol !!! + !!! from True to False, as we learn more about the type. !!! + + + + + Returns True if the type is marked by 'Microsoft.CodeAnalysis.Embedded' attribute. + + + + + Returns True if the type is marked by 'Microsoft.VisualBasic.Embedded' attribute. + + + + + A Named type is an extensible interface if both the following are true: + (a) It is an interface type and + (b) It is either marked with 'TypeLibTypeAttribute( flags w/o TypeLibTypeFlags.FNonExtensible )' attribute OR + is marked with 'InterfaceTypeAttribute( flags with ComInterfaceType.InterfaceIsIDispatch )' attribute OR + inherits from an extensible interface type. + Member resolution for Extensible interfaces is late bound, i.e. members are resolved at run time by looking up the identifier on the actual run-time type of the expression. + + + + + This method is an entry point for the Binder to collect extension methods with the given name + declared within this named type. Overridden by RetargetingNamedTypeSymbol. + + + + + This method is called for a type within a namespace when we are building a map of extension methods + for the whole (compilation merged or module level) namespace. + + The 'appendThrough' parameter allows RetargetingNamespaceSymbol to delegate majority of the work + to the underlying named type symbols, but still add RetargetingMethodSymbols to the map. + + + + + This is an entry point for the Binder. Its purpose is to add names of viable extension methods declared + in this type to nameSet parameter. + + + + + Add names of viable extension methods declared in this type to nameSet parameter. + + The 'appendThrough' parameter allows RetargetingNamedTypeSymbol to delegate majority of the work + to the underlying named type symbol, but still perform viability check on RetargetingMethodSymbol. + + + + + Get the instance constructors for this type. + + + + + Get the shared constructors for this type. + + + + + Get the instance and shared constructors for this type. + + + + + Returns true if this type is known to be a reference type. It is never the case + that IsReferenceType and IsValueType both return true. However, for an unconstrained + type parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case + that IsReferenceType and IsValueType both return true. However, for an unconstrained + type parameter, IsReferenceType and IsValueType will both return false. + + + + + Returns True if this types has Arity >= 1 and Construct can be called. This is primarily useful + when deal with error cases. + + + + + Returns a constructed type given its type arguments. + + + + + Returns a constructed type given its type arguments. + + + + + Construct a new type from this type, substituting the given type arguments for the + type parameters. This method should only be called if this named type does not have + any substitutions applied for its own type arguments with exception of alpha-rename + substitution (although it's container might have substitutions applied). + + A set of type arguments to be applied. Must have the same length + as the number of type parameters that this type has. + + + Checks for validity of Construct(...) on this type with these type arguments. + + + + Construct a new type from this type definition, substituting the given type arguments for the + type parameters. This method should only be called on the OriginalDefinition. Unlike previous + Construct method, this overload supports type parameter substitution on this type and any number + of its containing types. See comments for TypeSubstitution type for more information. + + + + + Returns an unbound generic type of this generic named type. + + + + + Returns Default property name for the type. + If there is no default property name, then Nothing is returned. + + + + + If this is a generic type instantiation or a nested type of a generic type instantiation, + return TypeSubstitution for this construction. Nothing otherwise. + Returned TypeSubstitution should target OriginalDefinition of the symbol. + + + + + Gets the name of this symbol. + + + + + Collection of names of members declared within this type. + + + + + Returns true if the type is a Script class. + It might be an interactive submission class or a Script class in a csx file. + + + + + Returns true if the type is a submission class. + + + + + Returns true if the type is the implicit class that holds onto invalid global members (like methods or + statements in a non script file). + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types that have a particular name, and any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types that have a particular name and arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get this accessibility that was declared on this symbol. For symbols that do + not have accessibility declared on them, returns NotApplicable. + + + + + Supports visitor pattern. + + + + + Gets the kind of this symbol. + + + + + Returns a flag indicating whether this symbol is ComImport. + + + A type can me marked as a ComImport type in source by applying the + + + + + If CoClassAttribute was applied to the type returns the type symbol for the argument. + Type symbol may be an error type if the type was not found. Otherwise returns Nothing + + + + + Returns a sequence of preprocessor symbols specified in applied on this symbol, or null if there are none. + + + + + Returns a flag indicating whether this symbol has at least one applied conditional attribute. + + + Forces binding and decoding of attributes. + NOTE: Conditional symbols on base type must be inherited by derived type, but the native VB compiler doesn't do so. We maintain compatibility. + + + + + Gets the associated for an attribute type. + + + + + Declaration security information associated with this type, or null if there is none. + + + + + True if the type has declarative security information (HasSecurity flags). + + + + + NamedTypeSymbol calls derived implementations of this method when declared base type + is needed for the first time. + + basesBeingResolved are passed if there are any types already have their bases resolved + so that the derived implementation could avoid infinite recursion + + + + + NamedTypeSymbol calls derived implementations of this method when declared interfaces + are needed for the first time. + + basesBeingResolved are passed if there are any types already have their bases resolved + so that the derived implementation could avoid infinite recursion + + + + + Base type as "declared". + Declared base type may contain circularities. + + If DeclaredBase must be accessed while other DeclaredBases are being resolved, + the bases that are being resolved must be specified here to prevent potential infinite recursion. + + + + + Interfaces as "declared". + Declared interfaces may contain circularities. + + If DeclaredInterfaces must be accessed while other DeclaredInterfaces are being resolved, + the bases that are being resolved must be specified here to prevent potential infinite recursion. + + + + + NamedTypeSymbol calls derived implementations of this method when acyclic base type + is needed for the first time. + This method typically calls GetDeclaredBase, filters for + illegal cycles and other conditions before returning result as acyclic. + + + + + NamedTypeSymbol calls derived implementations of this method when acyclic base interfaces + are needed for the first time. + This method typically calls GetDeclaredInterfaces, filters for + illegal cycles and other conditions before returning result as acyclic. + + + + + Base type. + Could be Nothing for Interfaces or Object. + + + + + Interfaces that are implemented or inherited (if current type is interface itself). + + + + + Returns declared base type or actual base type if already known + This is only used by cycle detection code so that it can observe when cycles are broken + while not forcing actual Base to be realized. + + + + + Returns declared interfaces or actual Interfaces if already known + This is only used by cycle detection code so that it can observe when cycles are broken + while not forcing actual Interfaces to be realized. + + + + + True if and only if this type or some containing type has type parameters. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Should return full emitted namespace name for a top level type if the name + might be different in case from containing namespace symbol full name, Nothing otherwise. + + + + + Does this type implement all the members of the given interface. Does not include members + of interfaces that iface inherits, only direct members. + + + + + True if this is a reference to an unbound generic type. These occur only + within a GetType expression. A generic type is considered unbound + if all of the type argument lists in its fully qualified name are empty. + Note that the type arguments of an unbound generic type will be returned as error + types because they do not really have type arguments. An unbound generic type + yields null for its BaseType and an empty result for its Interfaces. + + + + + Force all declaration errors to be generated. + + + + + Return compiler generated nested types that are created at Declare phase, but not exposed through GetMembers and the like APIs. + Should return Nothing if there are no such types. + + + + + True if the type is a Windows runtime type. + + + A type can me marked as a Windows runtime type in source by applying the WindowsRuntimeImportAttribute. + WindowsRuntimeImportAttribute is a pseudo custom attribute defined as an internal class in System.Runtime.InteropServices.WindowsRuntime namespace. + This is needed to mark Windows runtime types which are redefined in mscorlib.dll and System.Runtime.WindowsRuntime.dll. + These two assemblies are special as they implement the CLR's support for WinRT. + + + + + True if the type should have its WinRT interfaces projected onto .NET types and + have missing .NET interface members added to the type. + + + + + Requires less computation than == . + + + Metadata types need to compute their base types in order to know their TypeKinds, And that can lead + to cycles if base types are already being computed. + + True if this Is an interface type. + + + + Get synthesized WithEvents overrides that aren't returned by + + + + + Verify if the given type can be used to back a tuple type + and return cardinality of that tuple type in . + + If method returns true, contains cardinality of the compatible tuple type. + + + + + Represents a namespace. + + + + + Get all the members of this symbol that are namespaces. + + An ImmutableArray containing all the namespaces that are members of this symbol. If this symbol has no namespace members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are modules. + + An ImmutableArray containing all the types that are members of this namespace. If this namespace has no module members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are modules that have a particular name + + An ImmutableArray containing all the modules that are members of this namespace with the given name. + If this symbol has no modules with this name, + returns an empty ImmutableArray. Never returns Nothing. + + + + Returns whether this namespace is the unnamed, global namespace that is + at the root of all namespaces. + + + + + The kind of namespace: Module, Assembly or Compilation. + Module namespaces contain only members from the containing module that share the same namespace name. + Assembly namespaces contain members for all modules in the containing assembly that share the same namespace name. + Compilation namespaces contain all members, from source or referenced metadata (assemblies and modules) that share the same namespace name. + + + + + The containing compilation for compilation namespaces. + + + + + If a namespace has Assembly or Compilation extent, it may be composed of multiple + namespaces that are merged together. If so, ConstituentNamespaces returns + all the namespaces that were merged. If this namespace was not merged, returns + an array containing only this namespace. + + + + + Containing assembly. + + + + + Containing module. + + + + + Gets the kind of this symbol. + + + + + Implements visitor pattern. + + + + + Get this accessibility that was declared on this symbol. For symbols that do + not have accessibility declared on them, returns NotApplicable. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns declared accessibility of most accessible type within this namespace or within a containing namespace recursively. + Valid return values: + Friend, + Public, + NotApplicable - if there are no types. + + + + + Calculate declared accessibility of most accessible type within this namespace or within a containing namespace recursively. + Expected to be called at most once per namespace symbol, unless there is a race condition. + + Valid return values: + Friend, + Public, + NotApplicable - if there are no types. + + + + + Returns true if namespace contains types accessible from the target assembly. + + + + + Returns true if this symbol is "shared"; i.e., declared with the "Shared" + modifier or implicitly always shared. + + + + + Lookup a nested namespace. + + + Sequence of names for nested child namespaces. + + + Symbol for the most nested namespace, if found. Nothing + if namespace or any part of it can not be found. + + + + + + Lookup an immediately nested type referenced from metadata, names should be + compared case-sensitively. + + + Full type name possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + This is an entry point for the Binder to collect extension methods with the given name + declared within this (compilation merged or module level) namespace, so that methods + from the same type are grouped together. + + + + + This is an entry point for the Binder. Its purpose is to add names of viable extension methods declared + in this (compilation merged or module level) namespace to nameSet parameter. + + + + + Add names of viable extension methods declared in this (compilation merged or module level) + namespace to nameSet parameter. + + The 'appendThrough' parameter allows RetargetingNamespaceSymbol to delegate majority of the work + to the underlying namespace symbol, but still perform viability check on RetargetingMethodSymbol. + + + + + Populate the map with all probable extension methods declared within this namespace, so that methods from + the same type were grouped together within each bucket. + + + + + Gets all extension methods in this namespace given a method's name. + + + + + Return the set of types that should be checked for presence of extension methods in order to build + a map of extension methods for the namespace. + + + + + Populate the map with all probable extension methods in membersByName parameter. + + Returns True if an extension method was appended, False otherwise. + + + + + This method is overridden by RetargetingNamespaceSymbol and allows it to delegate majority of the work + to the underlying namespace symbol, but still retarget method symbols before they are added to the map + of extension methods. + + + + + Represents a parameter of a method or property. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Is this ByRef parameter. + + + + + Is parameter explicitly declared ByRef. Can be different from IsByRef only for + String parameters of Declare methods. + + + + + Is this Out parameter (metadata flag In is set). + + + + + Is this In parameter (metadata flag Out is set). + + + + + True if the parameter flows data out of the method. + + + + + Describes how the parameter is marshalled when passed to native code. + Null if no specific marshalling information is available for the parameter. + + PE symbols don't provide this information and always return Nothing. + + + + Returns the marshalling type of this field, or 0 if marshalling information isn't available. + + + By default this information is extracted from if available. + Since the compiler does only need to know the marshalling type of symbols that aren't emitted + PE symbols just decode the type from metadata and don't provide full marshalling information. + + + + + Gets the type of this parameter. + + + + + The list of custom modifiers, if any, associated with the parameter type. + + + + + Custom modifiers associated with the ref modifier, or an empty array if there are none. + + + + + Gets the ordinal order of this parameter. The first type parameter has ordinal zero. + + + + + Returns true if this parameter was declared as a ParamArray. + + + + + Returns true if this parameter was declared as Optional. + + + + + Returns true if the parameter explicitly specifies a default value to be passed + when no value is provided as an argument to a call. + + + True if the parameter has a default value defined in source via an optional parameter syntax, + or the parameter is from metadata and HasDefault and Optional metadata flags are set, + or the parameter is from metadata, has Optional flag set and + or is specified. + + The default value can be obtained with the property. + + + + + Returns the default value of this parameter. If + returns false, then this property throws an InvalidOperationException. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns the default value of this parameter as a ConstantValue. + Return nothing if there isn't a default value. + + + + + Create a new ParameterSymbol with everything the same except the owner. Used for property + accessor methods, for example. + + + Note: This is only implemented for those subclasses (e.g., SourceParameterSymbol) for which it + is required. Thus, the base implementation throws an exception instead of being MustOverride. + + + + + The index of the parameter which CallerArgumentExpressionAttribute points to. + + + Returns -1 if there is no valid CallerArgumentExpressionAttribute. + The situation is different for reduced extension method parameters, where a value + of -2 is returned for no valid attribute, -1 for 'Me' parameter, and the reduced index (i.e, the original index minus 1) otherwise. + + + + + Represents a property. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Source: Returns False; properties from source cannot return by reference. + Metadata: Returns whether or not this property returns by reference. + + + + + Gets the type of the property. + + + + + Returns the list of custom modifiers, if any, associated with the type of the property. + + + + + Custom modifiers associated with the ref modifier, or an empty array if there are none. + + + + + Gets the parameters of this property. If this property has no parameters, returns + an empty list. + + + + + Optimization: in many cases, the parameter count (fast) is sufficient and we + don't need the actual parameter symbols (slow). + + + The default implementation is always correct, but may be unnecessarily slow. + + + + + True if the property itself Is excluded from code coverage instrumentation. + True for source properties marked with . + + + + + True if this symbol has a special name (metadata flag SpecialName is set). + + + + + Returns true if this property is a default property. + + + + + Returns true if this is a read-only property; i.e., has no set accessor. + + + + + Indicates if the property can be read, which means this + type overrides OR inherits a getter for this property. + + + + + Returns true if this is a write-only property; i.e., has no get accessor. + + + + + Indicates if the property has a Set accessor. + + + + + Indicates if the property can be written into, which means this + property has a setter or it is a getter only autoproperty accessed + in a corresponding constructor or initializer. + If the setter is init-only, we also check that it is accessed in a constructor + on Me/MyBase/MyClass or is a target of a member initializer in an object member + initializer. + + + + + Gets the associated "get" method for this property. If this property + has no get accessor, returns Nothing. + + + + + Retrieves Get method for this property or 'most derived' Get method from closest + overridden property if such property exists. + + NOTE: It is not possible in VB, but possible in other languages (for example in C#) to + override read-write property and provide override only for setter, thus inheriting + getter's implementation. This method will find the Get method from the most-derived + overridden property in this case + + + + + Gets the associated "set" method for this property. If this property + has no set accessor, returns Nothing. + + + + + Retrieves Set method for this property or 'most derived' Set method from closest + overridden property if such property exists. + + NOTE: It is not possible in VB, but possible in other languages (for example in C#) to + override read-write property and provide override only for getter, thus inheriting + setter's implementation. This method will find the Set method from the most-derived + overridden property in this case + + + + + Backing field of the property, or Nothing if the property doesn't have any. + + + Properties imported from metadata return Nothing. + + + + + Gets the attributes on event's associated field, if any. + + Returns an array of or an empty array if there are no attributes. + + Only WithEvent property may have any attributes applied on its backing field. + + + + + Returns true if this property hides a base property by name and signature. + The equivalent of the "hidebysig" flag in metadata. + + + This property should not be confused with general property overloading in Visual Basic, and is not directly related. + This property will only return true if this method hides a base property by name and signature (Overloads keyword). + + + + + If this property overrides another property (because it both had the Overrides modifier + and there correctly was a property to override), returns the overridden property. + + + + + Helper method for accessors to get the overridden accessor methods. Should only be called by the + accessor method symbols. + + True to get overridden getters, False to get overridden setters + All the accessors of the given kind implemented by this property. + + + + Returns interface properties explicitly implemented by this property. + + + + + Get the "this" parameter for this property. This is only valid for source fields. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Returns true if this property is an auto-created WithEvents property that + takes place of a field member when the field is marked as WithEvents. + + + + + Is this a property of a tuple type? + + + + + If this is a property of a tuple type, return corresponding underlying property from the + tuple underlying type. Otherwise, Nothing. + + + + + Clone the property parameters for the accessor method. The + parameters are cloned (rather than referenced from the property) + since the ContainingSymbol needs to be set to the accessor. + + + + + Is this an auto-generated property of a group class? + + + + + Represents an assembly built by compiler. + + + + + + A Compilation the assembly is created for. + + + + + + Assembly's identity. + + + + + + A list of modules the assembly consists of. + The first (index=0) module is a SourceModuleSymbol, which is a primary module, the rest are net-modules. + + + + + Indices of duplicate assembly attributes, i.e. attributes that bind to the same constructor and have identical arguments, that must not be emitted. + + + These indices correspond to the merged assembly attributes from source and added net modules, i.e. attributes returned by method. + + + + + This override is essential - it's a base case of the recursive definition. + + + + + Gets unique source assembly attributes that should be emitted, + i.e. filters out attributes with errors and duplicate attributes. + + + + + Returns true if the assembly attribute at the given index is a duplicate assembly attribute that must not be emitted. + Duplicate assembly attributes are attributes that bind to the same constructor and have identical arguments. + + + This method must be invoked only after all the assembly attributes have been bound. + + + + + Returns a bag of netmodule assembly attributes and data decoded from well-known attributes. Returns null if there are no attributes applied on the symbol. + + + Forces binding and decoding of attributes. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a NotOverridable method. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Returns data decoded from source assembly attributes or null if there are none. + + + Forces binding and decoding of attributes. + TODO: We should replace methods GetSourceDecodedWellKnownAttributeData and GetNetModuleDecodedWellKnownAttributeData with + a single method GetDecodedWellKnownAttributeData, which merges DecodedWellKnownAttributeData from source and netmodule attributes. + + + + + + This represents what the user claimed in source through the AssemblyFlagsAttribute. + It may be modified as emitted due to presence or absence of the public key. + + + + + Get assembly level declaration errors. + + + + + True if internals are exposed at all. + + + Forces binding and decoding of attributes. + This property shouldn't be accessed during binding as it can lead to attribute binding cycle. + + + + + We may synthesize some well-known attributes for this assembly symbol. However, at synthesis time, it is + too late to report diagnostics or cancel the emit. Instead, we check for use site errors on the types and members + we know we'll need at synthesis time. + + + + + Represents a compiler generated field used to implement static locals. + There are two kind of fields: the one, that holds the value, and the one, that holds initialization "flag". + + + + + Represents a type parameter in a generic type or generic method. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Gets the ordinal order of this type parameter. The first type parameter has ordinal zero. + + + + + Get the types that were directly specified as constraints on this type parameter. + Duplicates and cycles are removed, although the collection may include redundant + constraints where one constraint is a base type of another. + + + + + Returns whether the parameterless constructor constraint was specified. + + + + + The method that declares this type parameter + + + + + The type that declares this type parameter + + + + + Called by ConstraintTypes and Interfaces + to allow derived classes to ensure constraints within the containing + type or method are resolved in a consistent order, regardless of the + order the callers query individual type parameters. + + + + + Helper method to force type parameter constraints to be resolved. + + + + + Get all constraints, with optional source location for each. This method + is provided for constraint checking only, and should only be invoked + for SourceTypeParameterSymbol or ErrorTypeParameterSymbol directly. + There is currently no need to invoke this method for PETypeParameterSymbol. + + + + + Resolve constraints, binding and checking for conflicts as necessary. This is an + internal method for resolving dependent sets of constraints and handling cycles. + It will be called indirectly for core implementations (SourceTypeParameterSymbol and + PETypeParameterSymbol) as a result of accessing constraint properties on this class. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + If this is a type parameter of a reduced extension method, gets the type parameter definition that + this type parameter was reduced from. Otherwise, returns Nothing. + + + + + Return an array of substituted type parameters with duplicates removed. + + + + + Symbol representing a using alias appearing in a compilation unit. + Generally speaking, these symbols do not appear in the set of symbols reachable + from the unnamed namespace declaration. In other words, when a using alias is used in a + program, it acts as a transparent alias, and the symbol to which it is an alias is used in + the symbol table. For example, in the source code +
+ Imports o = System.Object
+ Namespace NS
+     partial class C : Inherits o : End Class
+     partial class C : Inherits Object : End Class
+     partial class C : Inherits System.Object : End Class
+ End Namespace
+ 
+ 
+ all three declarations for class C are equivalent and result in the same symbol table object for C. + However, these alias symbols do appear in the results of certain SemanticModel APIs. + Specifically, for the base clause of the first of C's class declarations, the + following APIs may produce a result that contains an AliasSymbol: +
+     SemanticInfo SemanticModel.GetSemanticInfo(ExpressionSyntax expression);
+     SemanticInfo SemanticModel.BindExpression(SyntaxNode location, ExpressionSyntax expression);
+     SemanticInfo SemanticModel.BindType(SyntaxNode location, ExpressionSyntax type);
+     SemanticInfo SemanticModel.BindNamespaceOrType(SyntaxNode location, ExpressionSyntax type);
+ 
+ Also, the following are affected if container=Nothing (and, for the latter, when container=Nothing or arity=0): +
+     Public Function LookupNames(position As Integer, Optional container As NamespaceOrTypeSymbol = Nothing, Optional options As LookupOptions = LookupOptions.Default, Optional results As List(Of String) = Nothing) As IList(Of String)
+     Public Function LookupSymbols(position As Integer,
+                                  Optional container As NamespaceOrTypeSymbol = Nothing,
+                                  Optional name As String = Nothing,
+                                  Optional arity As Integer? = Nothing,
+                                  Optional options As LookupOptions = LookupOptions.Default,
+                                  Optional results As List(Of Symbol) = Nothing) As IList(Of Symbol)
+ 
+
+
+ + + The alias name. + + + + + Gets the kind of this symbol. + + + + + + Gets the for the + namespace or type referenced by the alias. + + + + + Gets the locations where this symbol was originally defined. + + + + + Get the syntax node(s) where this symbol was declared in source. + + + The syntax node(s) that declared the symbol. + + + To go the opposite direction (from syntax node to symbol), see . + + + + + Returns true if this symbol was declared to override a base class members and was + also restricted from further overriding; i.e., declared with the "NotOverridable" + modifier. Never returns true for types. + + False + + + + Returns true if this symbol was declared as requiring an override; i.e., declared + with the "MustOverride" modifier. Never returns true for types. + + False + + + + Returns true if this symbol was declared to override a base class members; i.e., declared + with the "Overrides" modifier. Still returns true if the members was declared + to override something, but (erroneously) no member to override exists. + + False + + + + Returns true if this member is overridable, has an implementation, + and does not override a base class member; i.e., declared with the "Overridable" + modifier. Does not return true for members declared as MustOverride or Overrides. + + False + + + + Returns true if this symbol is "shared"; i.e., declared with the "Shared" + modifier or implicitly always shared. + + False + + + + Get this accessibility that was declared on this symbol. For symbols that do + not have accessibility declared on them, returns NotApplicable. + + + + + + Get the symbol that logically contains this symbol. + + + Using aliases in VB are always at the top + level within a compilation unit, within the [Global] namespace declaration. We + return that as the "containing" symbol, even though the alias isn't a member of the + namespace as such. + + + + + Determines whether the specified object is equal to the current object. + + + The object to compare with the current object. + + + + + Returns a hash code for the current object. + + + + + Describes anonymous type/delegate in terms of fields/parameters + + + + Anonymous type/delegate location + + + Anonymous type fields + + + + Anonymous type descriptor Key + + The key is being used to separate anonymous type templates, for example in an anonymous type + symbol cache. The type descriptors with the same keys are supposed to map to 'the same' anonymous + type template in terms of the same generic type being used for their implementation. + + + + Anonymous type is implicitly declared + + + Anonymous delegate parameters, including one for return type + + + + This is ONLY used for debugging purpose + + + + + Performs internal substitution of types in anonymous type descriptor fields and returns True + if any of the fields was changed, in which case a new descriptor is returned in newDescriptor + + + + + Describes anonymous type field in terms of its name, type and other attributes. + Or describes anonymous delegate parameter, including "return" parameter, in terms + of its name, type and other attributes. + + + + Anonymous type field/parameter name, not nothing and not empty + + + Location of the field + + + Anonymous type field/parameter type, must be not nothing when + the field is passed to anonymous type descriptor + + + + Anonymous type field/parameter type, may be nothing when field descriptor is created, + must be assigned before passing the descriptor to anonymous type descriptor. + Once assigned, is considered to be 'sealed'. + + + + Anonymous type field is declared as a 'Key' field + + + + Does this describe a ByRef parameter of an Anonymous Delegate type + + + + + This is ONLY used for debugging purpose + + + + + Module implements Dev11 class CRC32 used in anonymous type GetHashCode implementation + See [...\Language\Shared\crc32.cpp] for details + + + + + This is actually calculating the reverse CRC + computing the reverse CRC of 0 gives the table entry above + + + + + Represents a .NET assembly. An assembly consists of one or more modules. + + + + + The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. + The value is provided by ReferenceManager and must not be modified. For SourceAssemblySymbol, non-missing + coreLibrary must match one of the referenced assemblies returned by GetReferencedAssemblySymbols() method of + the main module. If there is no existing assembly that can be used as a source for the primitive types, + the value is a Compilation.MissingCorLibrary. + + + + + The system assembly, which provides primitive types like Object, String, etc., e.g. mscorlib.dll. + The value is a MissingAssemblySymbol if none of the referenced assemblies can be used as a source for the + primitive types and the owning assembly cannot be used as the source too. Otherwise, it is one of + the referenced assemblies returned by GetReferencedAssemblySymbols() method or the owning assembly. + + + + + A helper method for ReferenceManager to set the system assembly, which provides primitive + types like Object, String, etc., e.g. mscorlib.dll. + + + + + + Simple name of the assembly. + + + This is equivalent to ., but may be + much faster to retrieve for source code assemblies, since it does not require binding the assembly-level + attributes that contain the version number and other assembly information. + + + + + True if the assembly contains interactive code. + + + + + If this symbol represents a metadata assembly returns the underlying . + + Otherwise, this returns . + + + + + Get the name of this assembly. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + + Gets a read-only list of all the modules in this assembly. (There must be at least one.) The first one is the main module + that holds the assembly manifest. + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Given a namespace symbol, returns the corresponding assembly specific namespace symbol + + + + + Does this symbol represent a missing assembly. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name with generic name mangling. + + + Take forwarded types into account. + + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. Detect cycles during lookup. + + + Full type name, possibly with generic name mangling. + + + List of assemblies lookup has already visited (since type forwarding can introduce cycles). + + + Take forwarded types into account. + + + + + Returns the type symbol for a forwarded type based its canonical CLR metadata name. + The name should refer to a non-nested type. If type with this name Is Not forwarded, + null Is returned. + + + + + Look up the given metadata type, if it Is forwarded. + + + + + Look up the given metadata type, if it is forwarded. + + + + + Lookup declaration for predefined CorLib type in this Assembly. Only valid if this + assembly is the Cor Library + + + + + + + + Register declaration of predefined CorLib type in this Assembly. + + + + + + Continue looking for declaration of predefined CorLib type in this Assembly + while symbols for new type declarations are constructed. + + + + + Figure out if the target runtime supports default interface implementation. + + + + + Return an array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by previous compilation referencing this assembly. + + + + + + Return an array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Returns true and a string from the first GuidAttribute on the assembly, + the string might be null or an invalid guid representation. False, + if there is no GuidAttribute with string argument. + + + + + An empty list means there was no IVT attribute with matching . + An IVT attribute without a public key setting is represented by an entry that is empty in the returned list + + + + + + + + Get symbol for predefined type from Cor Library used by this assembly. + + + The symbol for the pre-defined type or Nothing if the type is not defined in the core library + + + + + The NamedTypeSymbol for the .NET System.Object type, which could have a TypeKind of + Error if there was no COR Library in a compilation using the assembly. + + + + + Get symbol for predefined type from Cor Library used by this assembly. + + + + + + + + Lookup a type within the assembly using its canonical CLR metadata name (names are compared case-sensitively). + + + + + Symbol for the type or null if type cannot be found or is ambiguous. + + + + + Lookup a type within the assembly using its canonical CLR metadata name (names are compared case-sensitively). + + + + If search within assembly fails, lookup in assemblies referenced by the primary module. + For source assembly, this is equivalent to all assembly references given to compilation. + + + Extra restrictions apply when searching for a well-known type. In particular, the type must be public. + + + While resolving the name, consider only types following CLS-compliant generic type names and arity encoding (ECMA-335, section 10.7.2). + I.e. arity is inferred from the name and matching type must have the same emitted name and arity. + + + When set, any duplicate coming from corlib is ignored. + + + In cases a type could not be found because of ambiguity, we return two of the candidates that caused the ambiguity. + + + + + + Lookup a top level type within the assembly or one of the assemblies referenced by the primary module, + names are compared case-sensitively. In case of ambiguity, type from this assembly wins, + otherwise Nothing is returned. + + + Symbol for the type or Nothing if type cannot be found or ambiguous. + + + + + If this property returns false, it is certain that there are no extension + methods (from language perspective) inside this assembly. If this property returns true, + it is highly likely (but not certain) that this type contains extension methods. + This property allows the search for extension methods to be narrowed much more quickly. + + !!! Note that this property can mutate during lifetime of the symbol !!! + !!! from True to False, as we learn more about the assembly. !!! + + + + + Lookup member declaration in predefined CorLib type used by this Assembly. + + + + + Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this + assembly is the Cor Library + + + + + Class to represent custom attributes attached to symbols. + + + + + The attribute class. + + + + + The constructor on the attribute class. + + + + + Constructor arguments on the attribute. + + + + + Named (property value) arguments on the attribute. + + + + + Matches an attribute by metadata namespace, metadata type name. Does not load the type symbol for + the attribute. + + + + True if the attribute data matches. + + + + Matches an attribute by metadata namespace, metadata type name and metadata signature. Does not load the + type symbol for the attribute. + + Attribute to match. + + An index of the target constructor signature in signatures array, + -1 if this is not the target attribute. + + Matching an attribute by name does not load the attribute class. + + + + This subclass of MetadataDecoder is specifically for finding + method symbols corresponding to method MemberRefs. The parent + implementation is unsuitable because it requires a PEMethodSymbol + for context when decoding method type parameters and no such + context is available because it is precisely what we are trying + to find. Since we know in advance that there will be no context + and that signatures decoded with this class will only be used + for comparison (when searching through the methods of a known + TypeSymbol), we can return indexed type parameters instead. + + + + + We know that we'll never have a method context because that's what we're + trying to find. Instead, just return an indexed type parameter that will + make comparison easier. + + + + + + + This override can handle non-PE types. + + + + + Search through the members of the type symbol to find the method that matches a particular signature. + + A MemberRef handle that can be used to obtain the name and signature of the method + True to only return a method. + The matching method symbol, or null if the inputs do not correspond to a valid method. + + + + Helper class to resolve metadata tokens and signatures. + + + + + Type context for resolving generic type arguments. + + + + + Method context for resolving generic method type arguments. + + + + + Lookup a type defined in referenced assembly. + + + + + Lookup a type defined in a module of a multi-module assembly. + + + + + Lookup a type defined in this module. + This method will be called only if the type we are + looking for hasn't been loaded yet. Otherwise, MetadataDecoder + would have found the type in TypeDefRowIdToTypeMap based on its + TypeDef row id. + + + + + Perform a check whether the type or at least one of its generic arguments + is defined in the specified assemblies. The check is performed recursively. + + + + + Find canonical type for NoPia embedded type. + + + Symbol for the canonical type or an ErrorTypeSymbol. Never returns null. + + + + + Represents an assembly imported from a PE. + + + + + + An Assembly object providing metadata for the assembly. + + + + + + A MetadataDocumentationProvider providing XML documentation for this assembly. + + + + + The list of contained PEModuleSymbol objects. + The list doesn't use type ReadOnlyCollection(Of PEModuleSymbol) so that we + can return it from Modules property as is. + + + + + + An array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by a compilation referencing this assembly. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + An array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Look up the assemblies to which the given metadata type Is forwarded. + + + Pass true to look up fullName case-insensitively. WARNING: more expensive. + Returns the actual casing of the matching name. + + The assemblies to which the given type Is forwarded Or null, if there isn't one. + + + The returned assemblies may also forward the type. + + + + + This is for perf, not for correctness. + + + + + The class to represent all events imported from a PE/module. + + + + + This is for perf, not for correctness. + + + + + The class to represent all fields imported from a PE/module. + + + + + This is for perf, not for correctness. + + + + + The module containing the namespace. + + + + + + This is for perf, not for correctness. + + + + + The class to represent all methods imported from a PE/module. + + + + + A single field to hold optional auxiliary data. + In many scenarios it is possible to avoid allocating this, thus saving total space in . + Even for lazily-computed values, it may be possible to avoid allocating if + the computed value is a well-known "empty" value. In this case, bits in are used + to indicate that the lazy values have been computed and, if is null, then + the "empty" value should be inferred. + + + + + Holds infrequently accessed fields. See for an explanation. + + + + + Associate the method with a particular property. Returns + false if the method is already associated with a property or event. + + + + + Associate the method with a particular event. Returns + false if the method is already associated with a property or event. + + + + + This is for perf, not for correctness. + + + + + Represents a net-module imported from a PE. Can be a primary module of an assembly. + + + + + + Owning AssemblySymbol. This can be a PEAssemblySymbol or a SourceAssemblySymbol. + + + + + + A Module object providing metadata. + + + + + + Global namespace. + + + + + + Cache the symbol for well-known type System.Type because we use it frequently + (for attributes). + + + + + The same value as ConcurrentDictionary.DEFAULT_CAPACITY + + + + + This is a map from TypeDef handle to the target . + It is used by to speed up type reference resolution + for metadata coming from this module. The map is lazily populated + as we load types from the module. + + + + + This is a map from TypeRef row id to the target . + It is used by to speed-up type reference resolution + for metadata coming from this module. The map is lazily populated + by as we resolve TypeRefs from the module. + + + + + This is for perf, not for correctness. + + + + + Returns a tuple of the assemblies this module forwards the given type to. + + Type to look up. + Pass true to look up fullName case-insensitively. WARNING: more expensive. + Returns the actual casing of the matching name. + A tuple of the forwarded to assemblies. + + The returned assemblies may also forward the type. + + + + + The class to represent all types imported from a PE/module. + + + + + + A map of types immediately contained within this type + grouped by their name (case-insensitively). + + + + + A set of all the names of the members in this type. + + + + + A map of members immediately contained within this type + grouped by their name (case-insensitively). + + + + + + Lazily initialized by TypeKind property. + Using Integer type to make sure read/write operations are atomic. + + + + + + Some simple sanity checks if a property can actually be a withevents property + + + + + Return true if the type parameters specified on the nested type (Me), + that represent the corresponding type parameters on the containing + types, in fact match the actual type parameters on the containing types. + + + + + Force all declaration errors to be generated. + + + + + This is for perf, not for correctness. + + + + + Returns the index of the first member of the specific kind. + Returns the number of members if not found. + + + + + Returns all members of the specific kind, starting at the optional offset. + Members of the same kind are assumed to be contiguous. + + + + + The class to represent top level types imported from a PE/module. + + + + + The base class to represent a namespace imported from a PE/module. + Namespaces that differ only by casing in name are merged. + + + + + A map of namespaces immediately contained within this namespace + grouped by their name (case-insensitively). + + + + + A map of types immediately contained within this namespace + grouped by their name (case-insensitively). + + + + + A map of NoPia local types immediately contained in this assembly. + Maps fully-qualified type name to the row id. + + + + + Returns PEModuleSymbol containing the namespace. + + PEModuleSymbol containing the namespace. + + + + Initializes m_Namespaces and m_Types maps with information about + namespaces and types immediately contained within this namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids must be grouped by the + fully-qualified namespace name in case-sensitive manner. There could be multiple groups + for each fully-qualified namespace name. The groups must be sorted by their key in + case-insensitive manner. Empty string must be used as namespace name for types + immediately contained within Global namespace. Therefore, all types in THIS namespace, + if any, must be in several first IGroupings. + + + + + Create symbols for nested namespaces and initialize m_Namespaces map. + + + + + Create symbols for nested types and initialize m_Types map. + + + + + For test purposes only. + + + + + Return the set of types that should be checked for presence of extension methods in order to build + a map of extension methods for the namespace. + + + + + The class to represent all, but Global, namespaces imported from a PE/module. + Namespaces that differ only by casing in name are merged. + + + + + + The parent namespace. There is always one, Global namespace contains all + top level namespaces. + + + + + + The name of the namespace. + + + + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids are grouped by the + fully-qualified namespace name in case-sensitive manner. There could be multiple groups + for each fully-qualified namespace name. The groups are sorted by their key + in case-insensitive manner. Empty string is used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + will be in several first IGroupings. + + This member is initialized by constructor and is cleared in EnsureAllMembersLoaded + as soon as symbols for children are created. + + + + + + Constructor. + + + Name of the namespace, must be not empty. + + + Containing namespace. + + + The sequence of groups of TypeDef row ids for types contained within the namespace, + recursively including those from nested namespaces. The row ids are grouped by the + fully-qualified namespace name in case-sensitive manner. There could be multiple groups + for each fully-qualified namespace name. The groups are sorted by their key + in case-insensitive manner. Empty string is used as namespace name for types + immediately contained within Global namespace. Therefore, all types in this namespace, if any, + will be in several first IGroupings. + + + + + + Calculate declared accessibility of most accessible type within this namespace or within a containing namespace recursively. + Expected to be called at most once per namespace symbol, unless there is a race condition. + + Valid return values: + Friend, + Public, + NotApplicable - if there are no types. + + + + + This is for perf, not for correctness. + + + + + The class to represent all types imported from a PE/module. + + + + + + The index of a CallerArgumentExpression. The value means uninitialized, -1 means + Not found. Otherwise, the index of the CallerArgumentExpression. + + + + + Attributes filtered out from m_lazyCustomAttributes, ParamArray, etc. + + + + + This is for perf, not for correctness. + + + + + The class to represent all properties imported from a PE/module. + + + + + Marks property as definitely IsWithEvents or not. + The effects of this change cannot be undone. + Will have no effect if someone already asked if property is IsWithEvents (and will assert since it is not supposed to happen). + + + + + For the property to be considered valid, accessor signatures must be consistent + with each other, and accessor signatures must be consistent with the property + signature ignoring ByRef. These requirements are stricter than Dev11 which + allows many inconsistencies including different numbers of parameters. + + + + + This is for perf, not for correctness. + + + + + The class to represent all generic type parameters imported from a PE/module. + + + + + + First error calculating bounds. + + + + + This is for perf, not for correctness. + + + + + Tuples can be represented using tuple syntax and be given + names. However, the underlying representation for tuples unifies + to a single underlying tuple type, System.ValueTuple. Since the + names aren't part of the underlying tuple type they have to be + recorded somewhere else. + + Roslyn records tuple names in an attribute: the + TupleElementNamesAttribute. The attribute contains a single string + array which records the names of the tuple elements in a pre-order + depth-first traversal. If the type contains nested parameters, + they are also recorded in a pre-order depth-first traversal. + + can be used to extract tuple names and types from metadata and create + a with attached names. + + + For instance, a method returning a tuple + + + Function M() As (x As Integer, y As Integer) + + + will be encoded using an attribute on the return type as follows + + + < return: TupleElementNamesAttribute({ "x", "y" }) > + Function M() As System.ValueTuple(Of Integer, Integer) + + + + + For nested type parameters, we expand the tuple names in a pre-order + traversal: + + + Class C + Inherits BaseType(Of (e3 As (e1 As Integer, e2 As Integer), e4 As Integer)) + + + becomes + + + < TupleElementNamesAttribute({ "e3", "e4", "e1", "e2" }) > + Class C + Inherits BaseType(of System.ValueTuple(of System.ValueTuple(Of Integer, Integer), Integer) + + + + + + + Represents a retargeting custom attribute + + + + + Gets the retargeted System.Type type symbol. + + Target symbol on which this attribute is applied. + Retargeted System.Type type symbol. + + + + Essentially this is a wrapper around another AssemblySymbol that is responsible for retargeting + symbols from one assembly to another. It can retarget symbols for multiple assemblies at the same time. + + For example, compilation C1 references v1 of Lib.dll and compilation C2 references C1 and v2 of Lib.dll. + In this case, in context of C2, all types from v1 of Lib.dll leaking through C1 (through method + signatures, etc.) must be retargeted to the types from v2 of Lib.dll. This is what + RetargetingAssemblySymbol is responsible for. In the example above, modules in C2 do not + reference C1.m_AssemblySymbol, but reference a special RetargetingAssemblySymbol created for + C1 by ReferenceManager. + + Here is how retargeting is implemented in general: + - Symbols from underlying assembly are substituted with retargeting symbols. + - Symbols from referenced assemblies that can be reused as is (i.e. doesn't have to be retargeted) are + used as is. + - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. + + + + + The underlying AssemblySymbol, it leaks symbols that should be retargeted. + This cannot be an instance of RetargetingAssemblySymbol. + + + + + The list of contained ModuleSymbol objects. First item in the list + is RetargetingModuleSymbol that wraps corresponding SourceModuleSymbol + from m_UnderlyingAssembly.Modules list, the rest are PEModuleSymbols for + added modules. + + + + + An array of assemblies involved in canonical type resolution of + NoPia local types defined within this assembly. In other words, all + references used by a compilation referencing this assembly. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + An array of assemblies referenced by this assembly, which are linked (/l-ed) by + each compilation that is using this AssemblySymbol as a reference. + If this AssemblySymbol is linked too, it will be in this array too. + The array and its content is provided by ReferenceManager and must not be modified. + + + + + A map from a local NoPia type to corresponding canonical type. + + + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + Retargeted custom attributes + + + + + + Constructor. + + + The underlying AssemblySymbol, cannot be an instance of RetargetingAssemblySymbol. + + + Assembly is /l-ed by compilation that is using it as a reference. + + + + + The underlying AssemblySymbol. + This cannot be an instance of RetargetingAssemblySymbol. + + + + + + + + Lookup declaration for FX type in this Assembly. + + + + + + + + This is for perf, not for correctness. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying EventSymbol, cannot be another RetargetingEventSymbol. + + + + + Retargeted custom attributes + + + + + + This is for perf, not for correctness. + + + + + Represents a field in a RetargetingModuleSymbol. Essentially this is a wrapper around + another FieldSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying FieldSymbol, cannot be another RetargetingFieldSymbol. + + + + + Retargeted custom attributes + + + + + + This is for perf, not for correctness. + + + + + Represents a method in a RetargetingModuleSymbol. Essentially this is a wrapper around + another MethodSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying MethodSymbol, cannot be another RetargetingMethodSymbol. + + + + + Retargeted custom attributes + + + + + + Retargeted return type attributes + + + + + + This is for perf, not for correctness. + + + + + Represents a primary module of a . Essentially this is a wrapper around + another that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + Here is how retargeting is implemented in general: + - Symbols from underlying module are substituted with retargeting symbols. + - Symbols from referenced assemblies that can be reused as is (i.e. don't have to be retargeted) are + used as is. + - Symbols from referenced assemblies that must be retargeted are substituted with result of retargeting. + + + + + Owning . + + + + + The underlying , cannot be another . + + + + + The map that captures information about what assembly should be retargeted + to what assembly. Key is the referenced by the underlying module, + value is the corresponding referenced by this module, and corresponding + retargeting map for symbols. + + + + + Retargeted custom attributes + + + + + Constructor. + + + Owning assembly. + + + Underlying , cannot be another . + + + + + + The underlying , cannot be another . + + + + + A helper method for ReferenceManager to set AssemblySymbols for assemblies + referenced by this module. + + + + + This is for perf, not for correctness. + + + + + Retargeting map from underlying module to this one. + + + + + Retargeting map from underlying module to the retargeting module. + + + + + RetargetingAssemblySymbol owning retargeting module. + + + + + The map that captures information about what assembly should be retargeted + to what assembly. Key is the AssemblySymbol referenced by the underlying module, + value is the corresponding AssemblySymbol referenced by the retargeting module, + and corresponding retargeting map for symbols. + + + + + The underlying ModuleSymbol for the retargeting module. + + + + + Perform a check whether the type or at least one of its generic arguments + is an explicitly defined local type. The check is performed recursively. + + + + + Represents a type of a RetargetingModuleSymbol. Essentially this is a wrapper around + another NamedTypeSymbol that is responsible for retargeting referenced symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying NamedTypeSymbol, cannot be another RetargetingNamedTypeSymbol. + + + + + Retargeted custom attributes + + + + + This method is called directly by a Binder when it uses this type. + + + + + This method is called directly by a Binder when it uses this type. + + + + + Make sure we retarget methods when underlying type checks their viability. + + + + + Force all declaration errors to be generated. + + + + + This is for perf, not for correctness. + + + + + Represents a namespace of a RetargetingModuleSymbol. Essentially this is a wrapper around + another NamespaceSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying NamespaceSymbol, cannot be another RetargetingNamespaceSymbol. + + + + + Calculate declared accessibility of most accessible type within this namespace or within a containing namespace recursively. + Expected to be called at most once per namespace symbol, unless there is a race condition. + + Valid return values: + Friend, + Public, + NotApplicable - if there are no types. + + + + + This method is called directly by a Binder when it uses this module level namespace. + + + + + This method is called when this namespace is part of a merged namespace and we are trying to build + a map of extension methods for the whole merged namespace. + + + + + Make sure we retarget methods when types of the underlying namespace add them to the map. + + + + + This method is called directly by a Binder when it uses this module level namespace. + + + + + Make sure we retarget methods when underlying namespace checks their viability. + + + + + This is for perf, not for correctness. + + + + + Represents a parameter of a RetargetingMethodSymbol. Essentially this is a wrapper around + another ParameterSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + The underlying ParameterSymbol, cannot be another RetargetingParameterSymbol. + + + + + Retargeted custom attributes + + + + + + Owning RetargetingMethodSymbol. + + + + + Owning RetargetingPropertySymbol. + + + + + This is for perf, not for correctness. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying PropertySymbol, cannot be another RetargetingPropertySymbol. + + + + + Retargeted custom attributes + + + + + + This is for perf, not for correctness. + + + + + Represents a type parameter in a RetargetingModuleSymbol. Essentially this is a wrapper around + another TypeParameterSymbol that is responsible for retargeting symbols from one assembly to another. + It can retarget symbols for multiple assemblies at the same time. + + + + + Owning RetargetingModuleSymbol. + + + + + The underlying TypeParameterSymbol, cannot be another RetargetingTypeParameterSymbol. + + + + + This is for perf, not for correctness. + + + + + This method finds an attribute by metadata name and signature. The algorithm for signature matching is similar to the one + in Module.GetTargetAttributeSignatureIndex. Note, the signature matching is limited to primitive types + and System.Type. It will not match an arbitrary signature but it is sufficient to match the signatures of the current set of + well known attributes. + + Attribute to match. + + + + Gets the System.Type type symbol from targetSymbol's containing assembly. + + Target symbol on which this attribute is applied. + System.Type type symbol. + + + + Information decoded from well-known custom attributes applied on an event. + + + + + Information decoded from early well-known custom attributes applied on a method. + + + + + Information decoded from well-known custom attributes applied on a method. + + + + + Information decoded from early well-known custom attributes applied on a parameter. + + + + + Information decoded from early well-known custom attributes applied on a type. + + + + + a link in a dependency chain + it means that "dependent" is dependent on the rest of the chain. + "kind" tells what kind of dependency this is. + + + + + Source types may have dependencies via inheritance or containment + The diagnostics is different in those cases. + + + + + Given base being resolved chain and current type produce the diagnostics + or Nothing if there is no cycle detected + + + + + Detects situations when a type participates in a dependency loop + And generates appropriate diagnostics. + No diagnostics means there was no loop + + + + + if there is a dependency chain from "current" to the "root" + Returning Nothing, means that there is no dependency + Returning Empty, means that root and current are the same and we have a 0-length dependency + Otherwise a dependence chain is formed. + + + + + Verifies that given symbol does not have loops in its inheritance chain + and reports appropriate diagnostics. + + + + + Verifies that given symbol does not have loops in its inheritance hierarchy + and reports appropriate diagnostics. + + + + + A tuple of TypeParameterSymbol and DiagnosticInfo, created for errors + reported from ConstraintsHelper rather than creating Diagnostics directly. + This decouples constraints checking from syntax and Locations, and supports + callers that may want to create Location instances lazily or not at all. + + + + + Helper methods for generic type parameter constraints. There are two sets of methods: one + set for resolving constraint "bounds" (that is, determining the effective base type, interface set, + etc.), and another set for checking for constraint violations in type and method references. + + Bounds are resolved by calling one of the ResolveBounds overloads. Typically bounds are + resolved by each TypeParameterSymbol at, or before, one of the corresponding properties + (BaseType, Interfaces, etc.) is accessed. Resolving bounds may result in errors (cycles, + inconsistent constraints, etc.) and it is the responsibility of the caller to report any such + errors as declaration errors or use-site errors (depending on whether the type parameter + was from source or metadata) and to ensure bounds are resolved for source type parameters + even if the corresponding properties are never accessed directly. + + Constraints are checked by calling one of the CheckConstraints or CheckAllConstraints + overloads for any generic type or method reference from source. In some circumstances, + references are checked at the time the generic type or generic method is bound and constructed + by the Binder. In those case, it is sufficient to call one of the CheckConstraints overloads + since compound types (such as A(Of T).B(Of U) or A(Of B(Of T))) are checked incrementally + as each part is bound. In other cases however, constraint checking needs to be delayed to + prevent cycles where checking constraints requires binding the syntax that is currently + being bound (such as the constraint in Class C(Of T As C(Of T)). In those cases, the caller + must lazily check constraints, and since the types may be compound types, it is necessary + to call CheckAllConstraints. + + + + + Enum used internally by RemoveDirectConstraintConflicts to + track what type constraint has been seen, to report conflicts + between { 'Structure', 'Class', [explicit type] }. The 'New' + constraint does not need to be tracked for those conflicts. + + + + + Return the constraints for the type parameter with any cycles + or conflicting constraints reported as errors and removed. + + + + + Check all generic constraints on the given type and any containing types + (such as A(Of T) in A(Of T).B(Of U)). This includes checking constraints + on generic types within the type (such as B(Of T) in A(Of B(Of T)())). + + + + + Check type parameters for the containing type or method symbol. + The type parameters are assumed to be the original definitions of type + parameters from the containing type or method, and the TypeSubstitution + instance is used for substituting type parameters within the constraints + of those type parameters, so the substitution should map from type + parameters to type arguments. + + + + + Return the most derived type from the set of constraint types on this type + parameter and any type parameter it depends on. Returns Nothing if there + are no concrete constraint types. If there are multiple constraints, returns + the most derived, ignoring any subsequent constraints that are neither + more or less derived. This method assumes there are no constraint cycles. + + + + + Return the most derived class type from the set of constraint types on this type + parameter and any type parameter it depends on. Returns Nothing if there are + no concrete constraint types. If there are multiple constraints, returns the most + derived, ignoring any subsequent constraints that are neither more or less derived. + This method assumes there are no constraint cycles. Unlike GetBaseConstraintType, + this method will always return a NamedTypeSymbol representing a class: returning + System.ValueType for value types, System.Array for arrays, and System.Enum for enums. + + + + + Populate the collection with all constraints for the type parameter, traversing + any constraints that are also type parameters. The result is a collection of type + and flag constraints, with no type parameter references. This method assumes + there are no constraint cycles. + + + + + A tuple of type parameter and constraint type. + + + + + Return true if the class type has a public parameterless constructor. + + + + + Return true if the constraints collection contains the given type constraint. + + + + + True if the syntax tree is an embedded syntax tree + + + + + Manages symbols from automatically embedded syntax trees. + + + + Automatically embedded symbols (types, methods and fields) used in the current compilation + + + + Non-0 indicates that the collection of referenced symbols is sealed + and so no new symbols are supposed to be added. + + + + + True if StandardModuleAttribute was used in the current compilation + + + + + Marks StandardModuleAttributeReference type as being references in the + current compilation. This method is to be used when a new type symbol for a + module is being created; we cannot pass the actual StandardModuleAttribute + type symbol because the symbol table is being constructed and calling + Compilation.GetWellKnownType(...) will cause infinite recursion. It does + not seem reasonable to special case this in symbol creation, so we just + mark StandardModuleAttribute attribute as referenced and then add + the actual symbol when MarkAllDeferredSymbols(...) is called. + + + + + Mark all deferred types as referenced + + + + + Returns True if any embedded symbols are referenced. + + WARNING: the referenced symbols collection may not be sealed yet!!! + + + + + Makes a snapshot of the current set of referenced symbols filtered by, + the set of symbols provided; may be called before the referenced symbol + collection is sealed. + + + + + Checks if the embedded symbol provided is in the collection and adds it + into collection if not. + + See description of AddReferencedSymbolWithDependents for more details of how + it actually works. + + + + + Returns True if the embedded symbol is known to be referenced in the current compilation. + + + + + Seals the collection of referenced symbols, all *new* symbols passed + to SpawnSymbolCollection(...) will cause assert and be ignored. + + + + + Checks if the embedded symbol provided is present in the 'allSymbols' and if not + adds it into 'allSymbols' as well as to the collection of referenced symbols + managed by this manager. Also adds all the 'dependent' symbols, i.e. symbols + which must also be marked as referenced if 'symbol' is referenced. + + NOTE that when a new embedded symbol is being added to the collection of referenced + symbols it should be added along with all the 'dependent' symbols. For example, if + we add a method symbol (T1.M1) we should ensure the containing type symbol (T1) is + added too, as well as its constructor (T1..ctor) and maybe attribute(s) (Attr1) set + on T1 and their constructors/fields (Attr1..ctor), etc... + + All dependent symbols must be added in the current thread not depending on + the other concurrent threads and avoiding possible race. Thus, let's suppose we have + the following dependencies: + + T1.M1 -> { T1, T1..ctor, Attr1, Attr1..ctor, ... } + + we cannot just check if T1.M1 exists in the collection of referenced symbols and not + add dependent symbols if it does; the reason is that T1.M1 may be added by a concurrent + thread, but its dependencies may not be added by that thread yet. So we need to + calculate all dependencies and try add all the symbols together. + + On the other hand it should be avoided that the method *always* goes through all + the dependencies for each symbol even though it may be definitely known that the symbol + is added in one of the previous operations by *the same thread*. To serve this purpose + the method uses 'allSymbols' collection to actually check whether or not the symbol + is added to the collection. This makes possible to reuse the same collection in several + consequent calls to AddReferencedSymbolWithDependents from the same thread; for example + in case one thread consequently adds lots of symbols, the thread may use the same + 'allSymbols' instance for efficient symbol filtering. + + + + + Lazily created parsed representation of VB Core content + + + + + Returns information about the reason that this type is in error. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + If we believe we know which symbol the user intended, then we should retain that information + in the corresponding error symbol - it can be useful for deciding how to handle the error. + + + + + Return why the candidate symbols were bad. + + + + + When constructing this ErrorTypeSymbol, there may have been symbols that seemed to + be what the user intended, but were unsuitable. For example, a type might have been + inaccessible, or ambiguous. This property returns the possible symbols that the user + might have intended. It will return no symbols if no possible symbols were found. + See the CandidateReason property to understand why the symbols were unsuitable. + + + + + Force all declaration errors to be generated. + + + + + Implementation of IEqualityComparer for EventSymbol, with options for various aspects + to compare. + + + + + This instance is used when trying to determine which implemented interface event is implemented + by a event with an Implements clause, according to VB rules. + This comparer uses event signature that may come from As clause delegate or from a parameter list. + The event signatures are compared without regard to name (including the interface part, if any) + and the return type must match. (NOTE: that return type of implementing event is always Void) + + + + + This instance is used to check whether one event overrides another, according to the VB definition. + + + + + This instance is intended to reflect the definition of signature equality used by the runtime (ECMA 335 Section 8.6.1.6). + It considers type, name, parameters, and custom modifiers. + + + + + This instance is used to compare potential WinRT fake events in type projection. + + FIXME(angocke): This is almost certainly wrong. The semantics of WinRT conflict + comparison should probably match overload resolution (i.e., we should not add a member + to lookup that would result in ambiguity), but this is closer to what Dev12 does. + + The real fix here is to establish a spec for how WinRT conflict comparison should be + performed. Once this is done we should remove these comments. + + + + + An error type symbol with name and diagnostic. More info can be added in the future. + + + + + + Returns information about the reason that this type is in error. + + + + + Represents a field or property initializer. Holds the symbol and the syntax for the initialization. + + + + + The fields or properties being initialized, or Nothing if this represents an executable statement in script code. + We can get into a multiple properties case when multiple WithEvents fields are initialized with As New ... + + + + + A reference to + , + , + , + (top-level statement). + + + + + A sum of widths of spans of all preceding initializers + (instance and static initializers are summed separately, and trivias are not counted). + + + + + Initializer for an executable statement in script code. + + The initializer syntax for the statement. + + + + Initializes a new instance of the structure. + + The field. + The initializer syntax for the field. + + + + Initializes a new instance of the structure. + + + + + Initializes a new instance of the structure. + + The property. + The initializer syntax for the property. + + + + Indexed type parameters are used in place of type parameters for method signatures. There is + a unique mapping from index to a single IndexedTypeParameterSymbol. + + They don't have a containing symbol or locations. + + They do not have constraints, variance, or attributes. + + + + + Create a vector of n dummy type parameters. Always reuses the same type parameter symbol + for the same position. + + + + + + + The base class for potentially constructible (i.e. with known arity) error type symbols + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + An InstanceTypeSymbol is a NamedTypeSymbol that is a pure instance type, where the class + (and any containing classes) have no type substitutions applied. + This class provide shared implementation for types whose definition is (possibly lazily) + constructed from source or metadata. It provides the shared implementation between these two, primarily + the implementation of Construct and InternalSubstituteTypeParameters. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + A [Resume] or [On Error Resume Next] statement. + + + + + A structure used to lexically order symbols. For performance, it's important that this be + a STRUCTURE, and be able to be returned from a symbol without doing any additional allocations (even + if nothing is cached yet.) + + + + + Embedded kind of the tree. + + + + + If -1, symbol is in metadata or embedded or otherwise not it source. + Note that TreeOrdinal is only used for EmbeddedSymbolKind.None trees, thus + negative ordinals of embedded trees do not interfere + + + + + Position within the tree. Doesn't need to exactly match the span returned by Locations, just + be good enough to sort. In other words, we don't need to go to extra work to return the location of the identifier, + just some syntax location is fine. + + Negative value indicates that the structure was not initialized yet, is used for lazy + initializations only along with LexicalSortKey.NotInitialized + + + + + WARNING: Only use this if the location is obtainable without allocating it (even if cached later). E.g., only + if the location object is stored in the constructor of the symbol. + + + + + WARNING: Only use this if the node is obtainable without allocating it (even if cached later). E.g., only + if the node is stored in the constructor of the symbol. In particular, do not call this on the result of a GetSyntax() + call on a SyntaxReference. + + + + + WARNING: Only use this if the token is obtainable without allocating it (even if cached later). E.g., only + if the node is stored in the constructor of the symbol. In particular, do not call this on the result of a GetSyntax() + call on a SyntaxReference. + + + + + Compare two lexical sort keys in a compilation. + + + + + This class provides an easy way to combine a MethodSignatureComparer and a PropertySignatureComparer + to create a unified MemberSignatureComparer (e.g. for use in a HashSet). + + + + + + This instance is used to compare potential WinRT fake members in type projection. + + FIXME(angocke): This is almost certainly wrong. The semantics of WinRT conflict + comparison should probably match overload resolution (i.e., we should not add a member + to lookup that would result in ambiguity), but this is closer to what Dev12 does. + + The real fix here is to establish a spec for how WinRT conflict comparison should be + performed. Once this is done we should remove these comments. + + + + + A MergedNamespaceSymbol represents a namespace that merges the contents of two or more other + namespaces. Any sub-namespaces with the same names are also merged if they have two or more + instances. + + Merged namespaces are used to merged the symbols from multiple metadata modules and the source "module" + into a single symbol tree that represents all the available symbols. The compiler resolves names + against Me merged set of symbols. + + Typically there will not be very many merged namespaces in a Compilation: only the root namespaces and + namespaces that are used in multiple referenced modules. (Microsoft, System, System.Xml, + System.Diagnostics, System.Threading, ...) + + + + + Create a possibly merged namespace symbol representing global namespace on an assembly level. + + + + + Create a possibly merged namespace symbol. If only a single namespace is passed it, it is just returned directly. + If two or more namespaces are passed in, then a new merged namespace is created with the given extent and container. + + The namespace extent to use, IF a merged namespace is created. + The containing namespace to used, IF a merged namespace is created. + One or more namespaces to merged. If just one, then it is returned. + The merged namespace symbol may hold onto the array. + A namespace symbol representing the merged namespace.(of /returns) + + + + Create a possibly merged namespace symbol representing global namespace on a compilation level. + + + + + Create a possibly merged namespace symbol (namespace group). If only a single namespace is passed it, it is just returned directly. + If two or more namespaces are passed in, then a new merged namespace is created + + One or more namespaces to merged. If just one, then it is returned. + The merged namespace symbol may hold onto the array. + A namespace symbol representing the merged namespace.(of /returns) + + + + Create a possibly merged namespace symbol (namespace group). If only a single namespace is passed it, it is just returned directly. + If two or more namespaces are passed in, then a new merged namespace is created with the given extent and container. + + The containing namespace to used, IF a merged namespace is created. + One or more namespaces to merged. If just one, then it is returned. + The merged namespace symbol may hold onto the array. + A namespace symbol representing the merged namespace.(of /returns) + + + + Method that is called from the CachingLookup to lookup the children of a given name. Looks + in all the constituent namespaces. + + + + + Method that is called from the CachingLookup to get all child names. Looks + in all constituent namespaces. + + + + + Calculate declared accessibility of most accessible type within this namespace or within a containing namespace recursively. + Expected to be called at most once per namespace symbol, unless there is a race condition. + + Valid return values: + Friend, + Public, + NotApplicable - if there are no types. + + + + + For test purposes only. + + + + + Returns true if namespace contains types accessible from the target assembly. + + + + + Populate the map with all extension methods declared within this namespace, so that methods from + the same type are grouped together within each bucket. + + + + + Represents source or metadata assembly. + + + + + + An array of cached Cor types defined in this assembly. + Lazily filled by GetSpecialType method. + + + + + + How many Cor types have we cached so far. + + + + + Lookup declaration for predefined CorLib type in this Assembly. Only should be + called if it is know that this is the Cor Library (mscorlib). + + + + + + + + Register declaration of predefined CorLib type in this Assembly. + + + + + + Continue looking for declaration of predefined CorLib type in this Assembly + while symbols for new type declarations are constructed. + + + + + Determine whether this assembly has been granted access to . + Assumes that the public key has been determined. The result will be cached. + + + + + + + + Lazy cache of special members. + Not yet known value is represented by ErrorTypeSymbol.UnknownResultType + + + + + Lookup member declaration in predefined CorLib type in this Assembly. Only valid if this + assembly is the Cor Library + + + + + Helper methods that exist to share code between properties and events. + + + + + One of the methods has more parameters than the other + AND + at least one of the extra parameters is NOT optional + + + + + One of the methods has more parameters than the other + AND at least one of the extra parameters IS optional + OR + there is at least one parameter in one method with optionality (being optional or + required) not equal to that of the matching parameter from the other method + + + + + Taken into consideration only if is set. + + + + + Mismatch in total number of parameters, both required and optional + + + + + + Implementation of IEqualityComparer for MethodSymbols, with options for various aspects + to compare. + + + + + This instance is intended to reflect the definition of signature equality used by the runtime (ECMA 335 Section 8.6.1.6). + It considers return type, name, parameters, calling convention, and custom modifiers. + + + + + This instance is used to compare all aspects. + + + + + This instance is used to compare parameter and return types, including byref. + + + + + This instance is used to compare custom modifiers, parameter and return types, including byref. + + + + + This instance is used to search for methods that have the same signature, return type, + and constraints according to the VisualBasic definition. Custom modifiers are ignored. + + + + + This instance is used to search for methods that have identical signatures in every regard. + + + + + This instance is used to compare potential WinRT fake methods in type projection. + + FIXME(angocke): This is almost certainly wrong. The semantics of WinRT conflict + comparison should probably match overload resolution (i.e., we should not add a member + to lookup that would result in ambiguity), but this is closer to what Dev12 does. + + The real fix here is to establish a spec for how WinRT conflict comparison should be + performed. Once this is done we should remove these comments. + + + + + Returns true if the first set of constraint types + is a subset of the second set. + + + + + Determines if the method can be called with empty parameter list. + + The method. + + + + Determines if the method is partial + + The method + + + + Determines if the method is partial and does NOT have implementation provided + + The method + + + + Is method a user-defined operator. + + + + + Returns a constructed method symbol if 'method' is generic, otherwise just returns 'method' + + + + + A is a special kind of that represents + an assembly that couldn't be found. + + + + + AssemblySymbol to represent missing, for whatever reason, CorLibrary. + The symbol is created by ReferenceManager on as needed basis and is shared by all compilations + with missing CorLibraries. + + + + + An array of cached Cor types defined in this assembly. + Lazily filled by GetDeclaredSpecialType method. + + + + + Lookup declaration for predefined CorLib type in this Assembly. Only should be + called if it is know that this is the Cor Library (mscorlib). + + + + + + A MissingMetadataSymbol is a special kind of ErrorSymbol that represents + a type symbol that was attempted to be read from metadata, but couldn't be + found, because: + a) The metadata file it lives in wasn't referenced + b) The metadata file was referenced, but didn't contain the type + c) The metadata file was referenced, contained the correct outer type, but + didn't contains a nested type in that outer type. + + + + + Represents not nested missing type. + + + + + SpecialType.TypeId + + + + + This is the FULL namespace name (e.g., "System.Collections.Generic") + of the type that couldn't be found. + + + + + Represents nested missing type. + + + + + A is a special kind of that represents + a module that couldn't be found. + + + + + A is a special kind of that represents + a namespace that couldn't be found. + + + + + Represents a module within an assembly. Every assembly contains one or more modules. + + + + + Module's ordinal within containing assembly's Modules array. + 0 - for a source module, etc. + -1 - for a module that doesn't have containing assembly, or has it, but is not part of Modules array. + + + + + Target architecture of the machine. + + + + + Indicates that this PE file makes Win32 calls. See CorPEKind.pe32BitRequired for more information (http://msdn.microsoft.com/en-us/library/ms230275.aspx). + + + + + Returns a NamespaceSymbol representing the global (root) namespace, with + module extent, that can be used to browse all of the symbols defined in this module. + + + + + Returns the containing assembly. Modules are always directly contained by an assembly, + so this property always returns the same as ContainingSymbol. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from ReferencedAssemblies And from ReferencedAssemblySymbols + correspond to each other. + + + + + If this symbol represents a metadata module returns the underlying . + + Otherwise, this returns . + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols + should correspond to each other. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from ReferencedAssemblies And + from ReferencedAssemblySymbols correspond to each other. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from GetReferencedAssemblies and + from GetReferencedAssemblySymbols should correspond to each other. If reference is + not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the + corresponding item. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + A helper method for ReferenceManager to set assembly identities for assemblies + referenced by this module and corresponding AssemblySymbols. + + A description of the assemblies referenced by this module. + + + Source assembly that triggered creation of this module symbol. + For debug purposes only, this assembly symbol should not be persisted within + this module symbol because the module can be shared across multiple source + assemblies. This method will only be called for the first one. + + + + + True if this module has any unified references. + + + + + Returns a unification use-site error (if any) for a symbol contained in this module + that is referring to a specified . + + + If an assembly referenced by this module isn't exactly matching any reference given to compilation + the Assembly Manager might decide to use another reference if it matches except for version + (it unifies the version with the existing reference). + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + Returns true if there is any applied CompilationRelaxationsAttribute assembly attribute for this module. + + + + + Returns true if there is any applied RuntimeCompatibilityAttribute assembly attribute for this module. + + + + + Default char set for contained types, or null if not specified. + + + Determined based upon value specified via applied on this module. + + + + + Given a namespace symbol, returns the corresponding module specific namespace symbol + + + + + Does this symbol represent a missing Module. + + + + + If this property returns false, it is certain that there are no extension + methods (from language perspective) inside this module. If this property returns true, + it is highly likely (but not certain) that this type contains extension methods. + This property allows the search for extension methods to be narrowed much more quickly. + + !!! Note that this property can mutate during lifetime of the symbol !!! + !!! from True to False, as we learn more about the module. !!! + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Safe to call on a null reference. + + + + + Given a name, find a member field or property (ignoring all other members) in a type. + + + + + Given a possibly constructed/specialized generic type, create a symbol + representing an unbound generic type for its definition. + + + + + A NamespaceExtent represents whether a namespace contains types and sub-namespaces from a particular module, + assembly, or merged across all modules (source and metadata) in a particular compilation. + + + + + Returns what kind of extent: Module, Assembly, or Compilation. + + + + + If the Kind is ExtendKind.Module, returns the module symbol that this namespace + encompasses. Otherwise throws InvalidOperationException. + + + + + If the Kind is ExtendKind.Assembly, returns the assembly symbol that this namespace + encompasses. Otherwise throws InvalidOperationException. + + + + + If the Kind is ExtendKind.Compilation, returns the compilation symbol that this namespace + encompasses. Otherwise throws InvalidOperationException. + + + + + Create a NamespaceExtent that represents a given ModuleSymbol. + + + + + Create a NamespaceExtent that represents a given AssemblySymbol. + + + + + Create a NamespaceExtent that represents a given Compilation. + + + + + Represents either a namespace or a type. + + + + + Returns true if this symbol is a namespace. If its not a namespace, it must be a type. + + + + + Returns true if this symbols is a type. Equivalent to Not IsNamespace. + + + + + Get all the members of this symbol. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol. The members may not be in a particular order, and the order + may not be stable from call-to-call. + + An ImmutableArray containing all the members of this symbol. If this symbol has no members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that have a particular name. + + An ImmutableArray containing all the members of this symbol with the given name. If there are + no members with this name, returns an empty ImmutableArray. The result is deterministic (i.e. the same + from call to call and from compilation to compilation). Members of the same kind appear in the result + in the same order in which they appeared at their origin (metadata or source). + Never returns Nothing. + + + + Get all the type members of this symbol. The types may not be in a particular order, and the order + may not be stable from call-to-call. + + An ImmutableArray containing all the type members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns null. + + + + Get all the members of this symbol that are types. + + An ImmutableArray containing all the types that are members of this symbol. If this symbol has no type members, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types that have a particular name, and any arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name. + If this symbol has no type members with this name, + returns an empty ImmutableArray. Never returns Nothing. + + + + Get all the members of this symbol that are types that have a particular name and arity. + + An ImmutableArray containing all the types that are members of this symbol with the given name and arity. + If this symbol has no type members with this name and arity, + returns an empty ImmutableArray. Never returns Nothing. + + + + Returns true if this symbol was declared as requiring an override; i.e., declared + with the "MustOverride" modifier. Never returns true for types. + + + Always returns False. + + + + + Returns true if this symbol was declared to override a base class members and was + also restricted from further overriding; i.e., declared with the "NotOverridable" + modifier. Never returns true for types. + + + Always returns False. + + + + + Returns true if this member is overridable, has an implementation, + and does not override a base class member; i.e., declared with the "Overridable" + modifier. Does not return true for members declared as MustOverride or Overrides. + + + Always returns False. + + + + + Returns true if this symbol was declared to override a base class members; i.e., declared + with the "Overrides" modifier. Still returns true if the members was declared + to override something, but (erroneously) no member to override exists. + + + Always returns False. + + + + + This is a helper method shared between NamedTypeSymbol and NamespaceSymbol. + + Its purpose is to add names of probable extension methods found in membersByName parameter + to nameSet parameter. Method's viability check is delegated to overridable method + AddExtensionMethodLookupSymbolsInfoViabilityCheck, which is overridden by RetargetingNamedtypeSymbol + and RetargetingNamespaceSymbol in order to perform the check on corresponding RetargetingMethodSymbol. + + Returns true if there were extension methods among the members, + regardless whether their names were added into the set. + + + + + Perform extension method viability check within AppendExtensionMethodNames method above. + This method is overridden by RetargetingNamedtypeSymbol and RetargetingNamespaceSymbol in order to + perform the check on corresponding RetargetingMethodSymbol. + + Returns true if the method is viable. + + + + + Finds types or namespaces described by a qualified name. + + Sequence of simple plain names. + A set of namespace or type symbols with given qualified name (might comprise of types with multiple generic arities), + or an empty set if the member can't be found (the qualified name is ambiguous or the symbol doesn't exist). + + + "C.D" matches C.D, C(Of T).D, C(Of S,T).D(Of U), etc. + + + + + A is a special kind of that represents + an assembly that is not missing, i.e. the "real" thing. + + + + + This is a cache similar to the one used by MetaImport::GetTypeByName + in native compiler. The difference is that native compiler pre-populates + the cache when it loads types. Here we are populating the cache only + with things we looked for, so that next time we are looking for the same + thing, the lookup is fast. This cache also takes care of TypeForwarders. + Gives about 8% win on subsequent lookups in some scenarios. + + + + + + The global namespace symbol. Lazily populated on first access. + + + + + Does this symbol represent a missing assembly. + + + + + Gets the merged root namespace that contains all namespaces and types defined in the modules + of this assembly. If there is just one module in this assembly, this property just returns the + GlobalNamespace of that module. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. Detect cycles during lookup. + + + Full type name, possibly with generic name mangling. + + + List of assemblies lookup has already visited (since type forwarding can introduce cycles). + + + Take forwarded types into account. + + + + + For test purposes only. + + + + + For test purposes only. + + + + + A is a special kind of that represents + a module that is not missing, i.e. the "real" thing. + + + + + An array of objects corresponding to assemblies directly referenced by this module. + + + The contents are provided by ReferenceManager and may not be modified. + + + + + Does this symbol represent a missing Module. + + + + + Returns an array of assembly identities for assemblies referenced by this module. + Items at the same position from GetReferencedAssemblies and from GetReferencedAssemblySymbols + should correspond to each other. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + Returns an array of AssemblySymbol objects corresponding to assemblies referenced + by this module. Items at the same position from GetReferencedAssemblies and + from GetReferencedAssemblySymbols should correspond to each other. If reference is + not resolved by compiler, GetReferencedAssemblySymbols returns MissingAssemblySymbol in the + corresponding item. + + The array and its content is provided by ReferenceManager and must not be modified. + + + + + A helper method for ReferenceManager to set assembly identities for assemblies + referenced by this module and corresponding AssemblySymbols. + + + + + Lookup a top level type referenced from metadata, names should be + compared case-sensitively. + + + Full type name, possibly with generic name mangling. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + A NoPiaAmbiguousCanonicalTypeSymbol is a special kind of ErrorSymbol that represents + a NoPia embedded type symbol that was attempted to be substituted with canonical type, + but the canonical type was ambiguous. + + + + + A NoPiaIllegalGenericInstantiationSymbol is a special kind of ErrorSymbol that represents + a generic type instantiation that cannot cross assembly boundaries according to NoPia rules. + + + + + A NoPiaMissingCanonicalTypeSymbol is a special kind of ErrorSymbol that represents + a NoPia embedded type symbol that was attempted to be substituted with canonical type, + but the canonical type couldn't be found. + + + + + Initialize the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be + done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles. + + + + + This method checks to see if the given symbol is Obsolete or if any symbol in the parent hierarchy is Obsolete. + + + True if some symbol in the parent hierarchy is known to be Obsolete. Unknown if any + symbol's Obsoleteness is Unknown. False, if we are certain that no symbol in the parent + hierarchy is Obsolete. + + + + + Create a diagnostic for the given symbol. This could be an error or a warning based on + the ObsoleteAttribute's arguments. + + + + + Groups the information computed by MakeOverriddenMembers. + + + In C# this class also stores hidden members (and is named OverriddenOrHiddenMembersResult). + The way VB warns on hidden members, this did not turn out to be useful. + + Expected to be a member symbol type (e.g. method, property). + + + + The member(s) that are potentially being overridden. This collection only contains + candidates having signature 'exactly' matching the signature of the method/property. + + 'Exact' signature match is defined as 'general' signature match plus NO + mismatches in total number of parameters or optional parameter types. + + See comments on InaccessibleMembers for more details on 'general' signature match. + + + + + The member(s) that are potentially being overridden. This collection only contains + candidates having signature 'generally' matching the signature of the method/property. + + Two signatures 'generally' match if DetailedSignatureCompare (...) returns no + mismatches defined in SymbolComparisonResults.AllMismatches ignoring mismatches + grouped in SymbolComparisonResults.MismatchesForConflictingMethods. + + + + + Members that would be in OverriddenMembers if they were accessible. + + + + + It is not suitable to call this method on a object + associated with a member within substituted type, + should be used instead. + + + + + Represents a namespace. + + + + + For a given namespace in context of a particular Compilation all binders use + either a compilation merged namespace symbol, or a module level namespace symbol + (PE, Source or Retargeting). In order to speed-up lookup of extension methods performed + by a binder, we build and cache a map of all extension methods declared within the namespace + grouped by name (case-insensitively). + + If binder uses compilation merged namespace symbol, the map is built across all underlying + module level namespace symbols, separate maps for underlying namespace symbols are not built. + + If binder uses Retargeting module level namespace symbol, we build the map for the underlying + namespace symbol instead and push all requests through the underlying namespace. + + The map actually stores ImmutableArray(Of MethodSymbol), but we are using ImmutableArray(Of Symbol) + in order to be able to pass the map to a more general API. + + + + + Returns declared accessibility of most accessible type within this namespace or within a containing namespace recursively. + Valid return values: + Friend, + Public, + NotApplicable - if there are no types. + + + + + This is an entry point for the Binder to collect extension methods with the given name + declared within this (compilation merged or module level) namespace, so that methods + from the same type are grouped together. + + A cached map of extension methods is used to optimize the lookup. + + + + + Add names of viable extension methods declared in this (compilation merged or module level) + namespace to nameSet parameter. + + The 'appendThrough' parameter allows RetargetingNamespaceSymbol to delegate majority of the work + to the underlying namespace symbol, but still perform viability check on RetargetingMethodSymbol. + + A cached map of extension methods is used to optimize the operation. + + + + + Build and cache a map of probable extension methods for this namespace. + + + + + An error type symbol to represent a pointer type. + Pointer types are not supported by VB language, but internally + we need to be able to match them in signatures of methods + imported from metadata. + + + + + Represents a preprocessing conditional compilation symbol. + + + + + Implementation of IEqualityComparer for PropertySymbols, with options for various aspects + to compare. + + + + + This instance is intended to reflect the definition of signature equality used by the runtime (ECMA 335 Section 8.6.1.6). + It considers type, name, parameters, and custom modifiers. + + + + + This instance is used to search for properties that have identical signatures in every regard. + + + + + This instance is used to compare potential WinRT fake properties in type projection. + + FIXME(angocke): This is almost certainly wrong. The semantics of WinRT conflict + comparison should probably match overload resolution (i.e., we should not add a member + to lookup that would result in ambiguity), but this is closer to what Dev12 does. + + The real fix here is to establish a spec for how WinRT conflict comparison should be + performed. Once this is done we should remove these comments. + + + + + Determines if the property can be accessed with empty parameter list. + + The property. + + + + Represents a curried extension method definition - first parameter and fixed + type parameters removed. + + + + + If this is an extension method that can be applied to an instance of the given type, + returns the curried method symbol thus formed. Otherwise, returns Nothing. + + + + + Represents type parameter of a curried extension method definition. + + + + + Represents parameter of a curried extension method definition. + + + + + A representation of a method symbol that is intended only to be used for comparison purposes + (esp in MethodSignatureComparer). + + + + + Intended to be used to create ParameterSymbols for a SignatureOnlyMethodSymbol. + + + + + A representation of a property symbol that is intended only to be used for comparison purposes + (esp in PropertySignatureComparer). + + + + + Represents a Lambda parameter for a LambdaSymbol. + + + + + Type parameters in documentation comments are complicated since they sort of act as declarations, + rather than references. Like in the following example: + + + ''' + Class Clazz + ... + + + + + + + We're going to ignore SourceMemberFlags.MethodIsSub and override IsSub explicitly. We do this because + the flags have to be set at construction time, but IsSub depends on IsWindowsRuntimeEvent, which depends + on interface implementations, which we don't want to bind until the member list is complete. (It's probably + okay now (2012/12/17), but it would be very fragile to take a dependency on the exact mechanism by which + interface members are looked up.) + + + + + Bind and validate parameters declared on the accessor. + + + + + sourceMethod has the custom modifiers + + + + + sourceType has the custom modifiers + + + + + Returns True if was modified. + + + + + + Attribute location corresponding to this symbol. + + + Location of an attribute if an explicit location is not specified via attribute target specification syntax. + + + + + Methods, Properties, and Events all have implements clauses and need to handle interface + implementation. This module has helper methods and extensions for sharing by multiple + symbol types. + + + + + + Find the implemented method denoted by "implementedMemberSyntax" that matches implementingSym. + Returns the implemented method, or Nothing if none. + + Also stores into "candidateSymbols" (if not Nothing) and resultKind the symbols and result kind that + should be used for semantic model purposes. + + + + + Does 'implementingSym' match 'implementedSym' well enough to be considered a match for interface implementation? + + + + + Perform additional validate of implementedSym and issue diagnostics. + Return "implementedSym" if the symbol table should record implementedSym as the implemented + symbol (even if diagnostics were issues). Returns Nothing if the code should not treat + implementedSym as the implemented symbol. + + + + + Validate method type parameter constraints. This is handled outside + of ValidateImplementedMember because that method is invoked + while computing the ExplicitInterfaceImplementations value on the + implementing method, but method type parameters rely on the value + of ExplicitInterfaceImplementations to determine constraints correctly. + + + + + Performs interface mapping to determine which symbol in this type or a base type + actually implements a particular interface member. + + MethodSymbol or PropertySymbol or EventSymbol (an interface member). + A non-null member on an interface type. + The type implementing the interface member. + A comparer for comparing signatures of TSymbol according to metadata implementation rules. + The implementing member or Nothing, if there isn't one. + + + + Search the declared methods of a type for one that could be an implicit implementation + of a given interface method (depending on interface declarations). It is assumed that the implementing + type is not a source type. + + MethodSymbol or PropertySymbol or EventSymbol (an interface member). + The interface member being implemented. + The type on which we are looking for a declared implementation of the interface method. + A comparer for comparing signatures of TSymbol according to metadata implementation rules. + + + + Given a set of explicit interface implementations that are undergoing substitution, return the substituted versions. + + Type of the interface members (Method, Property, Event) + The ROA of members that are being implemented + The type substitution + The substituted members. + + + + Represents implicit, script and submission classes. + + + + + Represents a Lambda parameter. + + + + + Represents a method symbol for a lambda method. + + + + + This symbol is used as the return type of a LambdaSymbol when we are interpreting + lambda's body in order to infer its return type. + + + + + This symbol is used as the return type of a LambdaSymbol when we failed to + infer lambda's return type, but still want to interpret its body. + + + + + This symbol is used as the return type of a LambdaSymbol when we are dealing with + query lambda and the return type should be taken from the target delegate upon + successful conversion. The LambdaSymbol will be mutated then. + + + + + This symbol is used as the return type of a LambdaSymbol when System.Void is used in code. + + + + + This symbol is used as a sentinel while we are binding a lambda in error recovery mode. + + + + + Can mutate for a query lambda from ReturnTypePendingDelegate + to the return type of the target delegate. + + + + + "Me" parameter for this lambda will be that of the containing symbol + + + + + Specifies the syntax that a user defined variable comes from. + + + + + The local is not user defined nor it is a copy of a user defined local (e.g. with a substituted type). + Check the value of for the kind of synthesized variable. + + + + + Implicitly declared variable (w/o variable declaration). + + + + + Only used in flow analysis for the pseudo-local representing a symbol + of the implicit receiver in case Dim statement defines more than one + variable, but uses the same object initializer for all of them, like in: + Dim a,b As New C() With { .X = .Y } + + + + + Represents a local variable (typically inside a method body). This could also be a local variable implicitly + declared by a For, Using, etc. When used as a temporary variable, its container can also be a Field or Property Symbol. + + + + + Create a local symbol from a local variable declaration. + + + + + Create a local symbol associated with an identifier token. + + + + + Create a local symbol associated with an identifier token and a different name. + Used for WinRT event handler return value variable). + + + + + Create a local symbol with substituted type. + + + + + Create an inferred local symbol from a For from-to statement. + + + + + Create an inferred local symbol from a For-each statement. + + + + + Create a local variable symbol. Note: this does not insert it automatically into a + local binder so that it can be found by lookup. + + + + + Returns true if this local is a ReadOnly local. Compiler has a concept of ReadOnly locals. + + + + + Returns the syntax node that declares the variable. + + + All user-defined and long-lived synthesized variables must return a reference to a node that is + tracked by the EnC diffing algorithm. For example, for variable + the declarator is the node, not the + that immediately contains the variable. + + The location of the declarator is used to calculate during emit. + + + + + Was this local variable implicitly declared, because Option Explicit Off + was in effect, and no other symbol was found with this name. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Base class for any local symbol that can be referenced in source, might be implicitly declared. + + + + + Class for a local symbol that has a different name than the identifier token. + In this case the real name is returned by the name property and the "VB User visible name" can be + obtained by accessing the IdentifierToken. + + + + + Create a local variable symbol. Note: this does not insert it automatically into a + local binder so that it can be found by lookup. + + + + + A local symbol created by a for-each statement when Option Infer is on. + + + + + + Create a local variable symbol. Note: this does not insert it automatically into a + local binder so that it can be found by lookup. + + + + + A local symbol created by For from-to statement when Option Infer is on. + + + + + Create a local variable symbol. Note: this does not insert it automatically into a + local binder so that it can be found by lookup. + + + + + A local symbol created from a variable declaration or a for statement with an as clause. + + + + + Create a local variable symbol. Note: this does not insert it automatically into a + local binder so that it can be found by lookup. + + + + + Local symbol that is not associated with any source. + + Generally used for temporary locals past the initial binding phase. + + + + Function that help implement the overloading rules for VB, in particular the rules + for recasing method and property names. + + + + + Set the correct metadata name for all overloads of a particular name and symbol kind + (must be method or property) inside a container. + + The rules are as follows: + 1) If a method or property overrides one from its base class, its metadata name + must match that. + 2) If method overloads those in the base (because the Overloads keyword is used), and + all metadata names in the base are consistent in case, use that name. + 3) All overloads with a class should match, except possibly for overrides. If there is + an override or overload from base, use that. Otherwise, use casing of first member in + class. + + + + + Collect all overloads in "container" of the given name and kind. + Also determine if any have "Overloads" or "Overrides" specifiers. + + + + + For each member in "overloadedMembers" that is marked Overrides, set its + metadata name to be the metadata name of its overridden member. Return the + first such name, lexically. + + Note: can return null if no override member with an actual overridden member was found. + + + + + Return the name of the lexically first symbol in "overloadedMembers". + + + + + Check all accessible, visible members of the base types of container for the given name and kind. If they + all have the same case-sensitive metadata name, return that name. Otherwise, return Nothing. + + + + + Methods, Properties, and Events all can override or hide members. + This class has helper methods and extensions for sharing by multiple symbol types. + + + + + Check for overriding and hiding errors in container and report them via diagnostics. + + Containing type to check. Should be an original definition. + Place diagnostics here. + + + + Check each member of container for constraints against the base type. For methods and properties and events, + checking overriding and hiding constraints. For other members, just check for hiding issues. + + Containing type to check. Should be an original definition. + Place diagnostics here. + + + + + If the "container" is a non-MustInherit, make sure it has no MustOverride Members + If "container" is a non-MustInherit inheriting from a MustInherit, make sure that all MustOverride members + have been overridden. + If "container" is a MustInherit inheriting from a MustInherit, make sure that no MustOverride members + have been shadowed. + + + + + Report any diagnostics related to shadowing for a member. + + + + + Some symbols do not participate in overriding/hiding (e.g. constructors). Accessors are consider + to override or hide. + + + + + If a method had a virtual inaccessible override, then an explicit override in metadata is needed + to make it really override what it intends to override, and "skip" the inaccessible virtual + method. + + + + + Many of the methods want to generically work on properties, methods (and maybe events) as TSymbol. We put all these + methods into a generic class for convenience. + + + + + Walk up the type hierarchy from ContainingType and list members that this + method overrides (accessible methods/properties with the same signature, if this + method is declared "override"). + + Methods in the overridden list may not be virtual or may have different + accessibilities, types, accessors, etc. They are really candidates to be + overridden. + + All found accessible candidates of overridden members are collected in two + builders, those with 'exactly' matching signatures and those with 'generally' + or 'inexactly' matching signatures. 'Exact' signature match is a 'general' + signature match which also does not have mismatches in total number of parameters + and/or types of optional parameters. See also comments on correspondent + OverriddenMembersResult(Of TSymbol) properties. + + 'Inexactly' matching candidates are only collected for reporting Dev10/Dev11 + errors like BC30697 and others. We collect 'inexact' matching candidates until + we find any 'exact' match. + + Also remembers inaccessible members that are found, but these do not prevent + continuing to search for accessible members. + + + + In the presence of non-VB types, the meaning of "same signature" is rather + complicated. If this method isn't from source, then it refers to the runtime's + notion of signature (i.e. including return type, custom modifiers, etc). + If this method is from source, use the VB version of signature. Note that + Dev10 C# has a rule that prefers members with less custom modifiers. Dev 10 VB has no + such rule, so I'm not adding such a rule here. + + + + + Look for overridden members in a specific type. Return true if we find an overridden member candidate + with 'exact' signature match, or we hit a member that hides. See comments on MakeOverriddenMembers(...) + for description of 'exact' and 'inexact' signature matches. + + Also remember any inaccessible members that we see. + + Syntax that overriding or hiding. + True if "overridingSym" is from source (this.IsFromSomeCompilation). + The type that contains this method (this.ContainingType). + The type to search. + Builder to place exactly-matched overridden member candidates in. + Builder to place inexactly-matched overridden member candidates in. + Builder to place exactly-matched inaccessible overridden member candidates in. + + + + The QuickAttributeChecker applies a simple fast heuristic for determining probable + attributes without binding attribute types, just by looking at the final syntax of an + attribute usage. It is accessed via the QuickAttributeChecker property on Binder. + + + It works by maintaining a dictionary of all possible simple names that might map to a particular + attribute. + + + + + Add a mapping from name to some attributes. + + + + + Process an alias clause and any imported mappings from it. + E.g., If you have an alias Ex=Blah.Extension, add any mapping for Extension to those for Ex. + Note that although, in VB, an alias cannot reference another alias, this code doesn't not attempt + to distinguish between aliases and regular names, as that would add complexity to the data structure + and would be unlikely to matter. This entire class is probabilistic anyone and is only used for quick + checks. + + + + + Check attribute lists quickly to see what attributes might be referenced. + + + + + Indicate which attributes might be present. Could be extended to other attributes + if desired. + + + + + Returns the that corresponds to the particular type + passed in. If Is + then the name will be checked both as-Is as well as with the 'Attribute' suffix. + + + + + Represents a range variable symbol. + + + + + Create a range variable symbol associated with an identifier token. + + + + + Create a range variable symbol not associated with an identifier token, i.e. with illegal name. + Used for error recovery binding. + + + + + Represents a source parameter cloned from another , + when they must share attribute data. + + + For example, parameters on delegate Invoke method are cloned to delegate BeginInvoke, EndInvoke methods. + + + + + Represents a parameter symbol defined in source. + + + + + Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source method symbols. + + + Used for partial method parameters: + Implementation parameter always copies its attributes from the corresponding definition parameter. + Definition is always complex parameter and so it stores the attribute bag. + + + + + Is parameter explicitly declared ByRef. Can be different from IsByRef only for + String parameters of Declare methods. + + + + + Represents a declare method defined in source. + + + + + This class represent a compiler generated method of a delegate type that is based upon source delegate or event delegate declaration. + + + + + Returns true if this method is an extension method. + + + + + Gets a value indicating whether this instance is external method. + + + true if this instance is external method; otherwise, false. + + + + + Get the type parameters on this method. If the method has not generic, + returns an empty list. + + + + + Gets a value indicating whether the symbol was generated by the compiler + rather than declared explicitly. + + + + + Represents enum constant field in source. + + + + + Indicates whether event created a new delegate type. + In such case the Type must be added to the members of the containing type + + + + + Unless the type is inferred, check that all + implemented events have the same type. + + + + + Helper method for accessors to get the overridden accessor methods. Should only be called by the + accessor method symbols. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a NotOverridable method. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Gets the syntax tree. + + + + + Field initializer's declaration syntax node. + It can be a EqualsValueSyntax or AsNewClauseSyntax. + + + + + Gets a value indicating whether this instance has declared type. This means not an inferred type. + + + true if this instance has declared type; otherwise, false. + + + + + Gets the constant value. + + Used to detect dependencies between constant field values. + + + + Helper to get a constant value of the field with cycle detection. + Also avoids deep recursion due to references to other constant fields in the value. + Derived types utilizing this helper should provide storage for the lazily calculated + value and should implement the following APIs: + , + , + . + + + + + Generate a list containing the field and all dependencies + of that field that require evaluation. The list is ordered by + dependencies, with fields with no dependencies first. Cycles are + broken at the first field lexically in the cycle. If multiple threads + call this method with the same field, the order of the fields + returned should be the same, although some fields may be missing + from the lists in some threads as other threads evaluate fields. + + + + + The set of fields on which the field depends. + + + + + The set of fields that depend on the field. + + + + + Build a dependency graph (a map from + field to dependencies). + + + + + Return the constant value dependencies. Compute the dependencies + if necessary by evaluating the constant value but only persist the + constant value if there were no dependencies. (If there are dependencies, + the constant value will be re-evaluated after evaluating dependencies.) + + + + + Should be overridden by types utilizing helper. + + + + + Should be overridden by types utilizing helper. + + + + + Should be overridden by types utilizing helper. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a NotOverridable method. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Verify the constant value matches the default value from any earlier attribute + (DateTimeConstantAttribute or DecimalConstantAttribute). + If not, report ERR_FieldHasMultipleDistinctConstantValues. + + + + + The bound information from a file. + + + + + Data for Binder.BindImportClause that maintains flat lists + of members and member syntax references in addition to + the dictionaries needed by BindImportClause. + + + + + Perform any validation of import statements that must occur + after the import statements have been added to the SourceFile. + Specifically, constraints are checked for generic type references. + + + + + Return the member imports for this file. + Doesn't contain error types. + + + + + Return the alias imports for this file. May return Nothing if there are no alias imports. + May contain aliases with error type targets. + + + + + Return the xmlns imports for this file. May return Nothing if there are no xmlns imports. + + + + + Returns the value of the Option Strict declaration if there was one, otherwise Null. + + + + + Returns the value of the Option Infer declaration if there was one, otherwise Null. + + + + + Returns the value of the Option Explicit declaration if there was one, otherwise Null. + + + + + Returns the value of the Option Compare Text/Binary declaration if there was one, otherwise Null. True means + Text, False means Binary. + + + + + Force all declaration errors to be generated. + + + + + Get all declaration errors in the given filterSpan. + + + + + Represents a named type symbol whose members are declared in source. + + + + + Holds information about a SourceType in a compact form. + + + + + Compute the type flags from the declaration. + This function DOES NOT diagnose errors in the modifiers. Given the set of modifiers, + it produces the flags, even in the case of potentially conflicting modifiers. We have to + return some answer even in the case of errors. + + + + + Force all declaration errors to be generated. + + + + + Following enum is used just to help give more specific error messages. + + + + + Ensure all attributes on all members in the named type are bound. + + + + + Should return full emitted namespace name for a top level type if the name + might be different in case from containing namespace symbol full name, Nothing otherwise. + + Although namespaces unify based on case-insensitive name, VB uses the casing the namespace + declaration surround the class definition for the name emitted to metadata. + + Namespace GOO + Class X + End Class + ENd Namespace + Namespace goo + Class Y + End Class + ENd Namespace + + In metadata, these are classes "GOO.X" and "goo.Y" (and thus appear in different namespaces + when imported into C#.) This function determines the casing of the namespace part of a class, if needed + to override the namespace name. + + + + + Syntax references of all parts of the type declaration. + Submission and script classes are represented by their containing , + implicit class can be represented by or . + + + + + Structure to wrap the different arrays of members. + + + + + Initializes a new instance of the class. + + The members. + The static initializers. + The instance initializers. + + + + Accumulates different members kinds used while building the members. + + + + + Adds a field initializer for the field to list of field initializers + + All initializers. + Compute the field initializer to add to the list of initializers. + + + + Adds an array of initializers to the member collections structure + + All initializers. + The siblings. + + + Examines the members collection and builds a set of partial methods if any, otherwise returns nothing + + + + Compares two methods to check if the 'candidate' can be an implementation of the 'partialDeclaration'. + + + + + Poolable data set to be used in structure circularity detection. + + + + + Following C# implementation we keep up to 32 data sets so that we do not need to allocate + them over and over. In this implementation though, circularity detection in one type can trigger + circularity detection in other types while it traverses the types tree. The traversal is being + performed breadth-first, so the number of data sets used by one thread is not longer than the + length of the longest structure-in-structure nesting chain. + + + + Set of processed structure types + + + Queue element structure + + + Queue of the types to be processed + + + + Analyzes structure type for circularities. Reports only errors relevant for 'structBeingAnalyzed' type. + + + When VB Dev10 detects circularity it reports the error only once for each cycle. Thus, if the cycle + is {S1 --> S2 --> S3 --> S1}, only one error will be reported, which one of S1/S2/S3 will have error + is non-deterministic (depends on the order of symbols in a hash table). + + Moreover, Dev10 analyzes the type graph and reports only one error in case S1 --> S2 --> S1 even if + there are two fields referencing S2 from S1. + + Example: + Structure S2 + Dim s1 As S1 + End Structure + + Structure S3 + Dim s1 As S1 + End Structure + + Structure S1 + Dim s2 As S2 ' ERROR + Dim s2_ As S2 ' NO ERROR + Dim s3 As S3 ' ERROR + End Structure + + Dev10 also reports only one error for all the cycles starting with the same field, which one is reported + depends on the declaration order. Current implementation reports all of the cycles for consistency. + See testcases MultiplyCyclesInStructure03 and MultiplyCyclesInStructure04 (report different errors in Dev10). + + + + + Simple check of whether or not we should step into the type 'typeToTest' during + type graph traversal inside 'DetectStructureCircularity' or 'GetDependenceChain'. + + The following rules are in place: + (a) we order all symbols according their first source location + comparison rules: first, source file names are compared, + then SourceSpan.Start is used for symbols inside the same file; + (b) given this order we enter the loop if only 'typeToTest' is 'less' than + 'structBeingAnalyzed'; + (c) we also always enter types from other modules + + !!! To be ONLY used in 'CheckStructureCircularity'. + + True if detect type circularity code should step into 'typeToTest' type + + + + Returns true if at least one of the elements of this list needs to be injected into a + constructor because it's not a const or it is a const and it's type is either decimal + or date. Non const fields always require a constructor, so this function should be called to + determine if a synthesized constructor is needed that is not listed in members list. + + + + + Performs a check for overloads/overrides/shadows conflicts, generates diagnostics. + + + + + + + + Check to see if we need a default instance|shared constructor, and if so, create it. + + NOTE: we only need a shared constructor if there are any initializers to be + injected into it, we don't create a constructor otherwise. In this case we also + ignore const fields which will still require to be injected, because in this case + we don't see the constructor to be visible in symbol table. + + + + + In case the passed initializers require a shared constructor, this method returns a new MethodSymbol instance for the + shared constructor if there is not already an explicit shared constructor + + + + + Gets the static initializers. + + + + + Gets the instance initializers. + + + + + Get a dictionary with all the explicitly implemented interface symbols declared on this type. + + key = interface method/property/event compared using , + value = explicitly implementing methods/properties/events declared on this type (normally a single value, multiple in case of + an error). + + Getting this property also ensures that diagnostics relating to interface implementation, overriding, hiding and + overloading are created. + + + + + + Reports the overloads error for this type. + + The diagnostics. + + + + Returns True if memberList(memberIndex) is an operator. + Also performs operator overloading validation and reports appropriate errors. + + + + + See if any member in [memberList] starting with [memberIndex] conflict with [method], + report appropriate error and return true. + + + + + Check for two different diagnostics on the set of implemented interfaces: + 1) It is invalid for a type to directly (vs through a base class) implement two interfaces that + unify (i.e. are the same for some substitution of type parameters). + + 2) It is a warning to implement variant interfaces twice with type arguments that could cause + ambiguity during method dispatch. + + + + + Interface1 and Interface2 conflict for some type arguments. Report the correct error in the correct location. + + + + + Interface1 and Interface2 have variable ambiguity. Report the warning in the correct location. + + + + + Interface1 and Interface2 match except for their tuple names. Report the error in the correct location. + + + + + Gets the inferred type of this const field from the initialization value. + + Used to detect dependencies between constant field values. + + + + A source field with an explicit initializer. In a declaration declaring multiple fields, + such as "Dim a, b, c = d", this class is used for the first field only. (Other fields in + the declaration are instances of SourceFieldSymbolSiblingInitializer.) + + + + + A tuple consisting of the evaluated constant value and type + + + + + A source field with an explicit initializer. In a declaration declaring multiple + fields, such as "Dim a, b, c = d", this class is used for the fields other than + the first. (The first field is an instance of SourceFieldSymbolWithInitializer.) + An instance of this class holds a reference to the first field in the declaration + and reuses the bound initializer from that field. + + + + + Represents a method declared in source. + + + + + If this symbol represents a partial method definition or implementation part, its other part (if any). + This should be set, if at all, before this symbol appears among the members of its owner. + The implementation part is not listed among the "members" of the enclosing type. + + + + + In case the method is an 'Async' method, stores the reference to a state machine type + synthesized in AsyncRewriter. Note, that this field is mutable and is being assigned + by calling AssignAsyncStateMachineType(...). + + + + + If this flag is set this method will be ignored + in duplicated signature analysis, see ERR_DuplicateProcDef1 diagnostics. + + + + + Set after all diagnostics have been reported for this symbol. + + + + + Validate method type parameter constraints against implemented methods. + + + + + This method is to be called to assign implementation to a partial method. + + + + + Base class for method symbols that are associated with some syntax and can receive custom attributes (directly or indirectly via another source symbol). + + + + + Creates a method symbol for Declare Sub or Function. + + + + + Decode the modifiers on a user-defined operator, reporting errors where applicable. + + + + + Returns true if our diagnostics were used in the event that there were two threads racing. + + + + + True if 'Shadows' is explicitly specified in method's declaration. + + + + + True if 'Overloads' is explicitly specified in method's declaration. + + + + + True if 'Overrides' is explicitly specified in method's declaration. + + + + + True if 'Handles' is specified in method's declaration + + + + + Return the location from syntax reference only. + + + + + Bind the constraint declarations for the given type parameter. + + + The caller is expected to handle constraint checking and any caching of results. + + + + + Symbol to copy bound attributes from, or null if the attributes are not shared among multiple source method symbols. + + + Used for example for event accessors. The "remove" method delegates attribute binding to the "add" method. + The bound attribute data are then applied to both accessors. + + + + + Symbol to copy bound return type attributes from, or null if the attributes are not shared among multiple source symbols. + + + Used for property accessors. Getter copies its return type attributes from the property return type attributes. + + So far we only need to return . If we ever needed to return a + we could implement an interface on those two types. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + + + Returns the list of attributes, if any, associated with the return type. + + + + + Returns data decoded from early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Represents the primary module of an assembly being built by compiler. + + + + + + Owning assembly. + + + + + + Holds diagnostics not related to source code + in any particular source file + + + + + This override is essential - it's a base case of the recursive definition. + + + + + Get the SourceFile object associated with a root declaration. + Returns Nothing if the tree doesn't belong to the compilation. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a NotOverridable method. + If you want to override attribute binding logic for a sub-class, then override method. + + + + + Data for Binder.BindImportClause that maintains flat lists of members, aliases, + and corresponding syntax references in addition to the dictionaries needed by + BindImportClause. The syntax references, instances of GlobalImportInfo, are used + later, when validating constraints, to generate Locations for constraint errors. + + + + + Perform any validation of import statements that must occur + after the import statements have been added to the module. + + + + + Perform validation of an import statement that must occur + after the statement has been added to the module. Specifically, + constraints are checked for generic type references. + + + + + Get all the declaration errors in a single tree. + + + + + Get all the declaration errors. + + + + + Atomically store value into variable, and store the diagnostics away for later retrieval. + When this routine returns, variable is non-null. If this routine stored value into variable, + then the diagnostic bag is saved away before the variable is stored and it returns True. + Otherwise it returns False. + + + + + Represents a type or module declared in source. + Could be a class, structure, interface, delegate, enum, or module. + + + + + Information for ComClass specific analysis and metadata generation, created + once ComClassAttribute is encountered. + + + + + Lazy CoClass type if the attribute is specified. Nothing if not. + + + + + In case a cyclic dependency was detected during base type resolution + this field stores the diagnostic. + + + + + Bind the constraint declarations for the given type parameter. + + + The caller is expected to handle constraint checking and any caching of results. + + + + + 'Safe' version of GetDeclaredBase takes into account bases being resolved to make sure + we avoid infinite loops in some scenarios. Note that the cycle is being broken not when + we detect it, but when we detect it on the 'smallest' type of the cycle, this brings stability + in multithreaded scenarios while still ensures that we don't loop more than twice. + + + + + Do additional verification of base types the after acyclic base is found. This is + the chance to generate diagnostics that may require walking bases and as such + can be performed only after the base has been determined and cycles broken. + (For instance, checking constraints on Class B(Of T) Inherits A(Of B(Of T)).) + + + + + Do additional verification of interfaces after acyclic interfaces are found. This is + the chance to generate diagnostics that may need to walk interfaces and as such + can be performed only after the interfaces have been determined and cycles broken. + (For instance, checking constraints on Class C(Of T) Implements I(Of C(Of T)).) + + + + + Return the first Class declaration with explicit base classes to use for + checking base class constraints. Other type declarations (Structures, + Modules, Interfaces) are ignored since other errors will have been + reported if those types include bases. + + + + + Return the first Class, Structure, or Interface declaration with explicit interfaces + to use for checking interface constraints. Other type declarations (Modules) are + ignored since other errors will have been reported if those types include interfaces. + + + + + For enum types, gets the underlying type. Returns null on all other + kinds of types. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + + + Returns data decoded from early bound well-known attributes applied to the symbol or null if there are no applied attributes. + + + Forces binding and decoding of attributes. + + + + + Is System.Runtime.InteropServices.GuidAttribute applied to this type in code. + + + + + Is System.Runtime.InteropServices.ClassInterfaceAttribute applied to this type in code. + + + + + Is System.Runtime.InteropServices.ComSourceInterfacesAttribute applied to this type in code. + + + + + Encapsulates ComClass specific data and analysis. + + + + + Synthesized ComClass interfaces, can have the following values: + Null - not yet initialized, + Empty - there are no synthesized ComClass interfaces. + one interface - only class interface is synthesized. + two interfaces - both class interface and event interface are synthesized. Class interface is followed by the event interface. + + + + + Returns symbol for the event interface or Nothing when event interface is not synthesized. + + + + + Perform ComClass specific validation and prepare for metadata generation. + + + + + Return False if ComVisibleAttribute(False) is applied to the symbol, True otherwise. + + + + + Returns user defined DispId for a member or ReservedDispId.None if none specified. + Also reports errors for reserved DispIds. + + + + + Perform ComClass specific validation and prepare for metadata generation. + + + + + Used to sort types - members of group collection. + + + + + Register COR types declared in this namespace, if any, in the COR types cache. + + + + + Gets the filename of the first declaration that matches the given namespace name case sensitively. + + + + + Return the set of types that should be checked for presence of extension methods in order to build + a map of extension methods for the namespace. + + + + + Does this namespace have multiple different case-sensitive spellings + (i.e., "Namespace GOO" and "Namespace goo". Includes parent namespace(s). + + + + + Get the fully qualified namespace name using the spelling used in the declaration enclosing the given + syntax tree and location. + I.e., if this namespace was declared with: + Namespace zAp + Namespace GOO.bar + 'location + End Namespace + End Namespace + Namespace ZAP + Namespace goo.bar + End Namespace + End Namespace + + It would return "ProjectNamespace.zAp.GOO.bar". + + + + + Is this an accessor parameter that came from the associated property? If so, + return it, else return Nothing. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + + + Verify the default value matches the default value from any earlier attribute + (DefaultParameterValueAttribute, DateTimeConstantAttribute or DecimalConstantAttribute). + If not, report ERR_ParamDefaultValueDiffersFromAttribute. + + + + + Base class for all parameters that are emitted. + + + + + Bind parameters declared on the accessor and combine with any + parameters declared on the property. If there are no explicit parameters + and this is a setter, create a synthesized value parameter. + + + + + Property declaration syntax node. + It is either PropertyStatement for normal properties or FieldDeclarationSyntax for WithEvents ones. + + + + + Gets the attributes applied on this symbol. + Returns an empty array if there are no attributes. + + + NOTE: This method should always be kept as a NotOverridable method. + If you want to override attribute binding logic for a sub-class, then override method. + + + + True if 'Overloads' is explicitly specified in method's declaration + + + True if 'Overrides' is explicitly specified in method's declaration + + + + Helper method for accessors to get the overridden accessor methods. Should only be called by the + accessor method symbols. + + True to get implemented getters, False to get implemented setters + All the accessors of the given kind implemented by this property. + + + + Property declaration syntax node. + It is either PropertyStatement for normal properties or ModifiedIdentifier for WithEvents ones. + + + + + Return true if the accessor accessibility is more restrictive + than the property accessibility, otherwise false. + + + + + Returns the location (span) of the accessor begin block. + (Used for consistency with the native compiler that + highlights the entire begin block for certain diagnostics.) + + + + + Report an error associated with the accessor accessibility modifier. + + + + + Gets the syntax tree. + + + + + Represents a parameters declared in source, that is not optional, does not have a default value, + attributes, or is a ParamArray. This is a separate class to save memory, since there are LOTS + of parameters. + + + + + Represents a type parameter symbol defined in source. + + + + + True if the redundant type parameter constraints should be reported as + errors. For overridden methods, this is False since type substitution of type + arguments for the base/interface may result in redundant constraints. + + + This is a method rather than a property since the + implementation may be expensive. + + + + + Check constraints of generic types referenced in constraint types. For instance, + with "Interface I(Of T As I(Of T))", check T satisfies constraints on I(Of T). Those + constraints are not checked when binding ConstraintTypes since ConstraintTypes + has not been set on I(Of T) at that point. + + + + + Return the source location of the error, if any. If there error was + from a constraint, and that constraint was from source, its location + is returned. Otherwise if the type parameter was from source, its + location is returned. If neither is from source, Nothing is returned. + + + + + Represents a type parameter on a source type (as opposed to a method). + + + + + Represents a type parameter on a source method (as opposed to a type). + + + + + Represents a backing field of WithEvents property. + Attributes applied on the property syntax are applied on the backing field. + + + + + Represents a compiler generated backing field for an automatically implemented property. + + + + + Represents an interactive code entry point that is inserted into the compilation if there is not an existing one. + + + + + Generate a thread-safe accessor for a field-like event. + + DelegateType tmp0 = _event; //backing field + DelegateType tmp1; + DelegateType tmp2; + do { + tmp1 = tmp0; + tmp2 = (DelegateType)Delegate.Combine(tmp1, value); //Remove for -= + tmp0 = Interlocked.CompareExchange< DelegateType> (ref _event, tmp2, tmp1); + } while ((object)tmp0 != (object)tmp1); + + Note, if System.Threading.Interlocked.CompareExchange<T> Is Not available, + we emit the following code And mark the method Synchronized (unless it Is a struct). + + _event = (DelegateType)Delegate.Combine(_event, value); //Remove for -= + + + + + + Represents a compiler generated backing field for an event. + + + + + System.NonSerializedAttribute applied on an event and determines serializability of its backing field. + + + + + Represents a compiler generated field of given type and name. + + + + + Represents a synthesized lambda. + + + + + Gets a value indicating whether the symbol was generated by the compiler + rather than declared explicitly. + + + + + Represents a compiler generated "Main" sub. + + + + + Represents a compiler "MyGroupCollection" property accessor. + + + + + Represents a compiler generated field for a "MyGroupCollection" property. + + + + + Represents a compiler "MyGroupCollection" property. + + + + + Initializes a new instance of the class. + + The containing type for the synthesized constructor. + if set to true if this is a shared constructor. + + + + WithEvents property accessor. + + + + + Represents a Lambda parameter for an UnboundLambda. + + + + + A SubstitutableTypeParameterSymbol represents a definition that is subject to alpha-renaming, + which results in . + + The main purpose of this type is to share equality implementation that ensures symmetry + across both of these types. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Represents a member variable (field) that has undergone type substitution. + + + + + Represents a method that has undergone type substitution. This is use for a method + inside a generic type that has undergone type substitution. It also serves as a base class + for ConstructedMethodSymbol, which is used for a method after type substitution in the method type parameters. + + + + + If this is a generic method return TypeSubstitution for it. + TypeSubstitution for containing type otherwise. + + + + + Compare with no regard to type arguments. + + + + + Base class for symbols representing non-generic or open generic methods contained within constructed generic type. + For example: A(Of Integer).B, A(Of Integer).B.C or A(Of Integer).B.C(Of ). + + + + + Associate the method with a particular property. Returns + false if the method is already associated with a property. + + + + + Symbol representing non-generic method directly or indirectly contained within constructed + generic type. + For example: A(Of Integer).B or A(Of Integer).B.C + + + + + Symbol representing open generic method directly or indirectly contained within constructed + generic type. + For example: A(Of Integer).B(Of ) or A(Of Integer).B.C(Of , ) + + + + + Alpha-renamed type parameters, i.e. type parameters with constraints substituted according + to containing type's TypeSubstitution. + For example: + Class A (Of T) + Sub B(Of S As T)() + End Sub + End Class + + Given a method A(Of IComparable).B(Of ), alpha-renamed type parameter S will have type constraint IComparable. + + + + + Base class for symbols representing constructed generic methods. + For example: A(Of Integer), A.B(Of Integer), A(Of Integer).B.C(Of Integer). + + + + + Symbols representing constructed generic method that is contained within constructed generic type. + For example: A(Of Integer).B(Of Integer), A(Of Integer).B.C(Of Integer). + + + + + Symbol for the ConstructedFrom method. + A(Of Integer).B(Of ) for A(Of Integer).B(Of Integer), + A(Of Integer).B.C(Of ) for A(Of Integer).B.C(Of Integer) + + All types in its containership hierarchy must be either constructed or non-generic, or original definitions. + + + + + Symbols representing constructed generic method that isn't contained within constructed generic type. + For example: A.B(Of Integer), but not A(Of Integer).B.C(Of Integer). + + + + + A SubstitutedNamedType represents a named type that has had some sort + of substitution applied to it. I.e., its not a pure instance type, but at least + one type parameter in this type or a containing type has a substitution made for + it. + + + + + Type substitution for this symbol, it targets OriginalDefinition of the symbol. + + + + + Base class for symbols representing non-generic or open generic types contained within constructed generic type. + For example: A(Of Integer).B, A(Of Integer).B.C or A(Of Integer).B.C(Of ). + + + + + Symbol for the containing type, either specialized or constructed. + + + + + Symbol representing open generic type directly or indirectly contained within constructed + generic type. + For example: A(Of Integer).B(Of ) or A(Of Integer).B.C(Of , ) + + + + + Alpha-renamed type parameters, i.e. type parameters with constraints substituted according + to containing type's TypeSubstitution. + For example: + Class A (Of T) + Class B(Of S As T) + Dim x As A(Of Integer).B(Of S) 'error BC32044: Type argument 'S' does not inherit from or implement the constraint type 'Integer'. + End Class + End Class + + Given a type A(Of IComparable).B(Of ), alpha-renamed type parameter S will have type constraint IComparable. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Symbol representing non-generic type directly or indirectly contained within constructed + generic type. + For example: A(Of Integer).B or A(Of Integer).B.C + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Base class for symbols representing constructed generic types. + For example: A(Of Integer), A.B(Of Integer), A(Of Integer).B.C(Of Integer). + + + + + Symbols representing constructed generic type that isn't contained within another constructed generic type. + For example: A(Of Integer), A.B(Of Integer), but not A(Of Integer).B.C(Of Integer). + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Symbols representing constructed generic type that is contained within another constructed generic type. + For example: A(Of Integer).B(Of Integer), A(Of Integer).B.C(Of Integer). + + + + + Symbol for the ConstructedFrom type. + A(Of Integer).B(Of ) for A(Of Integer).B(Of Integer), + A(Of Integer).B.C(Of ) for A(Of Integer).B.C(Of Integer) + + All types in its containership hierarchy must be either constructed or non-generic, or original definitions. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Force all declaration errors to be generated. + + + + + Represents a parameter that has undergone type substitution. + + + + + Represents a method parameter that has undergone type substitution. + + + + + Represents a property parameter that has undergone type substitution. + + + + + Represents a property that has undergone type substitution. + + + + + A SubstitutedTypeParameterSymbol represents an alpha-renamed type parameter. + They are created only for open generic types and methods that are contained within a + constructed generic type. + + Alpha-renamed type parameters have their constraints substituted according + to type/method's containing type's TypeSubstitution. + For example: + Class A (Of T) + Class B(Of S As T) + End Class + End Class + + Given a type A(Of IComparable).B(Of ), alpha-renamed type parameter T will have type constraint IComparable. + The rest will be exactly as for the original type parameter T. In fact, OriginalDefinition will return symbol for T. + + + + + Containing type or method. + The field is not read-only because it is initialized after construction through + SetContainingSymbol() method. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Does the compilation this symbol belongs to output to a winmdobj? + + + + + String such as 'class', 'interface' etc that can be used in error messages. + + + + + String "ReadOnly", "WriteOnly", or "" describing the kind of property. + + + + + Checks if there is a name match with any type parameter. + + + + + + + + + Returns true if this symbols can overload another of the same kind. + + + + + Returns true if this property can overload another. + + + + + Helper that tells if symbol has Overloads (hidebysig) on it + + + + + Member that does not have Overloads, is considered Shadows (hidebyname) + + + + + Is the symbol an instance member (i.e. access requires a receiver) + + + + + Is this a member of a interface that requires implementation? + + + + + Returns True for "regular" properties (those that are not WithEvents. + Typically used for OHI diagnostics where WithEvents properties are treated as variables. + + + + + default zero-init constructor symbol is added to a struct when it does not define + its own parameterless public constructor. + We do not emit this constructor and do not call it + + + + + Return the overridden symbol for either a method or property. + + + + + Return the arity of a member. + + + + + Returns the Me symbol associated with a member. + sym must be a member (method, field or property) + + + + + Returns the parameters of a given method or property. + + + + + Is symbol a user-defined operator method. + + + + + Does symbol or its containing type have Microsoft.CodeAnalysis.Embedded() attribute + + + + + Does symbol or its containing type have Microsoft.VisualBasic.Embedded() attribute + + + + + Gets the upper-level named type symbol, or returns Nothing if it does not exist. + + + + + Try to parse the local (or parameter) name and return if successful. + + + + + Try to parse the local name and return and if successful. + + + + + Helper class to generate synthesized names. + + + + + Generates the name of a state machine's type. + + + + + Generates the name of a state machine 'state' field + + + + + Generates the name of a static lambda display class instance cache + + + + + Generates the name of a state machine 'builder' field + + + + + Generates the name of a field that backs Current property + + + + + Generates the name of a state machine's awaiter field + + + + + Generates the name of a state machine's parameter name + + + + + Generates the name of a state machine's parameter name + + + + + Generates the name of a field where initial thread ID is stored + + + + + Generates the name of a state machine field name for captured me reference + + + + + Generates the name of a state machine field name for captured me reference of lambda closure + + + + + Class to represent a synthesized attribute + + + + + Synthesizes attribute data for given constructor symbol. + If the constructor has UseSiteErrors and the attribute is optional returns Nothing. + + + + + Represents a base type for compiler generated backing fields. + + + + + Type parameter that represents another type parameter while being applied on a different symbol + + + + + This class represents a base class for compiler generated constructors + + + + + Flag to indicate if this is a shared constructor or an instance constructor. + + + + + Initializes a new instance of the class. + + The containing type for the synthesized constructor. + if set to true if this is a shared constructor. + + + + Gets the symbol name. Returns the empty string if unnamed. + + + + + Gets a indicating the declared accessibility for the symbol. + Returns NotApplicable if no accessibility is declared. + + + + + Gets a value indicating whether this instance is abstract or not. + + + true if this instance is abstract; otherwise, false. + + + + + Gets a value indicating whether this instance is not overridable. + + + true if this instance is not overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overloads. + + + true if this instance is overloads; otherwise, false. + + + + + Gets a value indicating whether this instance is overridable. + + + true if this instance is overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overrides. + + + true if this instance is overrides; otherwise, false. + + + + + Gets a value indicating whether this instance is shared. + + + true if this instance is shared; otherwise, false. + + + + + Gets a value indicating whether this instance is sub. + + + true if this instance is sub; otherwise, false. + + + + + A potentially empty collection of locations that correspond to this instance. + + + + + Gets what kind of method this is. There are several different kinds of things in the + VB language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + Gets the return type of the method. + + + + + This class represent a compiler generated method + + + + + Initializes a new instance of the class. The parameters are not initialized and need to be set + by using the method. + + The name of this method. + The containing symbol. + The flags for this method. + The return type. + + + + Sets the parameters. + + The parameters. + + Note: This should be called at most once, immediately after the symbol is constructed. The parameters aren't + Note: passed to the constructor because they need to have their container set correctly. + + + + + Returns the arity of this method, or the number of type parameters it takes. + A non-generic method has zero arity. + + + + + If this method has MethodKind of MethodKind.PropertyGet or MethodKind.PropertySet, + returns the property that this method is the getter or setter for. + If this method has MethodKind of MethodKind.EventAdd or MethodKind.EventRemove, + returns the event that this method is the adder or remover for. + + + + + Calling convention of the signature. + + + + + Gets the for the immediately containing symbol. + + + + + Gets a indicating the declared accessibility for the symbol. + Returns NotApplicable if no accessibility is declared. + + + + + Returns interface methods explicitly implemented by this method. + + + + + Returns true if this method is an extension method. + + + + + Gets a value indicating whether this instance is external method. + + + true if this instance is external method; otherwise, false. + + + + + Gets a value indicating whether this instance is abstract or not. + + + true if this instance is abstract; otherwise, false. + + + + + Gets a value indicating whether this instance is not overridable. + + + true if this instance is not overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overloads. + + + true if this instance is overloads; otherwise, false. + + + + + Gets a value indicating whether this instance is overridable. + + + true if this instance is overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overrides. + + + true if this instance is overrides; otherwise, false. + + + + + Gets a value indicating whether this instance is shared. + + + true if this instance is shared; otherwise, false. + + + + + Gets a value indicating whether this instance is a sub. + + + true if this instance is sub; otherwise, false. + + + + + Gets a value indicating whether this instance is vararg. + + + true if this instance is vararg; otherwise, false. + + + + + A potentially empty collection of locations that correspond to this instance. + + + + + Gets what kind of method this is. There are several different kinds of things in the + VB language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + The parameters forming part of this signature. + + + + + Gets the return type of the method. + + + + + Returns the list of attributes, if any, associated with the return type. + + + + + Returns the list of custom modifiers, if any, associated with the returned value. + + + + + Returns the type arguments that have been substituted for the type parameters. + If nothing has been substituted for a given type parameter, + then the type parameter itself is consider the type argument. + + + + + Get the type parameters on this method. If the method has not generic, + returns an empty list. + + + + + Gets a value indicating whether the symbol was generated by the compiler + rather than declared explicitly. + + + + + Gets the symbol name. Returns the empty string if unnamed. + + + + + This class represents a synthesized delegate type derived from an Event declaration + + + + Class C + Event Name(a As Integer, b As Integer) + End Class + + defines an event and a delegate type: + + Event Name As NamedEventHandler + Delegate Sub NameEventHandler(a As Integer, b As Integer) + + + + + + + This property may be called while containing type is still being constructed. + Therefore it can take membersInProgress context to ensure that returned symbol + is relevant to the current type construction. + (there could be several optimistically concurrent sessions) + + + + + Force all declaration errors to be generated. + + + + + This class represents a base class for compiler generated synthesized method symbols + that must be emitted in the compiler generated PrivateImplementationDetails class. + SynthesizedGlobalMethodBase symbols don't have a ContainingType, there are global to + the containing source module and are Public Shared methods. + + + + + Gets the symbol name. Returns the empty string if unnamed. + + + + + Gets a value indicating whether this instance is abstract or not. + + + true if this instance is abstract; otherwise, false. + + + + + Gets a value indicating whether this instance is not overridable. + + + true if this instance is not overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overloads. + + + true if this instance is overloads; otherwise, false. + + + + + Gets a value indicating whether this instance is overridable. + + + true if this instance is overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overrides. + + + true if this instance is overrides; otherwise, false. + + + + + Gets a value indicating whether this instance is shared. + + + true if this instance is shared; otherwise, false. + + + + + A potentially empty collection of locations that correspond to this instance. + + + + + Gets what kind of method this is. There are several different kinds of things in the + VB language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + The parameters forming part of this signature. + + + + + When signature of an implementing method differs (due to presence of custom modifiers) + from the signature of implemented method, we insert a synthesized explicit interface + implementation that delegates to the method declared in source. + + + + + Base for synthesized Lambda methods. + Just provides a bunch of defaults + + + + + Creates a clone of the local with a new containing symbol and type. + Note that the new parameter gets no syntaxRef as it is supposed to get + all the values it needs from the original parameter. + + + + + This class represents synthetic WithEvents property that overrides + one in one of the base classes. + + + When derived class contains "Handles" methods that refer to a + WithEvents property in a base class, derived class needs to add a + synthetic override for the base WithEvent property. + We need the override so that we could inject code sequences that + remove old handlers and add new handlers when something is assigned + to the property. + + Public Class Base + Protected Friend WithEvents w As Base = Me + Public Event e As System.Action + + Sub H1() Handles w.e + End Sub + End Class + + Public Class Derived + Inherits Base + + Sub H2() Handles w.e + End Sub + End Class + + + + + + Base (simplified) class for synthesized parameter symbols of methods that have been synthesized. E.g. the parameters of delegate methods + + + + + Initializes a new instance of the class. + + The containing symbol + The type of this parameter + The ordinal number of this parameter + The name of this parameter + + + + Gets the containing symbol. + + + + + The list of custom modifiers, if any, associated with the parameter. Evaluate this property only if IsModified is true. + + + + + A compile time constant value that should be supplied as the corresponding argument value by callers that do not explicitly specify an argument value for this parameter. + + + + + True if the parameter has a default value that should be supplied as the argument value by a caller for which the argument value has not been explicitly specified. + + + + + Gets a value indicating whether this instance is by ref. + + + true if this instance is by ref; otherwise, false. + + + + + True if the argument value must be included in the marshalled arguments passed to a remote callee only if it is different from the default value (if there is one). + + + + + Gets a value indicating whether this instance is param array. + + + true if this instance is param array; otherwise, false. + + + + + Gets a value indicating whether the symbol was generated by the compiler + rather than declared explicitly. + + + + + A potentially empty collection of locations that correspond to this instance. + + + + + Gets the ordinal. + + + + + Gets the type. + + + + + Gets the name. + + + + + Base class for synthesized parameter symbols of methods that have been synthesized. E.g. the parameters of delegate methods + + + + + Initializes a new instance of the class. + + The containing symbol + The type of this parameter + The ordinal number of this parameter + Whether the parameter is ByRef or not + The name of this parameter + + + + Initializes a new instance of the class. + + The containing symbol + The type of this parameter + The ordinal number of this parameter + Whether the parameter is ByRef or not + The name of this parameter + + + + Gets a value indicating whether this instance is by ref. + + + true if this instance is by ref; otherwise, false. + + + + + True if the argument value must be included in the marshalled arguments passed to a remote callee only if it is different from the default value (if there is one). + + + + + A compile time constant value that should be supplied as the corresponding argument value by callers that do not explicitly specify an argument value for this parameter. + + + + + True if the parameter has a default value that should be supplied as the argument value by a caller for which the argument value has not been explicitly specified. + + + + + Initializes a new instance of the class. + + The containing symbol + The type of this parameter + The ordinal number of this parameter + Whether the parameter is ByRef or not + The name of this parameter + The custom modifiers of this parameter type + The custom modifiers of ref modifier + + + + The list of custom modifiers, if any, associated with the parameter. Evaluate this property only if IsModified is true. + + + + + Extends SynthesizedParameterSymbol to also accept a location + + + + + A base class for symbols representing a synthesized property. + + + + + This class represents a base class for compiler generated methods + + + + + Gets the symbol name. Returns the empty string if unnamed. + + + + + Gets a value indicating whether this instance is abstract or not. + + + true if this instance is abstract; otherwise, false. + + + + + Gets a value indicating whether this instance is not overridable. + + + true if this instance is not overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overloads. + + + true if this instance is overloads; otherwise, false. + + + + + Gets a value indicating whether this instance is overridable. + + + true if this instance is overridable; otherwise, false. + + + + + Gets a value indicating whether this instance is overrides. + + + true if this instance is overrides; otherwise, false. + + + + + Gets a value indicating whether this instance is shared. + + + true if this instance is shared; otherwise, false. + + + + + A potentially empty collection of locations that correspond to this instance. + + + + + Gets what kind of method this is. There are several different kinds of things in the + VB language that are represented as methods. This property allow distinguishing those things + without having to decode the name of the method. + + + + + The parameters forming part of this signature. + + + + + This class represents a simple implementation of compiler generated constructors + + + + + Sets the parameters. + + The parameters. + + + + This class represents a base class for compiler generated methods + + + + + Sets the parameters. + + The parameters. + + + + Represents a field of a tuple type (such as (int, byte).Item1) + that doesn't have a corresponding backing field within the tuple underlying type. + Created in response to an error condition. + + + + + If this field represents a tuple element with index X, the field contains + 2X if this field represents a Default-named element + 2X + 1 if this field represents a Friendly-named element + Otherwise, (-1 - [index in members array]); + + + + + If this is a field representing a tuple element, + returns the index of the element (zero-based). + Otherwise returns -1 + + + + + Represents an event of a tuple type (such as (int, byte).SomeEvent) + that is backed by an event within the tuple underlying type. + + + + + Represents a non-element field of a tuple type (such as (int, byte).Rest) + that is backed by a real field within the tuple underlying type. + + + + + If this field represents a tuple element with index X, the field contains + 2X if this field represents a Default-named element + 2X + 1 if this field represents a Friendly-named element + Otherwise, (-1 - [index in members array]); + + + + + If this is a field representing a tuple element, + returns the index of the element (zero-based). + Otherwise returns -1 + + + + + Represents an element field of a tuple type (such as (int, byte).Item1) + that is backed by a real field with the same name within the tuple underlying type. + + + + + Represents an element field of a tuple type (such as (int a, byte b).a, or (int a, byte b).b) + that is backed by a real field with a different name within the tuple underlying type. + + + + + Represents a method of a tuple type (such as (int, byte).ToString()) + that is backed by a method within the tuple underlying type. + + + + + Represents a parameter of a method or a property of a tuple type + + + + + Represents a property of a tuple type (such as (int, byte).SomeProperty) + that is backed by a property within the tuple underlying type. + + + + + Names of the elements as provided when tuple was created + + + + + Which element names were inferred and therefore cannot be used. + If none of the element names were inferred, or inferred names can be used (no tracking necessary), leave as default. + This information is ignored in type equality and comparison. + + + + + Actual element names. + Could be different from _providedElementNames because of case insensitivity. + I.E. - it is not an error to provide "item1" name to the first element + however its name must be "Item1", since it already has the name "Item1" + and having both "item1" and "Item1" names would be ambiguous + + + + + Get the default fields for the tuple's elements (in order and cached). + + + + + A type parameter constraint: a single 'New', 'Class', + 'Structure' constraint or a specific type constraint. + + + + + Immutable. Thread-safe. + + Represents a type substitution, with substitutions of types for a set of type parameters. + Each TypeSubstitution object has three pieces of information: + - OriginalDefinition of generic symbol the substitution is targeting. + - An array of pairs that provide a mapping from symbol's type parameters to type arguments. + identity substitutions are omitted. + - TypeSubstitution object for containing type to provide mapping for its type + parameters, if any. + + The identity substitution (for the whole type hierarchy) is represented by Nothing. That said, + top level parent of non-Nothing instance of TypeSubstitution is guaranteed to be non-identity + substitution. The instance may still be an identity substitution just for target generic definition, + which will be represented by an empty mapping array. + + The chain of TypeSubstitution objects is guaranteed to not skip any type in the containership hierarchy, + even types with zero arity contained in generic type will have corresponding TypeSubstitution object with + empty mapping array. + + Example: + Class A(Of T,S) + Class B + Class C(Of U) + End Class + End Class + End Class + + TypeSubstitution for A(Of Integer, S).B.C(Of Byte) is C{U->Byte}=>B{}=>A{T->Integer} + TypeSubstitution for A(Of T, S).B.C(Of Byte) is C{U->Byte} + TypeSubstitution for A(Of Integer, S).B is B{}=>A{T->Integer} + TypeSubstitution for A(Of Integer, S).B.C(Of U) is C{}=>B{}=>A{T->Integer} + + CONSIDER: + An array of KeyValuePair(Of TypeParameterSymbol, TypeSymbol)objects is used to represent type + parameter substitution mostly due to historical reasons. It might be more convenient and more + efficient to use ordinal based array of TypeSymbol objects instead. + + There is a Construct method that can be called on original definition with TypeSubstitution object as + an argument. The advantage of that method is the ability to substitute type parameters of several types + in the containership hierarchy in one call. What type the TypeSubstitution parameter targets makes a + difference. + + For example: + C.Construct(C{}=>B{}=>A{T->Integer}) == A(Of Integer, S).B.C(Of U) + C.Construct(B{}=>A{T->Integer}) == A(Of Integer, S).B.C(Of ) + B.Construct(B{}=>A{T->Integer}) == A(Of Integer, S).B + + See comment for IsValidToApplyTo method as well. + + + + + A map between type parameters of _targetGenericDefinition and corresponding type arguments. + Represented by an array of Key-Value pairs. Keys are type parameters of _targetGenericDefinition + in no particular order. Identity substitutions are omitted. + + + + + Definition of a symbol which this instance of TypeSubstitution primarily targets. + + + + + An instance of TypeSubstitution describing substitution for containing type. + + + + + Get all the pairs of substitutions, including from the parent substitutions. The substitutions + are in order from outside-in (parent substitutions before child substitutions). + + + + + Verify TypeSubstitution to make sure it doesn't map any + type parameter to an alpha-renamed type parameter. + + + + + + Return TypeSubstitution instance that targets particular generic definition. + + + + + Return TypeSubstitution instance that targets particular + generic definition or one of its containers. + + + + + Does substitution target either genericDefinition or + one of its containers? + + + + + Combine two substitutions into one by concatenating. + + They may not directly or indirectly (through Parent) target the same generic definition. + sub2 is expected to target types lower in the containership hierarchy. + Either or both can be Nothing. + + targetGenericDefinition specifies target generic definition for the result. + If sub2 is not Nothing, it must target targetGenericDefinition. + If sub2 is Nothing, sub1 will be "extended" with identity substitutions to target + targetGenericDefinition. + + + + + Create a substitution. If the substitution is the identity substitution, Nothing is returned. + + Generic definition the result should target. + + Type parameter definitions. Duplicates aren't allowed. Type parameters of containing type + must precede type parameters of a nested type. + + Corresponding type arguments. + + + + + Create a substitution. If the substitution is the identity substitution, Nothing is returned. + + Generic definition the result should target. + + Type parameter definitions. Duplicates aren't allowed. Type parameters of containing type + must precede type parameters of a nested type. + + Corresponding type arguments. + + + + + Private helper to make sure identity substitutions are injected for types between + targetGenericDefinition and parent.TargetGenericDefinition. + + + + + Create substitution to handle alpha-renaming of type parameters. + It maps type parameter definition to corresponding alpha-renamed type parameter. + + Alpha-renamed type parameters. + + + + Create TypeSubstitution that can be used to substitute method's type parameters + in types involved in method's signature. + + Unlike for other construction methods in this class, targetMethod doesn't have to be + original definition, it is allowed to be specialized unconstructed generic method. + + An item in typeArguments can be an alpha-renamed type parameter, but it must belong + to the targetMethod and can only appear at its ordinal position to represent the lack + of substitution for it. + + + + + Adjust substitution for construction. + This has the following effects: + 1) The passed in additionalSubstitution is used on each type argument. + 2) If any parameters in the given additionalSubstitution are not present in oldConstructSubstitution, they are added. + 3) Parent substitution in oldConstructSubstitution is replaced with adjustedParent. + + oldConstructSubstitution can be cancelled out by additionalSubstitution. In this case, + if the adjustedParent is Nothing, Nothing is returned. + + + + + This has the following effects: + 1) The passed in additionalSubstitution is used on each type argument. + 2) If any parameters in the given additionalSubstitution are not present in oldConstructSubstitution, they are added. + + Result is placed into pairs. Identity substitutions are omitted. + + Returns True if the set of pairs have changed, False otherwise. + + + + + Create substitution for targetGenericDefinition based on its type + arguments (matched to type parameters by position) and TypeSubstitution + for direct or indirect container. + + + + + A TypeSymbol is a base class for all the symbols that represent a type + in Visual Basic. + + + + + + + + + + Map with all the explicitly implemented interface symbols declared on this type. + key = interface method/property/event compared using , + value = explicitly implementing methods/properties/events declared on this type (normally a single value, multiple in case of + an error). + Access through property ONLY! + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Gets the BaseType of this type. If the base type could not be determined, then + an instance of ErrorType is returned. If this kind of type does not have a base type + (for example, interfaces), Nothing is returned. Also the special class System.Object + always has a BaseType of Nothing. + + + + + Gets the set of interfaces that this type directly implements. This set does not + include interfaces that are base interfaces of directly implemented interfaces. + + + + + The list of all interfaces of which this type is a declared subtype, excluding this type + itself. This includes all declared base interfaces, all declared base interfaces of base + types, and all declared base interfaces of those results (recursively). Each result + appears exactly once in the list. This list is topologically sorted by the inheritance + relationship: if interface type A extends interface type B, then A precedes B in the + list. This is not quite the same as "all interfaces of which this type is a proper + subtype" because it does not take into account variance: AllInterfaces for + IEnumerable(Of String) will not include IEnumerable(Of Object). + + + + Produce all implemented interfaces in topologically sorted order. We use + TypeSymbol.Interfaces as the source of edge data, which has had cycles and infinitely + long dependency cycles removed. Consequently, it is possible (and we do) use the + simplest version of Tarjan's topological sorting algorithm. + + + + Gets the set of interfaces that this type directly implements, plus the base interfaces + of all such types. + Keys are compared using , + values are distinct interfaces corresponding to the key, according to rules. + + + CONSIDER: it probably isn't truly necessary to cache this. If space gets tight, consider + alternative approaches (recompute every time, cache on the side, only store on some types, + etc). + + + + + Returns true if this type is known to be a reference type. It is never the case + that and both return true. However, for an unconstrained + type parameter, and will both return false. + + + + + Returns true if this type is known to be a value type. It is never the case + that and both return true. However, for an unconstrained + type parameter, and will both return false. + + + + + Is this a symbol for an anonymous type (including delegate). + + + + + Gets the kind of this type. + + + + + Gets corresponding special TypeId of this type. + + + + + Gets corresponding primitive type code for this type declaration. + + + + + Substitute the given type substitution within this type, returning a new type. If the + substitution had no effect, return Me. + !!! Only code implementing construction of generic types is allowed to call this method !!! + !!! All other code should use Construct methods. !!! + + + + + Lookup an immediately nested type referenced from metadata, names should be + compared case-sensitively. + + + Type name. + + + Symbol for the type, or MissingMetadataSymbol if the type isn't found. + + + + + + Verify if the given type can be used to back a tuple type + and return cardinality of that tuple type in . + + If method returns true, contains cardinality of the compatible tuple type. + + + + + Verify if the given type can be used to back a tuple type. + + + + + Verify if the given type is a tuple of a given cardinality, or can be used to back a tuple type + with the given cardinality. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Returns the corresponding symbol in this type or a base type that implements + interfaceMember (either implicitly or explicitly), or null if no such symbol + exists (which might be either because this type doesn't implement the container + of interfaceMember, or this type doesn't supply a member that successfully + implements interfaceMember). + + + Must be a non-null interface property, method, or event. + + The implementing member. + + + + Compute the implementation for an interface member in this type, or Nothing if none. + + + + + Get a dictionary with all the explicitly implemented interface symbols declared on this type. + + key = interface method/property/event compared using , + value = explicitly implementing methods/properties/events declared on this type (normally a single value, multiple in case of + an error). + + Note: This implementation is overridden by source symbols, because they diagnose errors also. + + + + + Compares types ignoring some differences. + + + + + Return true if nothing can inherit or implement this type. + + + + + Dig through possibly jagged array type to the ultimate element type + + + + + Returns true if is/inherits from/implements IEnumerable(Of U), and U is/inherits from/implements + + The type to check compatibility for. + The type argument for IEnumerable(Of ...) + True if type can be assigned to a IEnumerable(Of typeArgument); otherwise False. + This is not a general purpose helper. + + + + Determines whether the given type is valid for a const field. + VB Spec 9.5: The type of a constant may only be a primitive type or Object + + The type of the field. + true if type is valid for a const field; otherwise, false. + + + + + Return true if the type contains any tuples. + + + + + Return true if the type contains any tuples with element names. + + + + + Visit the given type and, in the case of compound types, visit all "sub type" + (such as A in A(), or { A(Of T), T, U } in A(Of T).B(Of U)) invoking 'predicate' + with the type and 'arg' at each sub type. If the predicate returns true for any type, + traversal stops and that type is returned from this method. Otherwise if traversal + completes without the predicate returning true for any type, this method returns null. + + + + + Determines if the type is a valid type for a custom attribute argument + + + + + + The only valid types are + 1. primitive types except date and decimal, + 2. object, system.type, public enumerated types + 3. one dimensional arrays of (1) and (2) above + + + + + Add this instance to the set of checked types. Returns True + if this type was added, False if the type was already in the set. + + + + Checks for validity of type arguments passed to Construct(...) method + + + + Returns Nothing for identity substitution. + + + + + Returns Nothing for identity substitution. + + + + + Is this type System.Linq.Expressions.Expression(Of T) for some delegate type T. If so, return the type + argument, else return nothing. + The passed-in compilation is used to find the well-known-type System.Linq.Expressions.Expression(Of T). + + + + + If the passed in type is a delegate type D, return D. + If the passed in type is a System.Linq.Expressions.Expression(Of D) for a delegate type D, return D. + Else return Nothing + + + + + If the passed in type is a delegate type D, return D and set wasExpression to False + If the passed in type is a System.Linq.Expressions.Expression(Of D) for a delegate type D, return D and set wasExpression to True + Else return Nothing and set wasExpression to False + + + + + If the passed in type is a System.Linq.Expressions.Expression(Of D) for a delegate type D, return True + + + + + Return all of the type parameters in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return all of the type parameters in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return all of the type arguments in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return all of the type arguments and their modifiers in this type and enclosing types, + from outer-most to inner-most type. + + + + + Return true if the fully qualified name of the type's containing symbol + matches the given name. This method avoids string concatenations + in the common case where the type is a top-level type. + + + + + Extract type under assumption that there should be no custom modifiers. + The method asserts otherwise. + + + + + + Given a possibly constructed/specialized generic type, create a symbol + to represent an unbound generic type for its definition. + + + + + Force all declaration errors to be generated. + + + + + Represents an event that is based on another event. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Represents a field that is based on another field. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Represents a method that is based on another method. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Represents a named type that is based on another named type. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Represents a parameter that is based on another parameter. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Represents a property that is based on another property. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Represents a type parameter that is based on another type parameter. + When inheriting from this class, one shouldn't assume that + the default behavior it has is appropriate for every case. + That behavior should be carefully reviewed and derived type + should override behavior as appropriate. + + + + + Provides context for binding top-level statements in a script. + + + + + Create binder for binding the body of a method. + + + + + Provides lookup in types of imported namespaces, either at file level or project level. + + + + + Collect extension methods with the given name that are in scope in this binder. + The passed in ArrayBuilder must be empty. Extension methods from the same containing type + must be grouped together. + + + + + Binder used to bind using blocks. + It hosts the variables declared in the resource list (if they are declared). + + + + + Holds all information needed to rewrite a bound using block node. + + + + + A dictionary holding a placeholder, a conversion from placeholder to IDisposable and a condition if placeholder IsNot nothing + per type. + + + + + Syntax node for the using block. + + + + + Initializes a new instance of the class. + + The syntax node for the using block + A dictionary holding a placeholder, a conversion from placeholder to IDisposable and + a condition if placeholder IsNot nothing per type. + + + + Gets the Binder.DelegateResolutionResult for the given targetType. + + + One needs to call GetConversionClassification before in order to fill the cache. + + Type of the target. + The Binder.DelegateResolutionResult for the conversion + of the AddressOf operand to the target type + + + + + Gets the conversion classification. + + The destination type to convert to. + + + + Gets a value indicating whether this do loop is a DoTopLoop or not. In syntax error cases + where both conditions are used, priority is given to the first one. + It's recommended to consistently use this property instead of checking the TopConditionOpt and BottomConditionOpt + directly. + + + true if this loop is a DoTopLoop; otherwise, false. + + + + + Gets a value indicating whether the condition of this do loop is "until" or not. In syntax error cases + where both conditions are used, priority is given to the first one. + It's recommended to consistently use this property instead of checking TopConditionIsUntil and BottomConditionIsUntil + directly. + + + true if this loop is a DoTopLoop; otherwise, false. + + + + + Gets the optional bound condition expression for this do loop statement. In syntax error cases + where both conditions are used, priority is given to the first one. + It's recommended to consistently use this property instead of accessing TopConditionOpt or BottomConditionOpt + directly. + + + + + Returns true if calls and delegate invocations with this + expression as the receiver should be non-virtual calls. + + + + + Does expression refer to a physical memory location that can be modified? + + Note, Dev10 uses SXF_LVALUE flag on bound nodes to represent this concept. + + + + Returns True if the node specified is one of Me/MyClass/MyBase + + + + Returns True if the expression is a property access expression, + either directly or wrapped in an XML member access expression. + + + + + Does this node represent a property with Set accessor and AccessKind not yet bound to Get? + + + + + Does this node represent a property or latebound access not yet determined to be Get? + + + + + Get the access kind from property access expression. + + + + + Sets the access kind on the property access expression. To clear the access + kind, 'newAccessKind' should be Unknown. Otherwise, the current property + access kind should be Unknown or equal to 'newAccessKind'. + + + + + Return a BoundXmlMemberAccess node with + updated MemberAccess property. + + + + + Return true if and only if an expression is a integral literal with a value of zero. + Non-literal constant value zero does not qualify. + + + + + Return true if and only if an expression is a integral literal with a value of zero. + Non-literal constant value zero does not qualify. + + + + + Checks if the expression is a default value (0 or Nothing) + + + + + Checks if the expression is a constant and that constant is False + + + + + Checks if the expression is a constant and that constant is True + + + + + Checks if the expression is a negative integer constant value. + + + + + Return the integer constant value (if any) from a BoundExpression + + + + + Return true if and only if an expression is a semantical Nothing literal, + which is defined as follows (the definition is consistent with + definition used by Dev10 compiler): + - A Nothing literal according to the language grammar, or + - A parenthesized expression, for which IsNothingLiteral returns true, or + - An expression of type Object with constant value == Nothing. + + + + + Return true if target BoundLiteral represents Nothing literal as defined by the language grammar. + + + + + Return true if and only if an expression represents optionally + parenthesized Nothing literal as defined by the language grammar. + I.e. implicit conversions are Ok, but explicit conversions aren't. + + + + + returns type arguments or Nothing if group does not have type arguments. + + + + + Should this lambda be treated as a single line lambda? + + + + + Updates access kind. To clear the access kind, + 'newAccessKind' should be Unknown. Otherwise, the current + access kind should be Unknown or equal to 'newAccessKind'. + + + + + Updates property access kind. To clear the access kind, + 'newAccessKind' should be Unknown. Otherwise, the current + access kind should be Unknown or equal to 'newAccessKind'. + + + + + returns name used to lookup the method/property in the group. + + + + + returns the container of the first member in the group. + + + + + The node should not be treated as a direct semantical representation of the syntax it is associated with. + Some examples: + - implicit call for base constructor is associated with the constructor syntax. + - code in compiler generated constructor is associated with the type declaration. + + Nodes marked this way are likely to be skipped by SemanticModel, Sequence Point rewriter, etc. + + + + + Override this property to return the child nodes if the IOperation API corresponding to this bound node is not yet designed or implemented. + + + Note that any of the child bound nodes may be null. + + + + + Get the Binder from a lambda node, or return Nothing if this isn't + a lambda node. + + + + + The visitor which searches for a bound node inside a bound subtree + + + + Note: Nothing if node is found + + + + Updates property access kind. To clear the access kind, + 'newAccessKind' should be Unknown. Otherwise, the current + access kind should be Unknown or equal to 'newAccessKind'. + + + + + If the access includes a set, the type of the expression + is the type of the setter value parameter. Otherwise, the + type of the expression is the return type of the getter. + + + + + Consumers must provide implementation for . + + + + + We should be intentional about behavior of derived classes regarding guarding against stack overflow. + + + + Returns the placeholder used in this With statement to + substitute the expression in initial binding + + + + A draft version of initializers which will be used in this With statement. + Initializers are expressions which are used to capture expression in the current + With statement; they can be empty in some cases like if the expression is a local + variable of value type. + + Note, the initializers returned by this property are 'draft' because they are + generated based on initial bound tree, the real initializers will be generated + in lowering based on lowered expression form. + + + + + A draft version of placeholder substitute which will be used in this With statement. + + Note, the placeholder substitute returned by this property is 'draft' because it is + generated based on initial bound tree, the real substitute will be generated in lowering + based on lowered expression form. + + + + + Suppresses RValue validation when constructing the node. + Must be used _only_ when performing lambda inference where RValue inconsistency on this node is intentionally allowed. + If such node makes into a regular bound tree it will be eventually rewritten (all Yields are rewritten at some point) + and that will trigger validation. + + + + + For nodes that can generate an , this allows the Lazy implementation + to get the children of this node on demand. + + + + + NoOpStatementFlavor specifies additional info that NoOp statement may be carrying; + Such info may be used in rewriting or code gen phases to perform some special actions + + + + + Marks a control yield point for emitted await operator; is processed by codegen; + only allowed inside MoveNext methods generated for Async methods + + + + + Marks a control resume point for emitted await operator; is processed by codegen; + only allowed inside MoveNext methods generated for Async methods + + + + + BoundExpressions to be used for emit. The expressions are assumed + to be lowered and will not be visited by . + + + + + Should this lambda be treated as a single line lambda? + + + + + Is this a function lambda + + + + + target.ReturnType is ignored and must be Void, only parameter types are taken into consideration. + + + + + This class is used to cache various information about a lambda in the course of binding an expression/statement + containing the lambda. Even though the members are public, they shouldn't be accessed directly by any code + outside of the UnboundLambda class. + + + + Keeps track on current nesting level of try statements + + + Current enclosing Catch block if there is any. + + + + Emits address as in & + + May introduce a temp which it will return. (otherwise returns null) + + + + + Emits address of a temp. + Used in cases where taking address directly is not possible + (typically because expression does not have a home) + + Will introduce a temp which it will return. + + + + + Checks if expression represents directly or indirectly a value with its own home. + In such cases it is possible to get a reference without loading into a temporary. + + This is a CLR concept which is weaker than VB's IsLValue. + For example all locals are homed even if VB may consider some locals read-only. + + + + + Special HasHome for fields. Fields have homes when they are writable. + + + + + Checks if it is allowed to take a writable reference to expression according to VB rules. + + + + + Checks if it is allowed to take a writable reference to expression according to VB rules. + + + + + Can take a reference. + + + + + Emits receiver in a form that allows member accesses ( O or & ). For verifiably + reference types it is the actual reference. For generic types it is a address of the + receiver with readonly intent. For the value types it is an address of the receiver. + + isAccessConstrained indicates that receiver is a target of a constrained callvirt + in such case it is unnecessary to box a receiver that is typed to a type parameter + + May introduce a temp which it will return. (otherwise returns null) + + + + + May introduce a temp which it will return. (otherwise returns null) + + + + + Entry point to the array initialization. + Assumes that we have newly created array on the stack. + + inits could be an array of values for a single dimensional array + or an array (of array)+ of values for a multidimensional case + + in either case it is expected that number of leaf values will match number + of elements in the array and nesting level should match the rank of the array. + + + + + To handle array initialization of arbitrary rank it is convenient to + approach multidimensional initialization as a recursively nested. + + ForAll{i, j, k} Init(i, j, k) ===> + ForAll{i} ForAll{j, k} Init(i, j, k) ===> + ForAll{i} ForAll{j} ForAll{k} Init(i, j, k) + + This structure is used for capturing initializers of a given index and + the index value itself. + + + + + Emits all initializers that match indices on the stack recursively. + + Example: + if array has [0..2, 0..3, 0..2] shape + and we have {1, 2} indices on the stack + initializers for + [1, 2, 0] + [1, 2, 1] + [1, 2, 2] + + will be emitted and the top index will be pushed off the stack + as at that point we would be completely done with emitting initializers + corresponding to that index. + + + + + Count of all initializers. + + + + + Produces a serialized blob of all constant initializers. + Non-constant initializers are matched with a zero of corresponding size. + + + + + Check if it is a regular collection of expressions or there are nested initializers. + + + + + Returns parameterless value type constructor. + + + + + Used to decide if we need to emit call or callvirt. + It basically checks if the receiver expression cannot be null, but it is not 100% precise. + There are cases where it really can be null, but we do not care. + + + + + checks if receiver is effectively ldarg.0 + + + + + Used to decide if we need to emit 'call' or 'callvirt' for structure method. + It basically checks if the method overrides any other and method's defining type + is not a 'special' or 'special-by-ref' type. + + + + + Emit code for a ternary conditional operator. + + + if (b, x, y) becomes + push b + if pop then goto CONSEQUENCE + push y + goto DONE + CONSEQUENCE: + push x + DONE: + + + + + Emit code for a null-coalescing operator. + + + if(x, y) becomes + push x + dup x + if pop isnot null goto LEFT_NOT_NULL + pop + push y + LEFT_NOT_NULL: + + + + + Emit an element store instruction for a single dimensional array. + + + + + Tells if we should emit [Set/Clear]ProjectErrors when entering/leaving handlers + + + + + tells if given node contains a label statement that defines given label symbol + + + + + Delegate to emit string compare call and conditional branch based on the compare result. + + Key to compare + Node for diagnostics + Case constant to compare the key against + Target label to branch to if key = stringConstant + String equality method + + + + Gets the name And id of the local that are going to be generated into the debug metadata. + + + + + Gets already declared and initialized local. + + + + + Allocates a temp without identity. + + + + + Frees a temp without identity. + + + + + Frees an optional temp. + + + + + Optimizer performs optimization of the bound tree performed before passing it to a codegen. Generally it may + include several phases like stack scheduling of local variables, etc... + + + + + + context of expression evaluation. + it will affect inference of stack behavior + it will also affect when expressions can be dup-reused + Example: + Goo(x, ref x) x cannot be duped as it is used in different context + + + + + Analyzes the tree trying to figure which locals may live on stack. It is + a fairly delicate process and must be very familiar with how CodeGen works. + It is essentially a part of CodeGen. + + NOTE: It is always safe to mark a local as not eligible as a stack local + so when situation gets complicated we just refuse to schedule and move on. + + + + + fake local that represents the eval stack. when we need to ensure that eval + stack is not blocked by stack Locals, we record an access to empty. + + + + + here we have a case of indirect assignment: *t1 = expr; + normally we would need to push t1 and that will cause spilling of t2 + + TODO: an interesting case arises in unused x[i]++ and ++x[i] : + we have trees that look like: + + t1 = &(x[0]) + t2 = *t1 + *t1 = t2 + 1 + + t1 = &(x[0]) + t2 = *t1 + 1 + *t1 = t2 + + in these cases, we could keep t2 on stack (dev10 does). + we are dealing with exactly 2 locals and access them in strict order + t1, t2, t1, t2 and we are not using t2 after that. + We may consider detecting exactly these cases and pretend that we do not need + to push either t1 or t2 in this case. + + + + + VB uses a special node to assign references. + BoundAssignment is used only to assign values. + therefore an indirect assignment may only happen if lhs is a reference + + + + + Ensures that there are no stack locals. It is done by accessing + virtual "empty" local that is at the bottom of all stack locals. + + + + + + Represents a local and its Def-Use-Use chain + + NOTE: stack local reads are destructive to the locals so + if the read is not last one, it must be immediately followed by another definition. + For the rewriting purposes it is irrelevant if definition was created by a write or + a subsequent read. These cases are not ambiguous because when rewriting, definition + will match to a single node and we always know if given node is reading or writing. + + + + + + stack at variable declaration, may be > 0 in sequences. + + + + + value definitions for this variable + + + + + once this goes to true we are no longer interested in this variable. + + + + + Represents a span of a value between definition and use. Start/end positions are + specified in terms of global node count as visited by StackOptimizer visitors. + (i.e. recursive walk not looking into constants) + + + + + when current And other use spans are regular spans we can have only 2 conflict cases: + [1, 3) conflicts with [0, 2) + [1, 3) conflicts with [2, 4) + + NOTE: With regular spans, it is not possible for two spans to share an edge point + unless they belong to the same local. (because we cannot access two real locals at the same time) + + specifically: + [1, 3) does Not conflict with [0, 1) since such spans would need to belong to the same local + + + + + Dummy locals represent implicit control flow + it is not allowed for a regular local span to cross into or + be immediately adjacent to a dummy span. + + specifically: + [1, 3) does conflict with [0, 1) since that would imply a value flowing into or out of a span surrounded by a branch/label + + + + + + Rewrites the tree to account for destructive nature of stack local reads. + + Typically, last read stays as-is and local is destroyed by the read. + Intermediate reads are rewritten as Dups - + + NotLastUse(X_stackLocal) ===> NotLastUse(Dup) + LastUse(X_stackLocal) ===> LastUse(X_stackLocal) + + + + + + Built-in binary operators bound in "OperandOfConditionalBranch" mode are marked with + this flag by the Binder, which makes them eligible for some optimizations in + + + + + + marks built-in binary operators + with this flag in order to inform that the operator + should be a subject for optimization around use of three-valued Boolean logic. + The optimization should be applied only when we are absolutely sure that we will "snap" Null to false. + That is when we actually have the as the ancestor and no user defined operators + in between. We simply don't know that information during binding because we haven't bound binary operators + up the hierarchy yet. So the optimization is triggered by the fact of snapping Null to false + (getting to the method) and then we are making + sure we don't have anything unexpected in between. + + + + + The CommandLineArguments class provides members to Set and Get Visual Basic compilation and parse options. + + + + + Set and Get the Visual Basic compilation options. + + The currently set Visual Basic compilation options. + + + + Set and Get the Visual Basic parse options. + + The currently set Visual Basic parse options. + + + + Gets the core Parse options. + + The currently set core parse options. + + + + Gets the core compilation options. + + The currently set core compilation options. + + + + The VisualBasicCommandLineParser class contains members used to perform various Visual Basic command line parsing operations. + + + + + Gets the current command line parser. + + + + + Gets the current interactive command line parser. + + + + + Creates a new command line parser. + + An optional parameter indicating whether to create a interactive command line parser. + + + + Gets the standard Visual Basic source file extension + + A string representing the standard Visual Basic source file extension. + + + + Gets the standard Visual Basic script file extension. + + A string representing the standard Visual Basic script file extension. + + + + Parses a command line. + + A collection of strings representing the command line arguments. + The base directory used for qualifying file locations. + The directory to search for mscorlib, or Nothing if not available. + A string representing additional reference paths. + A CommandLineArguments object representing the parsed command line. + + + + Converts a sequence of definitions provided by a caller (public API) into map + of definitions used internally. + + Invalid value provided. + + + + Converts ImmutableDictionary of definitions used internally into IReadOnlyDictionary of definitions + returned to a caller (of public API) + + + + + Parses Conditional Compilations Symbols. Given the string of conditional compilation symbols from the project system, parse them and merge them with an IReadOnlyDictionary + ready to be given to the compilation. + + + The conditional compilation string. This takes the form of a comma delimited list + of NAME=Value pairs, where Value may be a quoted string or integer. + + A collection of reported diagnostics during parsing of symbolList, can be empty IEnumerable. + A collection representing existing symbols. Symbols parsed from will be merged with this dictionary. + Invalid value provided. + + + + NOTE: implicit line continuation will not be handled here and an error will be generated, + but explicit one (like ".... _\r\n ....") should work fine + + + + + Parses the given platform option. Legal strings are "anycpu", "x64", "x86", "itanium", "anycpu32bitpreferred", "arm". + In case an invalid value was passed, anycpu is returned. + + The value for platform. + The error bag. + + + + Parses the file alignment option. + In case an invalid value was passed, nothing is returned. + + The name of the option. + The value for the option. + The error bag. + + + + Parses the base address option. + In case an invalid value was passed, nothing is returned. + + The name of the option. + The value for the option. + The error bag. + + + + Parses the warning option. + + The value for the option. + + + + In VB, if the output file name isn't specified explicitly, then it is derived from the name of the + first input file. + + + http://msdn.microsoft.com/en-us/library/std9609e(v=vs.110) + Specify the full name and extension of the file to create. If you do not, the .exe file takes + its name from the source-code file containing the Sub Main procedure, and the .dll file takes + its name from the first source-code file. + + However, vbc.cpp has: + + + + + + Print compiler logo + + + + + + Print Commandline help message (up to 80 English characters per line) + + + + + + Structure containing all semantic information about an Await expression. + + + + + Initializes a new instance of the structure. + + + + + Gets the "GetAwaiter" method. + + + + + Gets the "GetResult" method. + + + + + Gets the "IsCompleted" property. + + + + + This structure holds the relevant bound node information relating to a particular syntax + node, used temporarily for GetSemanticInfo and similar APIs. + + + + + Traverses the symbol table checking for CLS compliance. + + + + + + + + Gets a value indicating whether Is allowed to analyze in parallel. + + + + + Traverses the symbol table checking for CLS compliance. + + Compilation that owns the symbol table. + Will be supplemented with documentation comment diagnostics. + To stop traversing the symbol table early. + Only report diagnostics from this syntax tree, if non-null. + If and is non-null, report diagnostics within this span in the . + + + + NOTE: Dev11 does some pretty weird things here. First, it ignores arity, + which seems like a good way to disambiguate symbols (in particular, + CLS Rule 43 says that the name includes backtick-arity). Second, it + does not consider two members with identical names (i.e. not differing + in case) to collide. + + + + + What is the argument to the (first) CLSCompliantAttribute on this symbol, if there is one? + Consider attributes inherited from base types. + + + + + What is the argument to the (first) CLSCompliantAttribute on this symbol, if there is one? + Do not consider attributes inherited from base types. + + + + + Return the containing module if the output kind is module and the containing assembly otherwise. + + + + + Based on CompilationPass::CLSReduceSignature. + + + + + The Compilation object is an immutable representation of a single invocation of the + compiler. Although immutable, a Compilation is also on-demand, in that a compilation can be + created quickly, but will that compiler parts or all of the code in order to respond to + method or properties. Also, a compilation can produce a new compilation with a small change + from the current compilation. This is, in many cases, more efficient than creating a new + compilation from scratch, as the new compilation can share information from the old + compilation. + + + + + For semantic model scenarios we continue processing documentation comment even in presence + of some errors. Now, we detect semantic model context from '_isForSingleSymbol' flag, + later we might consider introducing an explicit flag + + + + + Given a DocumentationCommentTriviaSyntax and the symbol, return the + full documentation comment text. + + + + + Gets the value of the first 'name' attribute on the element, returns Nothing in case + the attribute was not found or has an invalid value, reports necessary diagnostics in + the latest case + + + + + Return symbol text name the way Dev11 does it + + + + + Rewrites nodes in , which Is a snapshot of nodes from the original document. + We're mutating the tree as we rewrite, so it's important to grab a snapshot of the + nodes that we're going to reparent before we enumerate them. + + + + True, if the comment was written + + + + Generates the documentation comment for the type, writes it into + the writer + + + + + Given the full text of a documentation comment, strip off the comment + punctuation (''') and add appropriate indentations. + + + + + Given a string, find the index of the first non-whitespace char. + + The string to search + The index of the first non-whitespace char in the string + + + + Find the first non-whitespace character in a given substring. + + The string to search + The start index + The last index (non-inclusive) + The index of the first non-whitespace char after index + start in the string up to, but not including the end index + + + + Determine if the given string starts with the given prefix if whitespace + is first trimmed from the beginning. + + The string to search + The prefix + true if "str.TrimStart().StartsWith(prefix)" + + + + Given a string which may contain newline sequences, get the index of the first newline + sequence beginning at the given starting index. + + The string to split. + The starting index within the string. + The length of the newline sequence discovered. 0 if the end of the string was reached, otherwise either 1 or 2 chars + The index of the start of the first newline sequence following the start index + + + + Given the full text of a single-line style documentation comment, for each line, strip off + the comment punctuation (''') and flatten the text. + + + + + WORKAROUND: + We're taking a dependency on the location and structure of a framework assembly resource. This is not a robust solution. + + Possible alternatives: + 1) Polish our XML parser until it matches MSXML. We don't want to reinvent the wheel. + 2) Build a map that lets us go from XML string positions back to source positions. + This is what the native compiler did, and it was a lot of work. We'd also still need to modify the message. + 3) Do not report a diagnostic. This is very unhelpful. + 4) Report a vague diagnostic (i.e. there's a problem somewhere in this doc comment). This is relatively unhelpful. + 5) Always report the message in English, so that we can pull it apart without needing to mess with resource files. + This engenders a lot of ill will. + 6) Report the exception message without modification and (optionally) include the text with respect to which the + position is specified. This looks amateurish. + + + + + Traverses the symbol table processing XML documentation comments and optionally writing them to a provided stream. + + Compilation that owns the symbol table. + Assembly name override, if specified. Otherwise the of the source assembly is used. + Stream to which XML will be written, if specified. + Will be supplemented with documentation comment diagnostics. + To stop traversing the symbol table early. + Only report diagnostics from this syntax tree, if non-null. + If and filterSpanWithinTree is non-null, report diagnostics within this span in the . + + + + Gets the XML that would be written to the documentation comment file for this assembly. + + The symbol for which to retrieve documentation comments. + True to treat includes as semantically meaningful + (pull in contents from other files and bind crefs, etc). + To stop traversing the symbol table early. + + + + Walks a DocumentationCommentTriviaSyntax, binding the semantically meaningful parts + to produce diagnostics and to replace source crefs with documentation comment IDs. + + + + + Given a DocumentationCommentTriviaSyntax, return the full text, but with + documentation comment IDs substituted into crefs. + + + + + most of time all compilation would use same MyTemplate. no reason to create (reparse) one for each compilation + as long as its parse option is same + + + + + The SourceAssemblySymbol for this compilation. Do not access directly, use Assembly + property instead. This field is lazily initialized by ReferenceManager, + ReferenceManager.CacheLockObject must be locked while ReferenceManager "calculates" the + value and assigns it, several threads must not perform duplicate "calculation" + simultaneously. + + + + + Holds onto data related to reference binding. + The manager is shared among multiple compilations that we expect to have the same result of reference binding. + In most cases this can be determined without performing the binding. If the compilation however contains a circular + metadata reference (a metadata reference that refers back to the compilation) we need to avoid sharing of the binding results. + We do so by creating a new reference manager for such compilation. + + + + + The options passed to the constructor of the Compilation + + + + + The global namespace symbol. Lazily populated on first access. + + + + + The syntax trees explicitly given to the compilation at creation, in ordinal order. + + + + + The syntax trees of this compilation plus all 'hidden' trees + added to the compilation by compiler, e.g. Vb Core Runtime. + + + + + A map between syntax trees and the root declarations in the declaration table. + Incrementally updated between compilation versions when source changes are made. + + + + + Imports appearing in s in this compilation. + + + Unlike in C#, we don't need to use a set because the objects + that record the imports are persisted. + + + + + Cache the CLS diagnostics for the whole compilation so they aren't computed repeatedly. + + + NOTE: Presently, we do not cache the per-tree diagnostics. + + + + + A SyntaxTree and the associated RootSingleNamespaceDeclaration for an embedded + syntax tree in the Compilation. Unlike the entries in m_rootNamespaces, the + SyntaxTree here is lazy since the tree cannot be evaluated until the references + have been resolved (as part of binding the source module), and at that point, the + SyntaxTree may be Nothing if the embedded tree is not needed for the Compilation. + + + + + The declaration table that holds onto declarations from source. Incrementally updated + between compilation versions when source changes are made. + + + + + + Manages anonymous types declared in this compilation. Unifies types that are structurally equivalent. + + + + + Manages automatically embedded content. + + + + + MyTemplate automatically embedded from resource in the compiler. + It doesn't feel like it should be managed by EmbeddedSymbolManager + because MyTemplate is treated as user code, i.e. can be extended via + partial declarations, doesn't require "on-demand" metadata generation, etc. + + SyntaxTree.Dummy means uninitialized. + + + + + Contains the main method of this assembly, if there is one. + + + + + The set of trees for which a has been added to the queue. + + + + + The common language version among the trees of the compilation. + + + + + The language version that was used to parse the syntax trees of this compilation. + + + + + SyntaxTree of MyTemplate for the compilation. Settable for testing purposes only. + + + + + Create a new compilation from scratch. + + Simple assembly name. + The syntax trees with the source code for the new compilation. + The references for the new compilation. + The compiler options to use. + A new compilation. + + + + Creates a new compilation that can be used in scripting. + + + + + Create a duplicate of this compilation with different symbol instances + + + + + Creates a new compilation with the specified name. + + + + + Creates a new compilation with the specified references. + + + The new will query the given for the underlying + metadata as soon as the are needed. + + The New compilation uses whatever metadata is currently being provided by the . + E.g. if the current compilation references a metadata file that has changed since the creation of the compilation + the New compilation is going to use the updated version, while the current compilation will be using the previous (it doesn't change). + + + + + Returns a new compilation with the given compilation set as the previous submission. + + + + + Returns a new compilation with the given semantic model provider. + + + + + Returns a new compilation with a given event queue. + + + + + Get a read-only list of the syntax trees that this compilation was created with. + + + + + Get a read-only list of the syntax trees that this compilation was created with PLUS + the trees that were automatically added to it, i.e. Vb Core Runtime tree. + + + + + Is the passed in syntax tree in this compilation? + + + + + Returns True if the set of references contains those assemblies needed for XML + literals. + If those assemblies are included, we should include the InternalXmlHelper + SyntaxTree in the Compilation so the helper methods are available for binding XML. + + + + + Compare two source locations, using their containing trees, and then by Span.First within a tree. + Can be used to get a total ordering on declarations, for example. + + + + + Compare two source locations, using their containing trees, and then by Span.First within a tree. + Can be used to get a total ordering on declarations, for example. + + + + + Compare two source locations, using their containing trees, and then by Span.First within a tree. + Can be used to get a total ordering on declarations, for example. + + + + + Gets the or for a metadata reference used to create this compilation. + + or corresponding to the given reference or Nothing if there is none. + + Uses object identity when comparing two references. + + + + + Gets the that corresponds to the assembly symbol. + + + + + Determine if enum arrays can be initialized using block initialization. + + True if it's safe to use block initialization for enum arrays. + + In NetFx 4.0, block array initializers do not work on all combinations of {32/64 X Debug/Retail} when array elements are enums. + This is fixed in 4.5 thus enabling block array initialization for a very common case. + We look for the presence of which was introduced in .NET Framework 4.5 + + + + + Gets the AssemblySymbol that represents the assembly being created. + + + + + Get a ModuleSymbol that refers to the module being created by compiling all of the code. By + getting the GlobalNamespace property of that module, all of the namespace and types defined in source code + can be obtained. + + + + + Gets the merged root namespace that contains all namespaces and types defined in source code or in + referenced metadata, merged into a single namespace hierarchy. This namespace hierarchy is how the compiler + binds types that are referenced in code. + + + + + Get the "root" or default namespace that all source types are declared inside. This may be the + global namespace or may be another namespace. + + + + + Given a namespace symbol, returns the corresponding namespace symbol with Compilation extent + that refers to that namespace in this compilation. Returns Nothing if there is no corresponding + namespace. This should not occur if the namespace symbol came from an assembly referenced by this + compilation. + + + + + Returns the list of member imports that apply to all syntax trees in this compilation. + + + + + Returns the list of alias imports that apply to all syntax trees in this compilation. + + + + + Determine what kind of conversion, if any, there is between the types + "source" and "destination". + + + + + A symbol representing the implicit Script class. This is null if the class is not + defined in the compilation. + + + + + Resolves a symbol that represents script container (Script class). + Uses the full name of the container class stored in to find the symbol. + + + The Script class symbol or null if it is not defined. + + + + + Get symbol for predefined type from Cor Library referenced by this compilation. + + + + + Get symbol for predefined type member from Cor Library referenced by this compilation. + + + + + Lookup a type within the compilation's assembly and all referenced assemblies + using its canonical CLR metadata name (names are compared case-sensitively). + + + + + Symbol for the type or null if type cannot be found or is ambiguous. + + + + + Get a fresh SemanticModel. Note that each invocation gets a fresh SemanticModel, each of + which has a cache. Therefore, one effectively clears the cache by discarding the + SemanticModel. + + + + + Get all diagnostics for the entire compilation. This includes diagnostics from parsing, declarations, and + the bodies of methods. Getting all the diagnostics is potentially a length operations, as it requires parsing and + compiling all the code. The set of diagnostics is not caches, so each call to this method will recompile all + methods. + + Cancellation token to allow cancelling the operation. + + + + Get parse diagnostics for the entire compilation. This includes diagnostics from parsing BUT NOT from declarations and + the bodies of methods or initializers. The set of parse diagnostics is cached, so calling this method a second time + should be fast. + + + + + Get declarations diagnostics for the entire compilation. This includes diagnostics from declarations, BUT NOT + the bodies of methods or initializers. The set of declaration diagnostics is cached, so calling this method a second time + should be fast. + + Cancellation token to allow cancelling the operation. + + + + Get method body diagnostics for the entire compilation. This includes diagnostics only from + the bodies of methods and initializers. These diagnostics are NOT cached, so calling this method a second time + repeats significant work. + + Cancellation token to allow cancelling the operation. + + + + Get all errors in the compilation, up through the given compilation stage. Note that this may + require significant work by the compiler, as all source code must be compiled to the given + level in order to get the errors. Errors on Options should be inspected by the user prior to constructing the compilation. + + + Returns all errors. The errors are not sorted in any particular order, and the client + should sort the errors as desired. + + + + + Return true if there is a source declaration symbol name that meets given predicate. + + + + + Return source declaration symbols whose name meets given predicate. + + + + + Return true if there is a source declaration symbol name that matches the provided name. + This may be faster than when predicate is just a simple string check. + is case insensitive. + + + + + ReferenceManager encapsulates functionality to create an underlying SourceAssemblySymbol + (with underlying ModuleSymbols) for Compilation and AssemblySymbols for referenced assemblies + (with underlying ModuleSymbols) all properly linked together based on reference resolution + between them. + + ReferenceManager is also responsible for reuse of metadata readers for imported modules and + assemblies as well as existing AssemblySymbols for referenced assemblies. In order to do that, + it maintains global cache for metadata readers and AssemblySymbols associated with them. + The cache uses WeakReferences to refer to the metadata readers and AssemblySymbols to allow + memory and resources being reclaimed once they are no longer used. The tricky part about reusing + existing AssemblySymbols is to find a set of AssemblySymbols that are created for the referenced + assemblies, which (the AssemblySymbols from the set) are linked in a way, consistent with the + reference resolution between the referenced assemblies. + + When existing Compilation is used as a metadata reference, there are scenarios when its underlying + SourceAssemblySymbol cannot be used to provide symbols in context of the new Compilation. Consider + classic multi-targeting scenario: compilation C1 references v1 of Lib.dll and compilation C2 + references C1 and v2 of Lib.dll. In this case, SourceAssemblySymbol for C1 is linked to AssemblySymbol + for v1 of Lib.dll. However, given the set of references for C2, the same reference for C1 should be + resolved against v2 of Lib.dll. In other words, in context of C2, all types from v1 of Lib.dll + leaking through C1 (through method signatures, etc.) must be retargeted to the types from v2 of Lib.dll. + In this case, ReferenceManager creates a special RetargetingAssemblySymbol for C1, which is responsible + for the type retargeting. The RetargetingAssemblySymbols could also be reused for different + Compilations, ReferenceManager maintains a cache of RetargetingAssemblySymbols (WeakReferences) for each + Compilation. + + The only public entry point of this class is CreateSourceAssembly() method. + + + + + VB allows two weak assembly references of the same simple name be passed to a compilation + as long as their versions are different. It ignores culture. + + + + + Creates a from specified metadata. + + + Used by EnC to create symbols for emit baseline. The PE symbols are used by . + + The assembly references listed in the metadata AssemblyRef table are matched to the resolved references + stored on this . We assume that the dependencies of the baseline metadata are + the same as the dependencies of the current compilation. This is not exactly true when the dependencies use + time-based versioning pattern, e.g. AssemblyVersion("1.0.*"). In that case we assume only the version + changed And nothing else. + + Each AssemblyRef is matched against the assembly identities using an exact equality comparison modulo version. + AssemblyRef with lower version in metadata is matched to a PE assembly symbol with the higher version + (provided that the assembly name, culture, PKT And flags are the same) if there is no symbol with the exactly matching version. + If there are multiple symbols with higher versions selects the one with the minimal version among them. + + Matching to a higher version is necessary to support EnC for projects whose P2P dependencies use time-based versioning pattern. + The versions of the dependent projects seen from the IDE will be higher than + the one written in the metadata at the time their respective baselines are built. + + No other unification or further resolution is performed. + + + + + A map of the PE assembly symbol identities to the identities of the original metadata AssemblyRefs. + This map will be used in emit when serializing AssemblyRef table of the delta. For the delta to be compatible with + the original metadata we need to map the identities of the PE assembly symbols back to the original AssemblyRefs (if different). + In other words, we pretend that the versions of the dependencies haven't changed. + + + + + Guarded by . + + + + + Import options of the compilation being built. + + + + + For testing purposes only. + + + + + For testing purposes only. + + + + + An array of cached well known types available for use in this Compilation. + Lazily filled by GetWellKnownType method. + + + + + + Lazy cache of well known members. + Not yet known value is represented by ErrorTypeSymbol.UnknownResultType + + + + + Synthesizes a custom attribute. + Returns Nothing if the symbol is missing, + or any of the members in are missing. + The attribute is synthesized only if present. + + + Takes a list of pairs of well-known members and constants. The constants + will be passed to the field/property referenced by the well-known member. + If the well-known member does Not exist in the compilation then no attribute + will be synthesized. + + + Indicates if this particular attribute application should be considered optional. + + + + + Lookup member declaration in well known type used by this Compilation. + + + + + In case duplicate types are encountered, returns an error type. + But if the IgnoreCorLibraryDuplicatedTypes compilation option is set, any duplicate type found in corlib is ignored and doesn't count as a duplicate. + + + + + Structure containing all semantic information about a for each statement. + + + + + Gets the "GetEnumerator" method. + + + + + Gets the "MoveNext" method. + + + + + Gets the "Current" property. + + + + + Gets the "Dispose" method. + + + + + The intermediate type to which the output of the is converted + before being converted to the iteration variable type. + + + As you might hope, for an array, it is the element type of the array. + + + + + The conversion from the to the iteration variable type. + + + May be user-defined. + + + + + The conversion from the type of the to the . + + + Frequently the identity conversion. + + + + + Initializes a new instance of the structure. + + The GetEnumerator method. + The MoveNext method. + The Current property. + The Dispose method. + + + + This is an implementation of a special symbol comparer, which is supposed to be used for + sorting original definition symbols (explicitly or explicitly declared in source within the same + container) in lexical order of their declarations. It will not work on anything that uses non-source locations. + + + + + Completes binding and performs analysis of bound trees for the purpose of obtaining diagnostics. + + NOTE: This method does not perform lowering/rewriting/emit. + Errors from those stages require complete compile, + but generally are not interesting during editing. + + NOTE: the bound tree produced by this method are not stored anywhere + and immediately lost after diagnostics of a particular tree is done. + + + + + + Compiles given compilation into provided module. + + NOTE: it is ok for moduleBeingBuiltOpt to be Nothing. + In such case the only results of this method would be diagnostics for complete compile. + + NOTE: the bound/lowered trees produced by this method are not stored anywhere and + immediately lost after obtaining method bodies and diagnostics for a particular + tree. + + + + + Detects cycles in constructor invocations based on the 'constructor-calls-constructor' + map provided in 'constructorCallMap', reports errors if found. + + NOTE: 'constructorCallMap' is being mutated by this method + + + + All the constructors in the cycle will be reported + + + + Compiles the method. + + + If the method being compiled is a constructor, CompileMethod returns in this parameter + the symbol of the constructor called from the one being compiled either explicitly or implicitly. + For structure constructors calling parameterless constructor returns the synthesized constructor symbol. + + + + + If any of the "Handles" in the list have synthetic WithEvent override + as a container, then this method will (if not done already) inject + property/accessors symbol into the emit module and assign bodies to the accessors. + + + + + Assuming the statement is a constructor call wrapped in bound expression + statement, get the method symbol being called + + + + + Indicates whether the compiler accepted or rejected the method during overload resolution. + + + + + Represents the results of overload resolution for a single method. + + + + + The method or property considered during overload resolution. + + + + + Indicates why the compiler accepted or rejected the method during overload resolution. + + + + + Returns true if the compiler accepted this method as the sole correct result of overload resolution. + + + + + Returns true if the method is considered in its expanded param array form. + + + + + Summarizes the results of an overload resolution analysis. Describes whether overload resolution + succeeded, and which method was selected if overload resolution succeeded. + + + + + True if overload resolution successfully selected a single best method. + + + + + If overload resolution successfully selected a single best method, returns information + about that method. Otherwise returns Nothing. + + + + + If there was a method that overload resolution considered better than all others, + returns information about that method. A method may be returned even if that method was + not considered a successful overload resolution, as long as it was better than any other + potential method considered. + + + + + Returns information about each method that was considered during overload resolution, + and what the results of overload resolution were for that method. + + + + + The symbol that was referred to by the identifier, if any. + + + + + Returns the constant value associated with the symbol, if any. + + + + + + Optional AsQueryable/AsEnumerable/Cast(Of Object) method used + to "convert" to queryable + collection. + + + + + Optional Select method to handle AsClause. + + + + + SelectMany method for , which is not the first + in a , and is not the first + in . + + + + + The first of the two optional Select methods associated with . + + + + + The second of the two optional Select methods associated with . + + + + + Allows asking semantic questions about a tree of syntax nodes in a Compilation. Typically, + an instance is obtained by a call to Compilation.GetBinding. + + + An instance of SemanticModel caches local symbols and semantic information. Thus, it + is much more efficient to use a single instance of SemanticModel when asking multiple + questions about a syntax tree, because information from the first question may be reused. + This also means that holding onto an instance of SemanticModel for a long time may keep a + significant amount of memory from being garbage collected. + + + When an answer is a named symbol that is reachable by traversing from the root of the symbol + table, (that is, from an AssemblySymbol of the Compilation), that symbol will be returned + (i.e. the returned value will be reference-equal to one reachable from the root of the + symbol table). Symbols representing entities without names (e.g. array-of-int) may or may + not exhibit reference equality. However, some named symbols (such as local variables) are + not reachable from the root. These symbols are visible as answers to semantic questions. + When the same SemanticModel object is used, the answers exhibit reference-equality. + + + + + + Returns information about methods associated with CollectionRangeVariableSyntax. + + + + + Returns information about methods associated with AggregateClauseSyntax. + + + + + DistinctClauseSyntax - Returns Distinct method associated with DistinctClauseSyntax. + + WhereClauseSyntax - Returns Where method associated with WhereClauseSyntax. + + PartitionWhileClauseSyntax - Returns TakeWhile/SkipWhile method associated with PartitionWhileClauseSyntax. + + PartitionClauseSyntax - Returns Take/Skip method associated with PartitionClauseSyntax. + + GroupByClauseSyntax - Returns GroupBy method associated with GroupByClauseSyntax. + + JoinClauseSyntax - Returns Join/GroupJoin method associated with JoinClauseSyntax/GroupJoinClauseSyntax. + + SelectClauseSyntax - Returns Select method associated with SelectClauseSyntax, if needed. + + FromClauseSyntax - Returns Select method associated with FromClauseSyntax, which has only one + CollectionRangeVariableSyntax and is the only query clause within + QueryExpressionSyntax. NotNeeded SymbolInfo otherwise. + The method call is injected by the compiler to make sure that query is translated to at + least one method call. + + LetClauseSyntax - NotNeeded SymbolInfo. + + OrderByClauseSyntax - NotNeeded SymbolInfo. + + AggregateClauseSyntax - Empty SymbolInfo. GetAggregateClauseInfo should be used instead. + + + + + Returns Select method associated with ExpressionRangeVariableSyntax within a LetClauseSyntax, if needed. + NotNeeded SymbolInfo otherwise. + + + + + Returns aggregate function associated with FunctionAggregationSyntax. + + + + + Returns OrderBy/OrderByDescending/ThenBy/ThenByDescending method associated with OrderingSyntax. + + + + + The compilation associated with this binding. + + + + + The root node of the syntax tree that this binding is based on. + + + + + Gets symbol information about an expression syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets symbol information about the 'Add' method corresponding to an expression syntax within collection initializer. + This is the worker function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called and the is in the right place in the syntax tree. + + + + + Gets symbol information about an attribute syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets type information about an expression syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets type information about an attribute syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets constant value information about an expression syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets member group information about an expression syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets member group information about an attribute syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. It can assume that + CheckSyntaxNode has already been called. + + + + + Gets symbol information about a cref reference syntax node. This is the worker + function that is overridden in various derived kinds of Semantic Models. + + + + + Returns what symbol(s), if any, the given expression syntax bound to in the program. + + An AliasSymbol will never be returned by this method. What the alias refers to will be + returned instead. To get information about aliases, call GetAliasInfo. + + If binding the type name C in the expression "new C(...)" the actual constructor bound to + will be returned (or all constructor if overload resolution failed). This occurs as long as C + unambiguously binds to a single type that has a constructor. If C ambiguously binds to multiple + types, or C binds to a static class, then type(s) are returned. + + + + + Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax + within . + + + + + Returns what symbol(s), if any, the given cref reference syntax bound to in the documentation comment. + + An AliasSymbol will never be returned by this method. What the alias refers to will be + returned instead. + + + + + Binds the expression in the context of the specified location and get semantic + information such as type, symbols and diagnostics. This method is used to get semantic + information about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to SemanticModel + instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The semantic information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Bind the attribute in the context of the specified location and get semantic information + such as type, symbols and diagnostics. This method is used to get semantic information about an attribute + that did not actually appear in the source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. In order to obtain + the correct scoping rules for the attribute, position should be the Start position of the Span of the symbol that + the attribute is being applied to. + + A syntax node that represents a parsed attribute. This syntax node + need not and typically does not appear in the source code referred to SemanticModel instance. + The semantic information for the topmost node of the attribute. + + + + Gets type information about an expression. + + The syntax node to get type information for. + + + + Binds the expression in the context of the specified location and gets type information. + This method is used to get type information about an expression that did not actually + appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the expression as a full expressions, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The type information for the topmost node of the expression. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the conversion that occurred between the expression's type and type implied by the expression's context. + + + + + Gets the conversion that occurred between the expression's type and type implied by the expression's context. + + + + + Binds the expression in the context of the specified location and gets constant value information. + This method is used to get information about an expression that did not actually appear in the source code. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a parsed expression. This syntax + node need not and typically does not appear in the source code referred to by SemanticModel + instance. + The passed in expression is interpreted as a stand-alone expression, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + If "nameSyntax" resolves to an alias name, return the AliasSymbol corresponding + to A. Otherwise return null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + A syntax node that represents a name. This syntax + node need not and typically does not appear in the source code referred to by the + SemanticModel instance. + Indicates whether to binding the name as a full expression, + or as a type or namespace. If SpeculativeBindingOption.BindAsTypeOrNamespace is supplied, then + expression should derive from TypeSyntax. + The passed in name is interpreted as a stand-alone name, as if it + appeared by itself somewhere within the scope that encloses "position". + + + + Gets the binder that encloses the position. See comment on LookupSymbols for how + positions are interpreted. + + + + + When doing speculative binding, we don't have any context information about expressions or the + context that is expected. We try to interpret as a value, but + only if it doesn't cause additional errors (indicating that it wasn't value to interpret it + that way). This should get us the most "liberal" interpretation + for semantic information. + + + + + Bind the given attribute speculatively at the given position, and return back + the resulting bound node. May return null in some error cases. + + + + + Bind the given attribute speculatively at the given position, and return back + the resulting bound node summary. May return null in some error cases. + + + + + In cases where we are binding C in "[C(...)]", the bound nodes return the symbol for the type. However, we've + decided that we want this case to return the constructor of the type instead (based on the SemanticInfoOptions. This + affects only attributes. This method checks for this situation and adjusts the syntax and method group. + + + + + Gets the available named symbols in the context of the specified location And optional container. Only + symbols that are accessible And visible from the given location are returned. + + The character position for determining the enclosing declaration scope And + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position Is used. + The name of the symbol to find. If null Is specified then symbols + with any names are returned. + Consider (reduced) extension methods. + A list of symbols that were found. If no symbols were found, an empty list Is returned. + + The "position" Is used to determine what variables are visible And accessible. Even if "container" Is + specified, the "position" location Is significant for determining which members of "containing" are + accessible. + + Labels are Not considered (see ). + + Non-reduced extension methods are considered regardless of the value of . + + + + + Gets the available base type members in the context of the specified location. Akin to + calling with the container set to the immediate base type of + the type in which occurs. However, the accessibility rules + are different: protected members of the base type will be visible. + + Consider the following example: + + Public Class Base + Protected Sub M() + End Sub + End Class + + Public Class Derived : Inherits Base + Sub Test(b as Base) + b.M() ' Error - cannot access protected member. + MyBase.M() + End Sub + End Class + + Protected members of an instance of another type are only accessible if the instance is known + to be "this" instance (as indicated by the "MyBase" keyword). + + The character position for determining the enclosing declaration scope and + accessibility. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list is returned. + + The "position" is used to determine what variables are visible and accessible. + + Non-reduced extension methods are considered, but reduced extension methods are not. + + + + + Gets the available named static member symbols in the context of the specified location And optional container. + Only members that are accessible And visible from the given location are returned. + + Non-reduced extension methods are considered, since they are static methods. + + The character position for determining the enclosing declaration scope And + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position Is used. + The name of the symbol to find. If null Is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list Is returned. + + The "position" Is used to determine what variables are visible And accessible. Even if "container" Is + specified, the "position" location Is significant for determining which members of "containing" are + accessible. + + + + + Gets the available named namespace And type symbols in the context of the specified location And optional container. + Only members that are accessible And visible from the given location are returned. + + The character position for determining the enclosing declaration scope And + accessibility. + The container to search for symbols within. If null then the enclosing declaration + scope around position Is used. + The name of the symbol to find. If null Is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list Is returned. + + The "position" Is used to determine what variables are visible And accessible. Even if "container" Is + specified, the "position" location Is significant for determining which members of "containing" are + accessible. + + Does Not return INamespaceOrTypeSymbol, because there could be aliases. + + + + + Gets the available named label symbols in the context of the specified location And optional container. + Only members that are accessible And visible from the given location are returned. + + The character position for determining the enclosing declaration scope And + accessibility. + The name of the symbol to find. If null Is specified then symbols + with any names are returned. + A list of symbols that were found. If no symbols were found, an empty list Is returned. + + The "position" Is used to determine what variables are visible And accessible. Even if "container" Is + specified, the "position" location Is significant for determining which members of "containing" are + accessible. + + + + + Gets the available named symbols in the context of the specified location and optional + container. Only symbols that are accessible and visible from the given location are + returned. + + The character position for determining the enclosing declaration + scope and accessibility. + The container to search for symbols within. If null then the + enclosing declaration scope around position is used. + The name of the symbol to find. If null is specified then symbols + with any names are returned. + Additional options that affect the lookup process. + Ignore 'throughType' in accessibility checking. + Used in checking accessibility of symbols accessed via 'MyBase' or 'base'. + A list of symbols that were found. If no symbols were found, an empty list is + returned. + + The "position" is used to determine what variables are visible and accessible. Even if + "container" is specified, the "position" location is significant for determining which + members of "containing" are accessible. + + Locations are character locations, just as used as the Syntax APIs such as FindToken, or + returned from the Span property on tokens and syntax node. + + The text of the program is divided into scopes, which nest but don't otherwise + intersect. When doing an operation such as LookupSymbols, the code first determines the + smallest scope containing the position, and from there all containing scopes. + + Scopes that span an entire block statement start at the beginning of the first token of + the block header, and end immediately before the statement terminator token following + the end statement of the block. If the end statement of the block is missing, it ends + immediately before the next token. Examples of these include members and type parameters + of a type, type parameters of a method, and variables declared in a For statement. + + Scopes that span the interior of a block statement start at the statement terminator of + the block header statement, and end immediately before the first token of the end + statement of the block. If the end statement of the block is missing, it ends + immediately before the next statement. Examples of these include local variables, method + parameters, and members of a namespace. + + Scopes of variables declared in a single-line If statement start at the beginning of the + "Then" token, and end immediately before the Else token or statement terminator. + + Scopes of variables declared in the Else part of a single-line If start at the beginning + of the "Else" token, and end immediately before the statement terminator. + + Some specialized binding rules are in place for a single statement, like Imports or + Inherits. These specialized binding rules begin at the start of the first token of the + statement, and end immediately before the statement terminator of that statement. + + In all of the above, the "start" means the start of a token without considering leading + trivia. In other words, Span.Start, not FullSpan.Start. With the exception of + documentation comments, all scopes begin at the start of a token, and end immediately + before the start of a token. + + The scope of the default namespace, and all symbols introduced via Imports statements, + is the entire file. + + Positions within a documentation comment that is correctly attached to a symbol take on + the binding scope of that symbol. + + Throws an argument exception if the passed lookup options are invalid. + + + + Gets the names of the available named symbols in the context of the specified location + and optional container. Only symbols that are accessible and visible from the given + location are returned. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The container to search for symbols within. If null then the + enclosing declaration scope around position is used. + Additional options that affect the lookup process. + + The "position" is used to determine what variables are visible and accessible. Even if + "container" is specified, the "position" location is significant for determining which + members of "containing" are accessible. + + + + + Determines if the symbol is accessible from the specified location. + + A character position used to identify a declaration scope and + accessibility. This character position must be within the FullSpan of the Root syntax + node in this SemanticModel. + + The symbol that we are checking to see if it accessible. + + True if "symbol is accessible, false otherwise. + + This method only checks accessibility from the point of view of the accessibility + modifiers on symbol and its containing types. Even if true is returned, the given symbol + may not be able to be referenced for other reasons, such as name hiding. + + + + + Analyze control-flow within a part of a method body. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the control flow analysis. + The two statements are not contained within the same statement list. + + + + Analyze control-flow within a part of a method body. + + The statement to be included in the analysis. + An object that can be used to obtain the result of the control flow analysis. + + + + Analyze data-flow within an expression. + + The expression within the associated SyntaxTree to analyze. + An object that can be used to obtain the result of the data flow analysis. + + + + Analyze data-flow within a set of contiguous statements. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the data flow analysis. + The two statements are not contained within the same statement list. + + + + Analyze data-flow within a statement. + + The statement to be included in the analysis. + An object that can be used to obtain the result of the data flow analysis. + + + + Get a SemanticModel object that is associated with a method body that did not appear in this source code. + Given must lie within an existing method body of the Root syntax node for this SemanticModel. + Locals and labels declared within this existing method body are not considered to be in scope of the speculated method body. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel and must be + within the FullSpan of a Method body within the Root syntax node. + A syntax node that represents a parsed method declaration. This method should not be + present in the syntax tree associated with this object, but must have identical signature to the method containing + the given in this SemanticModel. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is True. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a range argument syntax that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of this node that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed RangeArgumentSyntax node. This node should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is True. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an executable statement that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a statement that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + A syntax node that represents a parsed statement. This statement should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is True. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an initializer that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a field initializer, property initializer or default parameter value that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed initializer. This initializer should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is True. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with an attribute that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of an attribute that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + A syntax node that represents a parsed attribute. This attribute should not be + present in the syntax tree associated with this object. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if is null. + Throws this exception if this model is a speculative semantic model, i.e. is True. + Chaining of speculative semantic model is not supported. + + + + Get a SemanticModel object that is associated with a type syntax that did not appear in + this source code. This can be used to get detailed semantic information about sub-parts + of a type syntax that did not appear in source code. + + A character position used to identify a declaration scope and accessibility. This + character position must be within the FullSpan of the Root syntax node in this SemanticModel. + + A syntax node that represents a parsed type syntax. This expression should not be + present in the syntax tree associated with this object. + Indicates whether to bind the expression as a full expression, + or as a type or namespace. + A SemanticModel object that can be used to inquire about the semantic + information associated with syntax nodes within . + Flag indicating whether a speculative semantic model was created. + Throws this exception if the node is contained any SyntaxTree in the current Compilation. + Throws this exception if this model is a speculative semantic model, i.e. is True. + Chaining of speculative semantic model is not supported. + + + + If this is a speculative semantic model, then returns its parent semantic model. + Otherwise, returns null. + + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. + + An expression which must occur within the syntax tree + associated with this object. + The type to attempt conversion to. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists " property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Determines what type of conversion, if any, would be used if a given expression was + converted to a given type. + + The character position for determining the enclosing declaration scope and accessibility. + An expression to classify. This expression does not need to be + present in the syntax tree associated with this object. + The type to attempt conversion to. + Returns a Conversion object that summarizes whether the conversion was + possible, and if so, what kind of conversion it was. If no conversion was possible, a + Conversion object with a false "Exists " property is returned. + To determine the conversion between two types (instead of an expression and a + type), use Compilation.ClassifyConversion. + + + + Given a modified identifier that is part of a variable declaration, get the + corresponding symbol. + + The modified identifier that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Gets the corresponding symbol for a specified tuple element. + + A TupleElementSyntax object. + A cancellation token. + A symbol, for the specified element; otherwise Nothing. + + + + Given a FieldInitializerSyntax, get the corresponding symbol of anonymous type property. + + The anonymous object creation field initializer syntax. + The symbol that was declared, or Nothing if no such symbol exists or + if the field initializer was not part of an anonymous type creation. + + + + Given an AnonymousObjectCreationExpressionSyntax, get the corresponding symbol of anonymous type. + + The anonymous object creation syntax. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given an ExpressionRangeVariableSyntax, get the corresponding symbol. + + The range variable syntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given a CollectionRangeVariableSyntax, get the corresponding symbol. + + The range variable syntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given an AggregationRangeVariableSyntax, get the corresponding symbol. + + The range variable syntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given a label statement, get the corresponding label symbol. + + The label statement. + The label symbol, or Nothing if no such symbol exists. + + + + Given a declarationSyntax that is part of a enum constant declaration, get the + corresponding symbol. + + The declarationSyntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given a type declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The type symbol that was declared. + + + + Given a type block, get the corresponding type symbol. + + The syntax node that declares a type block. + The type symbol that was declared. + + + + Given a enum declaration, get the corresponding type symbol. + + The syntax node that declares an enum. + The type symbol that was declared. + + + + Given a enum block, get the corresponding type symbol. + + The syntax node that declares an enum block. + The type symbol that was declared. + + + + Given a namespace declaration, get the corresponding type symbol. + + The syntax node that declares a namespace. + The namespace symbol that was declared. + + + + Given a namespace block, get the corresponding type symbol. + + The syntax node that declares a namespace block. + The namespace symbol that was declared. + + + + Given a method, property, or event declaration, get the corresponding symbol. + + The syntax node that declares a method, property, or event. + The method, property, or event symbol that was declared. + + + + Given a parameter declaration, get the corresponding parameter symbol. + + The syntax node that declares a parameter. + The parameter symbol that was declared. + + + + Given a type parameter declaration, get the corresponding type parameter symbol. + + The syntax node that declares a type parameter. + The type parameter symbol that was declared. + + + + Given a delegate statement syntax get the corresponding named type symbol. + + The syntax node that declares a delegate. + The named type that was declared. + + + + Given a constructor statement syntax get the corresponding method symbol. + + The syntax node that declares a constructor. + The method symbol that was declared. + + + + Given a method statement syntax get the corresponding method symbol. + + The syntax node that declares a method. + The method symbol that was declared. + + + + Given a method statement syntax get the corresponding method symbol. + + The syntax node that declares a method. + The method symbol that was declared. + + + + Given a operator statement syntax get the corresponding method symbol. + + The syntax node that declares an operator. + The method symbol that was declared. + + + + Given a method block syntax get the corresponding method, property or event symbol. + + The syntax node that declares method, property or event. + The method, property or event symbol that was declared. + + + + Given a property statement syntax get the corresponding property symbol. + + The syntax node that declares a property. + The property symbol that was declared. + + + + Given an event statement syntax get the corresponding event symbol. + + The syntax node that declares an event. + The event symbol that was declared. + + + + Given a property block syntax get the corresponding property symbol. + + The syntax node that declares property. + The property symbol that was declared. + + + + Given a custom event block syntax get the corresponding event symbol. + + The syntax node that declares the custom event. + The event symbol that was declared. + + + + Given a catch statement syntax get the corresponding local symbol. + + The catch statement syntax node. + The local symbol that was declared by the Catch statement or Nothing if statement does not declare a local variable. + + + + Given a property block syntax get the corresponding property symbol. + + The syntax node that declares property. + The property symbol that was declared. + + + + Given an import clause get the corresponding symbol for the import alias that was introduced. + + The import statement syntax node. + The alias symbol that was declared or Nothing if no alias symbol was declared. + + + + Given a field declaration syntax, get the corresponding symbols. + + The syntax node that declares one or more fields. + The field symbols that were declared. + + + + Gets bound node summary of the underlying invocation in a case of RaiseEvent + + + + + RaiseEvent situation is very special: + 1) Unlike other syntaxes that take named arguments, RaiseEvent is a statement. + 2) RaiseEvent is essentially a wrapper around underlying call to the event rising method. + Note that while event itself may have named parameters in its syntax, their names could be irrelevant + For the purpose of fetching named parameters, it is the target of the call that we are interested in. + + === Example: + + Interface I1 + Event E(qwer As Integer) + End Interface + + Class cls1 : Implements I1 + Event E3(bar As Integer) Implements I1.E ' "bar" means nothing here. Only type matters. + + Sub moo() + RaiseEvent E3(qwer:=123) ' qwer binds to parameter on I1.EEventhandler.invoke(goo) + End Sub +End Class + + + + + + + The SyntaxTree that is bound + + + + + Gets the semantic information of a for each statement. + + The for each syntax node. + + + + Gets the semantic information of a for each statement. + + The for block syntax node. + + + + Gets the semantic information of a for each statement. + + The for each syntax node. + + + + Gets the semantic information of an Await expression. + + + + + If the given node is within a preprocessing directive, gets the preprocessing symbol info for it. + + Preprocessing symbol identifier node. + + + + Options to control the internal working of GetSemanticInfoWorker. Not currently exposed + to public clients, but could be if desired. + + + + + When binding "C" new C(...), return the type C and do not return information about + which constructor was bound to. Bind "new C(...)" to get information about which constructor + was chosen. + + + + + When binding "C" new C(...), return the constructor of C that was bound to, if C unambiguously + binds to a single type with at least one constructor. + + + + + When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return OtherTypeOrNamespace. + + + + + When binding a name X that was declared with a "using X=OtherTypeOrNamespace", return the alias symbol X. + + + + + Given a position in the SyntaxTree for this SemanticModel returns the innermost Symbol + that the position is considered inside of. + + + + + Get the state of Option Strict for the code covered by this semantic model. + This takes into effect both file-level "Option Strict" statements and the project-level + defaults. + + + + + Get the state of Option Infer for the code covered by this semantic model. + This takes into effect both file-level "Option Infer" statements and the project-level + defaults. + + True if Option Infer On, False if Option Infer Off. + + + + Get the state of Option Explicit for the code covered by this semantic model. + This takes into effect both file-level "Option Explicit" statements and the project-level + defaults. + + True if Option Explicit On, False if Option Explicit Off. + + + + Get the state of Option Compare for the code covered by this semantic model. + This takes into effect both file-level "Option Compare" statements and the project-level + defaults. + + True if Option Compare Text, False if Option Compare Binary. + + + + Allows asking semantic questions about a tree of syntax nodes that did not appear in the original source code. + Typically, an instance is obtained by a call to SemanticModel.TryGetSpeculativeSemanticModel. + + + + + Allows asking semantic questions about any node in a SyntaxTree within a Compilation. + + + + + The compilation associated with this binding. + + + + + The root node of the syntax tree that this binding is based on. + + + + + The SyntaxTree that is bound + + + + + Returns true if this Is a SemanticModel that ignores accessibility rules when answering semantic questions. + + + + + Get all the errors within the syntax tree associated with this object. Includes errors involving compiling + method bodies or initializers, in addition to the errors returned by GetDeclarationDiagnostics and parse errors. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the process of obtaining the + diagnostics. + + Because this method must semantically analyze all method bodies and initializers to check for diagnostics, it may + take a significant amount of time. Unlike GetDeclarationDiagnostics, diagnostics for method bodies and + initializers are not cached, the any semantic information used to obtain the diagnostics is discarded. + + + + + Get all of the syntax errors within the syntax tree associated with this + object. Does not get errors involving declarations or compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the + process of obtaining the diagnostics. + + + + Get all the syntax and declaration errors within the syntax tree associated with this object. Does not get + errors involving compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the process of obtaining the + diagnostics. + The declaration errors for a syntax tree are cached. The first time this method is called, a ll + declarations are analyzed for diagnostics. Calling this a second time will return the cached diagnostics. + + + + + Get all the syntax and declaration errors within the syntax tree associated with this object. Does not get + errors involving compiling method bodies or initializers. + + Optional span within the syntax tree for which to get diagnostics. + If no argument is specified, then diagnostics for the entire tree are returned. + A cancellation token that can be used to cancel the process of obtaining the + diagnostics. + The declaration errors for a syntax tree are cached. The first time this method is called, a ll + declarations are analyzed for diagnostics. Calling this a second time will return the cached diagnostics. + + + + + Get symbols referenced from 'cref' or 'name' attribute value. + + Node to bind. + True to leave s, False to unwrap them. + Out: symbols that would have been in the return value but improperly refer to type parameters. + Referenced symbols, less type parameters. + + + + Checks all symbol locations against the syntax provided and return symbol if any of the locations is + inside the syntax span. Returns Nothing otherwise. + + + + + Given a delegate declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The type symbol that was declared. + + + + Given a type declaration, get the corresponding type symbol. + + The syntax node that declares a type. + The type symbol that was declared. + + + + Given a enum declaration, get the corresponding type symbol. + + The syntax node that declares an enum. + The type symbol that was declared. + + + + Given a namespace declaration, get the corresponding type symbol. + + The syntax node that declares a namespace. + The namespace symbol that was declared. + + + + Given a method, property, or event declaration, get the corresponding symbol. + + The syntax node that declares a method, property, or event. + The method, property, or event symbol that was declared. + + + + Given a parameter declaration, get the corresponding parameter symbol. + + The syntax node that declares a parameter. + The parameter symbol that was declared. + + + + Given a type parameter declaration, get the corresponding type parameter symbol. + + The syntax node that declares a type parameter. + The type parameter symbol that was declared. + + + + Given a variable declaration, get the corresponding symbol. + + The syntax node that declares a variable. + The symbol that was declared. + + + + Given a FieldInitializerSyntax, get the corresponding symbol of anonymous type creation. + + The anonymous object creation field initializer syntax. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given an AnonymousObjectCreationExpressionSyntax, get the corresponding symbol of anonymous type. + + The anonymous object creation syntax. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given an ExpressionRangeVariableSyntax, get the corresponding symbol. + + The range variable syntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given a CollectionRangeVariableSyntax, get the corresponding symbol. + + The range variable syntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given an AggregationRangeVariableSyntax, get the corresponding symbol. + + The range variable syntax that declares a variable. + The symbol that was declared, or Nothing if no such symbol exists. + + + + Given an import clause get the corresponding symbol for the import alias that was introduced. + + The import statement syntax node. + The alias symbol that was declared or Nothing if no alias symbol was declared. + + + + Given a field declaration syntax, get the corresponding symbols. + + The syntax node that declares one or more fields. + The field symbols that were declared. + + + + Determines what type of conversion, if any, would be used if a given expression was converted to a given + type. + + An expression which much occur within the syntax tree associated with this + object. + The type to attempt conversion to. + Returns a Conversion object that summarizes whether the conversion was possible, and if so, what + kind of conversion it was. If no conversion was possible, a Conversion object with a false "Exists " + property is returned. + To determine the conversion between two types (instead of an expression and a type), use + Compilation.ClassifyConversion. + + + + Analyze control-flow within a part of a method body. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the control flow analysis. + The two statements are not contained within the same statement list. + + + + The first statement to be included in the analysis. + + The first statement to be included in the analysis. + The last statement to be included in the analysis. + An object that can be used to obtain the result of the data flow analysis. + The two statements are not contained within the same statement list. + + + + Analyze data-flow within an expression. + + The expression within the associated SyntaxTree to analyze. + An object that can be used to obtain the result of the data flow analysis. + + + + Checks if the node is inside the attribute arguments + + + + + Check Expression for being in right context, for example 'For ... Next [x]' + is not correct context + + + + + Check ForBlockSyntax for being the uppermost For block. By uppermost + For block we mean that if Next clause contains several control variables, + the uppermost block is the one which includes all the For blocks ending with + the same Next clause + + + + + Gets the semantic information of a for each statement. + + The for each syntax node. + + + Used to create a region analysis context + with failed flag set to be used in 'failed' scenarios + + + + When compiling in metadata-only mode, is not run. This is problematic because + adds synthesized explicit implementations to the list of synthesized definitions. + In lieu of running , this class performs a quick + traversal of the symbol table and performs processing of synthesized symbols if necessary. + + + + + Traverse the symbol table and properly add/process synthesized extra metadata if needed. + + + + + Represents the state of compilation of one particular type. + This includes, for example, a collection of synthesized methods created during lowering. + WARNING: Note that the underlying collection classes are not thread-safe and this will + need to be revised if emit phase is changed to support multithreading when + translating a particular type. + + + + Method's information + + + Flat array of created methods, non-empty if not-nothing + + + + A mapping from (source) iterator or async methods to the compiler-generated classes that implement them. + + + + + Map of 'MyBase' or 'MyClass' call wrappers; actually each method symbol will + only need one wrapper to call it non-virtually; + + Indeed, if the type have a virtual method M1 overridden, MyBase.M1 will use + a wrapper for base type's method and MyClass.M1 a wrapper for this type's method. + + And if the type does not override a virtual method M1, both MyBase.M1 + and MyClass.M1 will use a wrapper for base type's method. + + + + + Is there any content in the methods collection. + + + + Method created with their bodies + + + Free resources + + + + The type of the expression represented by the syntax node. For expressions that do not + have a type, null is returned. If the type could not be determined due to an error, than + an object derived from ErrorTypeSymbol is returned. + + + + + The type of the expression after it has undergone an implicit conversion. If the type + did not undergo an implicit conversion, returns the same as Type. + + + + + If the expression underwent an implicit conversion, return information about that + conversion. Otherwise, returns an identity conversion. + + + + + Guess the non-error type that the given type was intended to represent, or return + the type itself. If a single, non-ambiguous type is a guess-type inside the type symbol, + return that; otherwise return the type itself (even if it is an error type). + + + + + Represents a reference to another Visual Basic compilation. + + + + + Returns the referenced . + + + + + Create a metadata reference to a compilation. + + The compilation to reference. + Should interop types be embedded in the created assembly? + Namespace aliases for this reference. + + + + Applies Visual Basic-specific modification and filtering of s. + + + + + Modifies an input per the given options. For example, the + severity may be escalated, or the may be filtered out entirely + (by returning null). + + The input diagnostic + How warning diagnostics should be reported + How specific diagnostics should be reported + A diagnostic updated to reflect the options, or null if it has been filtered out + + + + Take a warning And return the final disposition of the given warning, + based on both command line options And pragmas. The diagnostic options + have precedence in the following order: + 1. Warning level + 2. Command line options (/nowarn, /warnaserror) + 3. Editor config options (syntax tree level) + 4. Global analyzer config options (compilation level) + 5. Global warning level + + Global overrides are complicated. Global options never override suppression. + Even if you have generalDiagnosticOption = ReportDiagnostic.Error, a + suppressed diagnostic will not turn into an error. However, general diagnostic options + do override warnings and infos into suppressions, i.e. if you had a syntaxtree option + to turn a diagnostic into a warning, and the global option was Suppress, the diagnostic + would be suppressed. + + Pragmas are considered separately. If a diagnostic would not otherwise + be suppressed, but is suppressed by a pragma, + + is true but the diagnostic is not reported as suppressed. + + + + + Returns documentation comment for a type, field, property, event or method, + discards all the diagnostics + + + Returns Nothing if there is no documentation comment on the type or + there were errors preventing such a comment from being generated, + XML string otherwise + + + + + Matches symbols from an assembly in one compilation to + the corresponding assembly in another. Assumes that only + one assembly has changed between the two compilations. + + + + + Match local declarations to names to generate a map from + declaration to local slot. The names are indexed by slot And the + assumption Is that declarations are in the same order as slots. + + + + + Represents a reference to a generic method instantiation, closed over type parameters, + e.g. MyNamespace.Class.Method{T}() + + + + + Represents a reference to a generic type instantiation that is not nested. + e.g. MyNamespace.A{int} + + + + + Represents a reference to a generic type instantiation that is nested in a non-generic type. + e.g. A.B{int} + + + + + Represents a reference to a generic type instantiation. + Subclasses represent nested and namespace types. + + + + + Returns true if the type can be embedded. If the type is defined in a linked (/l-ed) + assembly, but doesn't meet embeddable type requirements, this function returns + False and reports appropriate diagnostics. + + + + This is a cache of a subset of . We don't include manifest resources in ref assemblies + + + + This value will override m_SourceModule.MetadataName. + + + This functionality exists for parity with C#, which requires it for + legacy reasons (see Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase.metadataName). + + + + + True if conditional calls may be omitted when the required preprocessor symbols are not defined. + + + Only false in debugger scenarios (where calls should never be omitted). + + + + + Ignore accessibility when resolving well-known type + members, in particular for generic type arguments + (e.g.: binding to internal types in the EE). + + + + + Builds an array of public type symbols defined in netmodules included in the compilation + And type forwarders defined in this compilation Or any included netmodule (in this order). + + + + + Returns a set of top-level forwarded types + + + + Stores collection of all embedded symbols referenced from IL + + + Adds a symbol to the collection of referenced embedded symbols + + + + Represents a reference to a field of a generic type instantiation. + e.g. + A{int}.Field + A{int}.B{string}.C.Field + + + + + Represents a generic method of a generic type instantiation, closed over type parameters. + e.g. + A{T}.M{S}() + A.B{T}.C.M{S}() + + + + + Represents a reference to an instantiation of a generic type nested in an instantiation of another generic type. + e.g. + A{int}.B{string} + A.B{int}.C.D{string} + + + + + Represents a method of a generic type instantiation. + e.g. + A{int}.M() + A.B{int}.C.M() + + + + + Represents a reference to a type nested in an instantiation of a generic type. + e.g. + A{int}.B + A.B{int}.C.D + + + + + The base class for all symbols (namespaces, classes, method, parameters, etc.) that are + exposed by the compiler. + + + + + Return whether the symbol is either the original definition + or distinct from the original. Intended for use in Debug.Assert + only since it may include a deep comparison. + + + + + Returns a list of attributes to emit to CustomAttribute table. + + + + + Checks if this symbol is a definition and its containing module is a SourceModuleSymbol. + + + + + Determine if two methods have the same signature according to section 4.1.1 of the VB language spec. + The name, number of type parameters, and number and types of the method's non-optional parameters are + considered. ByRef/Byval, parameter names, returns type, constraints, or optional parameters are not considered. + + + + + Checks if is accessible from within type . + + The symbol for the accessibility check. + The type to use as a context for the check. + + The type of an expression that is accessed off of, if any. + This is needed to properly check accessibility of protected members. + + + + + + Checks if is accessible from within the assembly ', but outside any + type. Protected members are deemed inaccessible. + + The symbol to check accessibility. + The assembly to check accessibility within. + True if symbol is accessible. False otherwise. + + + + Gets the name of this symbol. + + Returns the name of this symbol. Symbols without a name return the empty string; + Nothing is never returned. + + + + Gets the name of a symbol as it appears in metadata. Most of the time, this + is the same as the Name property, with the following exceptions: + 1) The metadata name of generic types includes the "`1", "`2" etc. suffix that + indicates the number of type parameters (it does not include, however, names of + containing types or namespaces). + 2) The metadata name of methods that overload or override methods with the same + case-insensitive name but different case-sensitive names are adjusted so that + the overrides and overloads always have the same name in a case-sensitive way. + + It should be noted that Visual Basic merges namespace declaration from source + and/or metadata with different casing into a single namespace symbol. Thus, for + namespace symbols this property may return incorrect information if multiple declarations + with different casing were found. + + + + + Gets the token for this symbol as it appears in metadata. Most of the time this Is 0, + as it Is when the symbol Is Not loaded from metadata. + + + + + Set the metadata name for this symbol. + Called from for each symbol of the same name in a type. + + + + + Gets the kind of this symbol. + + + + + Get the symbol that logically contains this symbol. + + + + + Gets the nearest enclosing namespace for this namespace or type. For a nested type, + returns the namespace that contains its container. + + + + + Returns the nearest lexically enclosing type, or Nothing if there is none. + + + + + Returns the containing type or namespace, if this symbol is immediately contained by it. + Otherwise returns Nothing. + + + + + Returns the assembly containing this symbol. If this symbol is shared + across multiple assemblies, or doesn't belong to an assembly, returns Nothing. + + + + + For a source assembly, the associated compilation. + For any other assembly, null. + For a source module, the DeclaringCompilation of the associated source assembly. + For any other module, null. + For any other symbol, the DeclaringCompilation of the associated module. + + + We're going through the containing module, rather than the containing assembly, + because of /addmodule (symbols in such modules should return null). + + Remarks, not "ContainingCompilation" because it isn't transitive. + + + + + Returns the module containing this symbol. If this symbol is shared + across multiple modules, or doesn't belong to a module, returns Nothing. + + + + + Get the original definition of this symbol. If this symbol is derived from another + symbol by (say) type substitution, this gets the original symbol, as it was defined + in source or metadata. + + + + + Returns true if this is the original definition of this symbol. + + + + + + Get a source location key for sorting. For performance, it's important that this + be able to be returned from a symbol without doing any additional allocations (even + if nothing is cached yet.) + + + Only (original) source symbols and namespaces that can be merged + need override this function if they want to do so for efficiency. + + + + + + Gets the locations where this symbol was originally defined, either in source + or metadata. Some symbols (for example, partial classes) may be defined in more + than one location. + + + + + Get the syntax node(s) where this symbol was declared in source. Some symbols (for example, + partial classes) may be defined in more than one location. This property should return + one or more syntax nodes only if the symbol was declared in source code and also was + not implicitly declared (see the IsImplicitlyDeclared property). + + Note that for namespace symbol, the declaring syntax might be declaring a nested namespace. + For example, the declaring syntax node for N1 in "Namespace N1.N2" is the + NamespaceDeclarationSyntax for N1.N2. For the project namespace, the declaring syntax will + be the CompilationUnitSyntax. + + + The syntax node(s) that declared the symbol. If the symbol was declared in metadata + or was implicitly declared, returns an empty read-only array. + + + To go the opposite direction (from syntax node to symbol), see . + + + + + Helper for implementing DeclaringSyntaxNodes for derived classes that store a location but not a SyntaxNode or SyntaxReference. + + + + + Helper for implementing DeclaringSyntaxNodes for derived classes that store a location but not a SyntaxNode or SyntaxReference. + + + + + Helper for implementing DeclaringSyntaxNodes for derived classes that store SyntaxReferences. + + + + + Get this accessibility that was declared on this symbol. For symbols that do + not have accessibility declared on them, returns NotApplicable. + + + + + Returns true if this symbol is "shared"; i.e., declared with the "Shared" + modifier or implicitly always shared. + + + + + Returns true if this member is overridable, has an implementation, + and does not override a base class member; i.e., declared with the "Overridable" + modifier. Does not return true for members declared as MustOverride or Overrides. + + + + + Returns true if this symbol was declared to override a base class members; i.e., declared + with the "Overrides" modifier. Still returns true if the members was declared + to override something, but (erroneously) no member to override exists. + + + + + Returns true if this symbol was declared as requiring an override; i.e., declared + with the "MustOverride" modifier. Never returns true for types. + Also methods, properties and events declared in interface are considered to have MustOverride. + + + + + Returns true if this symbol was declared to override a base class members and was + also restricted from further overriding; i.e., declared with the "NotOverridable" + modifier. Never returns true for types. + + + + + Returns true if this symbol was automatically created by the compiler, and does not + have an explicit corresponding source code declaration. + + + This is intended for symbols that are ordinary symbols in the language sense, + and may be used by code, but that are simply declared implicitly rather than + with explicit language syntax. + + Examples include (this list is not exhaustive): + the default constructor for a class or struct that is created if one is not provided, + the BeginInvoke/Invoke/EndInvoke methods for a delegate, + the generated backing field for an auto property or a field-like event, + the "this" parameter for non-static methods, + the "value" parameter for a property setter, + the parameters on indexer accessor methods (not on the indexer itself), + methods in anonymous types + + + + + True if this symbol has been marked with the Obsolete attribute. + This property returns Unknown if the Obsolete Attribute hasn't been cracked yet. + + + + + Returns data decoded from Obsolete attribute or null if there is no Obsolete attribute. + This property returns ObsoleteAttributeData.Uninitialized if attribute arguments haven't been decoded yet. + + + + + Returns the symbol that implicitly defined this symbol, or Nothing if this + symbol was declared explicitly. Examples of implicit symbols are property + accessors and the backing field for an automatically implemented property. + + NOTE: there are scenarios in which ImplicitlyDefinedBy is called while bound members + are not yet published. This typically happens if ImplicitlyDefinedBy while binding members. + In such case, if callee needs to refer to a member of enclosing type it must + do that in the context of unpublished members that caller provides + (asking encompassing type for members will cause infinite recursion). + + NOTE: There could be several threads trying to bind and publish members, only one will succeed. + Reporting ImplicitlyDefinedBy within the set of members known to the caller guarantees + that if particular thread succeeds it will not have information that refers to something + built by another thread and discarded. + + + + + Returns true if 'Shadows' is explicitly specified on the declaration if the symbol is from + source, or in cases of synthesized symbols, if 'Shadows' is specified on the associated + source symbol. (For instance, ShadowsExplicitly will be set on the backing fields and + accessors for properties and events based on the value from the property or event.) + Returns false in all other cases, in particular, for symbols not from source. + + + + + Returns true if this symbol can be referenced by its name in code. Examples of symbols + that cannot be referenced by name are: + constructors, operators, + accessor methods for properties and events. + + + + + As an optimization, viability checking in the lookup code should use this property instead + of CanBeReferencedByName. + + + This property exists purely for performance reasons. + + + + + Is this a symbol that is generated by the compiler and + automatically added to the compilation? Note that + only source symbols may be embedded symbols. + + Namespace symbol is considered to be an embedded symbol + if at least one of its declarations are embedded symbols. + + + + + effective for this symbol (type or DllImport method). + Nothing if isn't applied on the containing module or it doesn't apply on this symbol. + + + Determined based upon value specified via applied on the containing module. + Symbols that are embedded are not affected by (see DevDiv bug #16434). + + + + + Always prefer IsFromCompilation. + + + This property is actually a triple workaround: + + 1) Unfortunately, when determining overriding/hiding/implementation relationships, we don't + have the "current" compilation available. We could, but that would clutter up the API + without providing much benefit. As a compromise, we consider all compilations "current". + + 2) TypeSymbol.Interfaces doesn't roundtrip in the presence of implicit interface implementation. + In particular, the metadata symbol may declare fewer interfaces than the source symbol so + that runtime implicit interface implementation will find the right symbol. Thus, we need to + know what kind of symbol we are dealing with to be able to interpret the Interfaces property + properly. Since a retargeting TypeSymbol will reflect the behavior of the underlying source + TypeSymbol, we need this property to match as well. (C# does not have this problem.) + + 3) The Dev12 VB compiler avoided loading private fields of structs from metadata, even though + they're supposed to affect definite assignment analysis. For compatibility + we therefore ignore these fields when doing DA analysis. (C# has a similar issue.) + + + + + Equivalent to MethodKind = MethodKind.LambdaMethod, but can be called on a symbol directly. + + + + + Is this an auto-generated property of a group class? + + + + + Is this lambda method a query lambda? + If it is, IsLambdaMethod == True as well. + + + + + Returns true and a from the first on the symbol, + the string might be null or an invalid guid representation. False, + if there is no with string argument. + + + + + Returns the Documentation Comment ID for the symbol, or Nothing if the symbol + doesn't support documentation comments. + + + + + Fetches the documentation comment for this element with a cancellation token. + + Optionally, retrieve the comments formatted for a particular culture. No impact on source documentation comments. + Optionally, expand ]]> elements. No impact on non-source documentation comments. + Optionally, allow cancellation of documentation comment retrieval. + The XML that would be written to the documentation file for the symbol. + + + + Compare two symbol objects to see if they refer to the same symbol. You should always use + = and <> or the Equals method, to compare two symbols for equality. + + + + + Compare two symbol objects to see if they refer to the same symbol. You should always use + = and <>, or the Equals method, to compare two symbols for equality. + + + + + Force all declaration diagnostics to be generated for the symbol. + + + + + Returns dependencies and an error info for an error, if any, that should be reported at the use site of the symbol. + + + + + Indicates that this symbol uses metadata that cannot be supported by the language. + + Examples include: + - Pointer types in VB + - ByRef return type + - Required custom modifiers + + This is distinguished from, for example, references to metadata symbols defined in assemblies that weren't referenced. + Symbols where this returns true can never be used successfully, and thus should never appear in any IDE feature. + + This is set for metadata symbols, as follows: + Type - if a type is unsupported (e.g., a pointer type, etc.) + Method - parameter or return type is unsupported + Field - type is unsupported + Event - type is unsupported + Property - type is unsupported + Parameter - type is unsupported + + + + + Derive dependencies and error info from a type symbol. + + + + + Return error code that has highest priority while calculating use site error for this symbol. + + + + + Gets the attributes on this symbol. Returns an empty ImmutableArray if there are + no attributes. + + + + + Build and add synthesized attributes for this symbol. + + + + + Convenience helper called by subclasses to add a synthesized attribute to a collection of attributes. + + + + + Returns the appropriate AttributeTarget for a symbol. This is used to validate attribute usage when + applying an attribute to a symbol. For any symbol that does not support the application of custom + attributes 0 is returned. + + The attribute target flag for this symbol or 0 if none apply. + + + + + Method to early decode applied well-known attribute which can be queried by the binder. + This method is called during attribute binding after we have bound the attribute types for all attributes, + but haven't yet bound the attribute arguments/attribute constructor. + Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol + when binding the attribute arguments/attribute constructor without causing attribute binding cycle. + + + + + This method is called by the binder when it is finished binding a set of attributes on the symbol so that + the symbol can extract data from the attribute arguments and potentially perform validation specific to + some well known attributes. + + + + Symbol types should override this if they want to handle a specific well-known attribute. + If the attribute is of a type that the symbol does not wish to handle, it should delegate back to + this (base) method. + + + + + + Called to report attribute related diagnostics after all attributes have been bound and decoded. + Called even if there are no attributes. + + + This method is called by the binder from after it has finished binding attributes on the symbol, + has executed for attributes applied on the symbol and has stored the decoded data in the + lazyCustomAttributesBag on the symbol. Bound attributes haven't been stored on the bag yet. + + Post-validation for attributes that is dependent on other attributes can be done here. + + This method should not have any side effects on the symbol, i.e. it SHOULD NOT change the symbol state. + + Bound attributes. + Syntax nodes of attributes in order they are specified in source. + Diagnostic bag. + Specific part of the symbol to which the attributes apply, or if the attributes apply to the symbol itself. + Decoded well known attribute data. + + + + This method does the following set of operations in the specified order: + (1) GetAttributesToBind: Merge the given attributeBlockSyntaxList into a single list of attributes to bind. + (2) GetAttributes: Bind the attributes (attribute type, arguments and constructor). + (3) DecodeWellKnownAttributes: Decode and validate bound well-known attributes. + (4) ValidateAttributes: Perform some additional attribute validations, such as + 1) Duplicate attributes, + 2) Attribute usage target validation, etc. + (5) Store the bound attributes and decoded well-known attribute data in lazyCustomAttributesBag in a thread safe manner. + + + + + Method to early decode certain well-known attributes which can be queried by the binder. + This method is called during attribute binding after we have bound the attribute types for all attributes, + but haven't yet bound the attribute arguments/attribute constructor. + Early decoding certain well-known attributes enables the binder to use this decoded information on this symbol + when binding the attribute arguments/attribute constructor without causing attribute binding cycle. + + + + + This method validates attribute usage for each bound attribute and calls + on attributes with valid attribute usage. + This method is called by the binder when it is finished binding a set of attributes on the symbol so that + the symbol can extract data from the attribute arguments and potentially perform validation specific to + some well known attributes. + + + + + Validate attribute usage target and duplicate attributes. + + Bound attribute + Syntax node for attribute specification + Compilation + Symbol part to which the attribute has been applied + Diagnostics + Set of unique attribute types applied to the symbol + + + + Ensure that attributes are bound and the ObsoleteState of this symbol is known. + + + + + This diagnostic indicates when a symbol is not good for binding against. + + Client code can obtain the bad symbol via the BadSymbol property. + + + + + This diagnostics indicates when a lookup is ambiguous between multiple + equally good symbols, for example in different imported namespaces, or different + modules. + + Client code can obtain the set of ambiguous symbols via the AmbiguousSymbols property. + + + + + Add a diagnostic to the bag. + + + + + + + + + Add a diagnostic to the bag. + + + + + + + + + + Appends diagnostics from useSiteDiagnostics into diagnostics and returns True if there were any errors. + + + + + The Diagnostic class allows formatting of Visual Basic diagnostics. + + + + + Gets the current DiagnosticFormatter instance. + + + + + Concatenates messages for a set of DiagnosticInfo. + + + + + The LocalizableErrorArgument class contains members that allows formatting and serialization of error arguments. + Message IDs may refer to strings that need to be localized. This struct makes an IFormattable wrapper around a MessageID + + + + +Creates a string representing the unformatted LocalizableErrorArgument instance. + + + + + Creates a string representing the formatted LocalizableErrorArgument instance. + + A string to use for formatting. + An object that supplies culture-specific format information about format. + + + + The base class for all nodes in the VB syntax tree. + + + + + Should only be called during construction. + + + This should probably be an extra constructor parameter, but we don't need more constructor overloads. + + + + + Get all syntax errors associated with this node, or any child nodes, grand-child nodes, etc. The errors + are not in order. + + + + + The base class for all nodes that represent statements. This includes both + declaration statements, such as class declarations as well as executable + statements. + + + + + The base class for all nodes that represent executable statements. + + + + + The base class for all nodes that represent statements that declare options, + imports, members, etc. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + + + An empty token because all non terminals must have a token. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + The "End" keyword + + + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an entire source file of VB code. + + + + + Represents the list of Option statements at the beginning of a source file. + + + If nothing is present, an empty list is returned. + + + + + Represents the list of Imports statements at the beginning of a source file. + + + If nothing is present, an empty list is returned. + + + + + Represents the list of AttributeStatements at the beginning of a source file + that contain the Assembly and Module attributes. + + + If nothing is present, an empty list is returned. + + + + + Represents the members of the default namespace for this source file: all the + top-level type and namespace declarations in the file. May also contain + Statements that are not valid + + + If nothing is present, an empty list is returned. + + + + + Represents the end of the source file. This token may have trivia (whitespace, + comments, ...) attached to it. + + + + + Represents an Option statement, such as "Option Strict On". + + + + + The "Option" keyword. + + + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + + + The keyword that identifiers the value being set for the option: On, Off, Text + or Binary. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + + + The "Imports" keyword. + + + + + A list of one or more import clauses. Each clause is either an alias, namespace + or XML namespace import. + + + If nothing is present, an empty list is returned. + + + + + The base class for the possible clauses of an Imports statement. + + + + + Represents the clause of an Imports statement that imports all members of a + type or namespace or aliases a type or namespace. + + + + + An optional alias for the namespace or type being imported. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The namespace or type being imported. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + + + The identifier being introduced. + + + + + The "=" token. + + + + + Defines a XML namespace for XML expressions. + + + + + Identifies the XML namespace alias and URI. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + + + The statement that begins the NamespaceBlock. + + + + + The declarations contained in the namespace statement. + + + If nothing is present, an empty list is returned. + + + + + The End Namespace statement that ends the block. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + + + The "Namespace" keyword. + + + + + A (possibly dotted) name denoting the namespace being declared. + + + + + Represents a declaration of a Class, Interface, Structure, Module, its contents + and the End statement that ends it. + + + + + A list of the Inherits declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + A list of the Implements declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + The declarations contained in the type or module. + + + If nothing is present, an empty list is returned. + + + + + The statement that begins the block declaration. + + + + + The statement that ends the block declaration. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + + + The "Module" statement that begins the block. + + + + + The "End Module" statement that ends the block. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + + + The "Structure" statement that begins the block. + + + + + The "End Structure" statement that ends the block. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + + + The "Interface" statement that begins the block. + + + + + The "End Interface" statement that ends the block. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + + + The "Class" statement that begins the block. + + + + + The "End Class" statement that ends the block. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + + + The statement that begins the type or module. + + + + + The declarations contained in the enumeration. + + + If nothing is present, an empty list is returned. + + + + + The End XXX statement that ends the block. + + + + + Represents an Inherits or Implements statement in a Class, Structure or + Interface. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + + + The "Inherits" keyword. + + + + + A list of the types being inherited. + + + + + Represents an Implements statement in a Class or Structure. + + + + + The "Implements" keyword. + + + + + A list of the types being implemented. + + + + + Abstract class for the beginning statement of a Module, Class, Interface or + Structure declaration. This node always appears as the Begin of a TypeBlock + with Kind=ModuleDeclarationBlock, ClassDeclarationBlock, + InterfaceDeclarationBlock or StructureDeclarationBlock. + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The name of the type being declared. + + + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + + + The "Module" keyword. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + + + The "Structure" keyword. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + + + The "Interface" keyword. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + + + The "Class" keyword. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The "Enum" keyword. + + + + + The name of the enum being declared. + + + + + Optional "As XXX" clause describing the underlying type of the enumeration. If + no As clause was specified, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the type parameter list in a declaration. + + + + + The "(" token. + + + + + The "Of" keyword. + + + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + + + The ")" token. + + + + + Represents a type parameter on a generic type declaration. + + + + + Represents the "In" or "Out" variance keyword on a type parameter, if present. + If no variance modifier was present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The name of the type parameter + + + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + An abstract node class that is the parent of classes that describe type + parameter constraint clauses. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + + + A list of the supplied constraints. If no constraints were supplied, Nothing is + returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + + + The "As" keyword. + + + + + The "{" token. + + + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + + + The "}" token. + + + + + An abstract node class that is the parent of classes that describe type + parameter constraints. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + Represents a type parameter constraint that is a type. + + + + + The type describing the constraint. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + + + If nothing is present, an empty list is returned. + + + + + An optional value for the enum member. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a block member declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. Examples + include methods, constructors, operators, property accessors and custom event + accessors. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + The statement that begins the block declaration. + + + + + The statement that ends the block declaration. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + + + The "Sub" or "Function" statement that begins the block. + + + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + + + The "Sub New" statement that begins the block. + + + + + The "End Sub" statement that ends the block declaration. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + + + The "Operator" statement that begins the block. + + + + + The "End Operator" statement that ends the block declaration. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + + + The property declaration that begins the block. + + + + + The accessor blocks contained in the property, between the Property and the End + Property statements. + + + + + The End Property statement that ends the block. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + + + The event declaration that begins the block. + + + + + The accessor blocks contained in the custom event declaration, between the + Event statement and the End Event statement. + + + + + The End Event statement that ends the block. + + + + + An abstract node class that is the parent for declarations that are + "method-like"; i.e., that have a parameter list and return type. This includes + methods, constructors, properties, events, operators, declares, delegates, + property accessors and custom event accessors. + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the parameter list in a method declaration. + + + + + The "(" token that introduces the parameter list. If no parameter list was + present, Nothing is returned. + + + + + The list of parameters. If no parameter list was present, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + The ")" token that concludes the parameter list. If no parameter list was + present, Nothing is returned. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + + + The name of the method being declared. + + + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, a Handles clause indicated the events that this method handles. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + + + The "Sub" keyword. + + + + + The "New" keyword in the constructor declaration. + + + + + A Declare statement that declares an external DLL method. + + + + + The "Declare" keyword. + + + + + If present, the keyword that defines the string translation semantics of the + external method. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "Sub" or "Function" keyword. + + + + + The name of the method being declared. + + + + + The "Lib" keyword. + + + + + The string literal with the library name. + + + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The string literal with the alias. If not present, returns Nothing. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A statement that declares a delegate type. + + + + + The "Delegate" keyword. + + + + + The "Sub" or "Function" keyword. + + + + + The name of the delegate being declared. + + + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + + + The optional Custom keyword for custom event declarations. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "Event" keyword that introduces this event declaration. + + + + + The name of the event being declared. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, an Implements clause indicates the interface methods that this + method implements. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + + + The "Operator" keyword that introduces this operator declaration. + + + + + The operator being defined. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + + + The "Property" keyword that introduces this property declaration. + + + + + The name of the property being declared. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, an "= initial-value" clause describing the initial value of the + property. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + + + The "Implements" keyword. + + + + + The list of interface members being implemented. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + + + The "Handles" keyword. + + + + + The list of event members being handled. + + + + + Represents container of an event in a Handles clause item. + + + + + Represents event container specified through special keywords "Me", "MyBase" or + "MyClass".. + + + + + The container of the event. This can be one of the special keywords: "Me", + "MyBase" or "MyClass". + + + + + Represents event container that refers to a WithEvents member. + + + + + The container of the event. It is a simple identifier that refers to a + WithEvents member of the containing type. + + + + + Represents event container that refers to a WithEvents member's property. + + + + + The container of the event. + + + + + The "." token. + + + + + The provider of the event. It is a property of a WithEvents member of the + containing type. + + + + + Represents a single handled event in a "Handles ..." clause. + + + + + The container of the event. This can either be a simple identifier (identifying + a members of the containing type) or one of the special keywords "Me", "MyBase" + or "MyClass". + + + + + The "." token. + + + + + The event being handled. This must be a simple identifier. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The missing identifier token for this incomplete member. Should only be used to + have a location for error reporting. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + + + The "As" clause that describes the return type, and possibly includes "New", + "With" or "From". If no As clause was present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, an "= initial-value" clause describing the initial value of the + variable or the value of the constant. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Abstract node class that represents the different kinds of "As {type-name}" + clauses in a declaration: simple "As" clauses and "As New" clauses. The type + has optional attributes associated with it, although attributes are not + permitted in all possible places where this node occurs. + + + + + The "As" keyword. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The type-name part of the As clause. + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + + + The New expression + + + + + An abstract node class that represents a "With" or "From" clause used to + initialize a new object. + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + + + The "With" keyword. + + + + + The "{" token. + + + + + The comma-separated list of field initializers. + + + + + The "}" token. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + + + The "From" keyword. + + + + + The initializer including the braces. + + + + + Abstract class that represent a single field initializer used in a "With {...}" + field initializer list. + + + + + The optional "Key" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + + + The value being assigned. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + + + The "." token. + + + + + The name of the field being initialized. + + + + + The "=" token. + + + + + The value being assigned to the field. + + + + + Represents an "= initializer" clause in a declaration for a variable, parameter + or automatic property. + + + + + The "=" token. + + + + + The expression used as the initial value. + + + + + Represent a parameter to a method, property, constructor, etc. + + + + + A list of all attribute lists on this parameter. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + A list of the modifier tokens "ByVal", "ByRef", "Optional" or "ParamArray" that + modify this parameter. + + + If nothing is present, an empty list is returned. + + + + + The name of the parameter, including any "?" or "()" modifiers. + + + + + If present, the "As type-name" clause describing the type of the parameter. If + no As clause is present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If present, an initializer with the default value of the parameter. If no + default value is present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + + + The identifier that names the item being declared. + + + + + The "?" token that indicates a nullable type. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A list of array modifiers for the type. If no array modifiers were present, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + + + The "(" token. + + + + + The comma tokens in the array type. There is one less comma than the rank. + + + If nothing is present, an empty list is returned. + + + + + The ")" token. + + + + + Represents a group of attributes within "<" and ">" brackets. + + + + + The "<" token. + + + + + A comma separated list of attribute declarations in this attribute list. + + + If nothing is present, an empty list is returned. + + + + + The ">" token. + + + + + Represents a single attribute declaration within an attribute list. + + + + + Optional attribute target. Assembly|Module : + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The name of the attribute. + + + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a single attribute declaration within an attribute list. + + + + + The "Assembly" or "Module" attribute modifier, is present. If no attribute + modifier is present, Nothing is returned. + + + + + The ":" token, if an attribute modifier is present. If no attribute modifier is + present, Nothing is returned. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + + + The list of attribute lists. + + + If nothing is present, an empty list is returned. + + + + + Represent an expression in a statement context. This may only be a invocation + or await expression in standard code but may be any expression in VB + Interactive code. + + + + + The expression. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + + + "?" token. + + + + + The expression whose value is being output. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + + + The While statement that begins the block. + + + + + The statements contained in the While...End While. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + The End While statement that ends the block. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + + + The UsingStatement that begins the Using...End Using block. + + + + + The statements contained in the Using...End Using block. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + The End Using statement that ends the block. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + + + The SyncLock statement that begins the block. + + + + + The statements contained in the SyncLock...End SyncLock statement. This might + be an empty list. + + + If nothing is present, an empty list is returned. + + + + + The End SyncLock statement that ends the block. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + + + The WithStatement that begins the With...End With block. + + + + + The statements contained in the With...End With block. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + The End With statement that ends the block. + + + + + Represents the declaration of one or more local variables or constants. + + + + + The modifier token (Static, Dim or Const) that introduces this local variable + declaration. + + + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents a label statement. + + + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + + + The ":" token of the label statement. + + + + + Represents a "GoTo" statement. + + + + + The "GoTo" keyword. + + + + + The name of the label. If the label is a line number, wraps an IntegerLiteral + that is the line number, otherwise, wraps an Identifier. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + + + The "Stop" or "End" keyword. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + The "Exit" keyword. + + + + + The keyword describing the block to exit. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + The "Continue" keyword. + + + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Return" statement. + + + + + The "Return" keyword. + + + + + The expression being returned, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + + + The "If" keyword. + + + + + The condition expression to be evaluated. + + + + + The "Then" keyword. + + + + + A list of statements to be executed if the condition expression evaluates as + true. Multiple statements must be separated by colons. + + + If nothing is present, an empty list is returned. + + + + + An "Else" clause to be executed if the condition expression evaluates as false. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + + + The "Else" keyword. + + + + + A list of statements to be executed. Multiple statements must be separated by + colons. + + + If nothing is present, an empty list is returned. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + + + The "If" statement that begins the "If" block. + + + + + A list of statements to be executed if the condition expression evaluates as + true. + + + If nothing is present, an empty list is returned. + + + + + A list of "ElseIf" blocks to be evaluated, in order, if the condition + expression of the "If" statement evaluates as false. + + + If nothing is present, an empty list is returned. + + + + + An "Else" block to be executed if the condition expression of the "If" + statement and all "ElseIf" blocks evaluate as false. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Then "End If" statement. + + + + + Represents the "If ... Then" statement that begins a multi-line "If" block. + + + + + The "If" keyword. + + + + + The condition expression to be evaluated. + + + + + The "Then" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an "ElseIf ... Then ..." block. + + + + + The "ElseIf ... Then" statement the begins the "ElseIf" block. + + + + + A list of statements to be executed if the condition expression of the "ElseIf" + statement evaluates as true. + + + If nothing is present, an empty list is returned. + + + + + Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. + + + + + The "ElseIf" keyword. + + + + + The condition expression to be evaluated. + + + + + The "Then" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an "Else ..." block. + + + + + The "Else" statement that begins the "Else" block. + + + + + A list of statements to be executed. + + + If nothing is present, an empty list is returned. + + + + + Represents the "Else" statement that begins an "Else" block. + + + + + The "Else" keyword. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + + + The "Try" statement that begins the "Try" block. + + + + + A list of statements to be executed. + + + If nothing is present, an empty list is returned. + + + + + A list of "Catch" blocks which may be executed if an exception is thrown while + executing the statements in the "Try" block. + + + If nothing is present, an empty list is returned. + + + + + A "Finally" block to be executed before execution leaves the "Try" block. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "End Try" statement. + + + + + Represents the "Try" statement that begins a "Try" block. + + + + + The "Try" keyword. + + + + + Represents a "Catch ..." block. + + + + + The "Catch" statement that begins the "Catch" block. + + + + + A list of statements to be executed if an exception is caught by the "Catch" + block. + + + If nothing is present, an empty list is returned. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + + + The "Catch" keyword. + + + + + An identifier declaring a new variable or naming an existing variable to store + the exception caught by the "Catch" statement. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A simple "As" clause specifying the type of exception to catch. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A "When" clause to filter exceptions before catching. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the "When ..." clause of a "Catch" statement. + + + + + The "When" keyword. + + + + + The filter expression to be evaluated. + + + + + Represents a "Finally ..." block of a "Try" block. + + + + + The "Finally" statement that begins the "Finally" block. + + + + + A list of statements to be executed. + + + If nothing is present, an empty list is returned. + + + + + Represents the "Finally" statement that begins a "Finally" block. + + + + + The "Finally" keyword. + + + + + Represents the "Error" statement. + + + + + The "Error" keyword. + + + + + The expression that represents the error number. + + + + + Represents an OnError Goto statement. + + + + + The "On" keyword + + + + + The "Error" keyword. + + + + + The "GoTo" keyword + + + + + An optional minus for On Error Goto -1 + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Resume Next statement. + + + + + The "On" keyword + + + + + The "Error" keyword. + + + + + The "Resume" keyword. + + + + + The "Next" + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + The "Resume" keyword. + + + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + + + The Select Case statement that begins the block. + + + + + A list of the contained Case blocks. + + + If nothing is present, an empty list is returned. + + + + + The End Select statement that ends the block. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + + + The "Select" keyword. + + + + + The "Case" keyword, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The value that branching is based on. + + + + + Represents a case statement and its subsequent block. + + + + + The statement that begins the case block. + + + + + The statements contained in the case block. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + + + The "Case" keyword + + + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a single clause in a case statement. An abstract node that is the + parent of different kinds of Case clauses. + + + + + The "Else" part in a Case Else statement. + + + + + The "Else" keyword. + + + + + Represents a single value in a Case. + + + + + The expression that denotes the value being tested against. + + + + + Represents a range "expression To expression" in a Case. + + + + + The lower bound of the range. + + + + + The "To" keyword + + + + + The upper bound of the range. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + The "Is" keyword, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + + + The expression that denotes the value being tested against. + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + + + The "SyncLock" keyword. + + + + + The expression being synchronized on. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + + + The Do statement that begins the block. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + The Loop statement that ends the block. + + + + + The Do statement that begins a Do-Loop block. + + + + + The "Do" keyword. + + + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The Loop statement that begins a Do-Loop block. + + + + + The "Loop" keyword. + + + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + + + The "While" or "Until" keyword. + + + + + The boolean expression after the While or Until. + + + + + The While statement that begins a While...End While block. This statement + always occurs as the Begin of a WhileBlock. + + + + + The "While" keyword. + + + + + The boolean expression that controls the While loop. + + + + + Represents a For or For Each block. + + + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a For block, including the introducing statement, the body and the + "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + + + The For statement that begins the block. + + + + + Represents a For Each block, including the introducing statement, the body and + the "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + + + The For Each statement that begins the block. + + + + + Represents a For or For Each statement. + + + + + The "For" keyword. + + + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + + + The "=" token. + + + + + The expression denoting the initial value of the iteration. + + + + + The "To" keyword. + + + + + The expression denoting the final value of the iteration. + + + + + The optional Step clause. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The Step clause in a For Statement. + + + + + The "Step" keyword. + + + + + The expression denoting the step increment. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + + + The "Each" keyword. + + + + + The "In" keyword. + + + + + The expression denoting the collection to iterate over. + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + + + The "Next" keyword. + + + + + The variables in the Next statement, if present + + + If nothing is present, an empty list is returned. + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + + + The "Using" keyword. + + + + + If the Using statement is of a form that does not declare a new variable, this + is the expression used in the using. Otherwise, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + If the Using statement is of a form that declares one or more new variables, + this is the list of variable declarations. Otherwise, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Represents a Throw statement. + + + + + The "Throw" keyword + + + + + The expression denoting the value being thrown. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + The target (left hand side) of the assignment. + + + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + + + The source (right hand side) of the assignment. + + + + + Represents a left-hand side of a MidAssignment statement. + + + + + The "Mid" possibly followed by a type character. + + + + + The argument list. + + + + + Represent a call statement (also known as a invocation statement). + + + + + The "Call" keyword. + + + + + The expression denoting the call. This could be an Invocation or a MemberAccess + (in the case where no parentheses were supplied.) + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + + + The "AddHandler" or "RemoveHandler" keyword. + + + + + The event being accessed. + + + + + The "," token. + + + + + The delegate being added or removed. + + + + + Represent a RaiseEvent statement. + + + + + The "RaiseEvent" keyword + + + + + The name of the event being raised. + + + + + The argument list, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + + + The "With" keyword. + + + + + The expression that is the operand of the With statement. + + + + + Represents a ReDim statement. + + + + + The "ReDim" keyword. + + + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The list of ReDim clauses. + + + + + Represents a ReDim statement clause. + + + + + The target of the ReDim statement. + + + + + The ArraySizeInitializationModifier. + + + + + Represents an "Erase" statement. + + + + + The "Erase" keyword. + + + + + A list of expressions denoting the arrays to erase. + + + + + An abstract base class for all node classes that define expressions. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a parenthesized expression. + + + + + The "(" token + + + + + The expression inside the parentheses. + + + + + The ")" token + + + + + Represents a tuple literal expression. + + + + + The "(" token + + + + + The list of tuple arguments. + + + + + The ")" token + + + + + Represents a tuple type expression. + + + + + The "(" token + + + + + The list of tuple elements. + + + + + The ")" token + + + + + Represents a single declaration of a tuple element. + + + + + Represents a single declaration of a tuple element supplying only the type. + + + + + The type-name part of the tuple element syntax. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + + + The name of the element. + + + + + A simple "As" clause specifying the type of the tuple element. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Identifies one of the special instances "Me", "MyClass" or "MyBase". The Kind + property identifies which. + + + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "Me" + + + + + Identifies the special instance "MyBase" + + + + + Identifies the special instance "MyClass" + + + + + Represents a GetType expression. + + + + + The "GetType" keyword. + + + + + The "(" token. + + + + + The type to get the Type object for. This can be an open generic type. + + + + + The ")" token. + + + + + Represents a TypeOf...Is or IsNot expression. + + + + + The "TypeOf" keyword. + + + + + The expression being tested. + + + + + The "Is" or "IsNot" keyword. + + + + + The name of the type being tested against. + + + + + Represents a GetXmlNamespace expression. + + + + + The "GetXmlNamespace" keyword. + + + + + The "(" token. + + + + + The Xml namespace name being referenced. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The ")" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + + + The expression on the left-hand-side of the "." or "!" token. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "." or "!" token. + + + + + The identifier after the "." or "!" token. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The initial dot "." part of the separator. + + + + + The "@" part of .@ or the second "." of "...". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The third "." in a "..." separator. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The identifier after the ".", ".@" or "..." + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + + + The target of the call or index expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The argument list. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Base class for object, array and anonymous object creation expressions + + + + + The "New" keyword. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + + + The type of the object being initialized. + + + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + An optional From or With clause to initialize the new object. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a New expression that create an object of anonymous type. + + + + + The With clause to initialize the new object. + + + + + Represents an expression that creates a new array. + + + + + The element type of the array being created. + + + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + A list of array modifiers such as "()" or "(,)". If no array modifiers were + present, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The initializer including the braces. + + + + + Represents an expression that creates a new array without naming the element + type. + + + + + The "{" token. + + + + + The list of initializers between the braces. + + + If nothing is present, an empty list is returned. + + + + + The "}" token. + + + + + Represents a CType, DirectCast or TryCast conversion expression. The Kind + property determines which kind of cast it is. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + + + The "(" token. + + + + + The expression being cast. + + + + + The "," token. + + + + + The type the expression is being cast to. + + + + + The ")" token. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + + + The keyword that was used in the cast operation. + + + + + The "(" token. + + + + + The expression being cast. + + + + + The ")" token. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + The left operand. + + + + + The right operand. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + + + The token that is the operator. + + + + + The expression being operated on. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + + + The "If" keyword + + + + + The "(" token + + + + + The first expression inside the parentheses. + + + + + The "," token. + + + + + The second expression inside the parentheses. + + + + + The ")" token + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + + + The "If" keyword + + + + + The "(" token + + + + + The first expression inside the parentheses. + + + + + The "," token. + + + + + The second expression inside the parentheses. + + + + + The "," token. + + + + + The second expression inside the parentheses. + + + + + The ")" token + + + + + Represents a lambda expression, either single line or multi-line. + + + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + + + Represents a single line lambda expression. + + + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a multi-line lambda expression. + + + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents the header part of a lambda expression + + + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a parenthesized argument list. + + + + + The "(" token. + + + + + The list of arguments. This may be empty. Omitted argument are represented by + an OmittedArgumentSyntax node. + + + If nothing is present, an empty list is returned. + + + + + The ")" token. + + + + + Base class for the possible kinds of arguments that can appear in an argument + list. + + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + + + An empty token because all non terminals must have a token. + + + + + Represents an argument that is just an optional argument name and an + expression. + + + + + The optional name and ":=" prefix of a named argument. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The expression that is the argument. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + + + The name used to identify the named argument. + + + + + The ":=" token. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + + + The lower bound of the range. This is typically the integer constant zero. + + + + + The "To" keyword. + + + + + The upper bound of the range. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + + + A list of all the query operators in this query expression. This list always + contains at least one operator. + + + + + This is a base class for all query operators. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + + + The name of the range variable being defined. + + + + + Describes the type of the variable being defined. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "In" keyword. + + + + + The expression that serves as the source of items for the range variable. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The expression used to initialize the expression variable. + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the aggregation + expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The name of the aggregation function. The "Group" aggregation function is + represented by the identifier "Group". + + + + + Represents the name and optional type of an expression range variable. + + + + + The name of the variable being defined. + + + + + Describes the type of the variable being defined. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The "=" token. + + + + + Represents aggregation in aggregation range variable declaration of a Group By, + Group Join or Aggregate query operator. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + + + The name of the aggregation function. + + + + + The "(" token if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The argument to the aggregation function. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The ")" token, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + + + The "Group" keyword. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + + + The "From" keyword. + + + + + The list of collection variables declared by this From operator. + + + + + Represents a "Let" query operator. + + + + + The "Let" keyword. + + + + + The list of expression range variable being defined by the Let operator. + + + + + Represents an Aggregate query operator. + + + + + The "Aggregate" keyword. + + + + + The list of collection range variables declared by this Aggregate operator. + + + + + A list of additional query operators. It may be empty. + + + If nothing is present, an empty list is returned. + + + + + The "Into" keyword. + + + + + The list of new variables being defined by the aggregation. + + + + + Represents the "Distinct" query operator. + + + + + The "Distinct" keyword. + + + + + Represents a "Where" query operator. + + + + + The "Where" keyword. + + + + + The boolean expression used for filtering. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + + + The "Skip" or "Take" keyword. + + + + + The "While" keyword. + + + + + The boolean expression used for partitioning. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + + + The "Skip" or "Take" keyword. + + + + + Represents the expression with the number of items to take or skip. + + + + + Represents the "Group By" query operator. + + + + + The "Group" keyword. + + + + + The optional list of variables being grouped; the contents of the Group clause. + If none were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + The "By" keyword. + + + + + The key values being used for grouping. + + + + + The list of new variables that calculate aggregations. + + + + + Represents a Join or a Group Join query operator. + + + + + The "Join" keyword. + + + + + Defines the collection range variables being joined to. + + + + + An additional Join or Group Join query operator. + + + If nothing is present, an empty list is returned. + + + + + The "On" keyword. + + + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Represents the "expression Equals expression" condition in a Join. + + + + + The left expression in the Join condition. + + + + + The "Equals" keyword. + + + + + The right expression in the Join condition. + + + + + Represents a Join query operator. + + + + + Represents the "Group Join" query operator. + + + + + The "Group" keyword. + + + + + The "Into" keyword. + + + + + The list of new variables that calculate aggregations. + + + + + Represents the "Order By" query operator. + + + + + The "Order" keyword + + + + + The "By" keyword. + + + + + The list of OrderExpression's to sort by. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + + + The expression to sort by. + + + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents the "Select" query operator. + + + + + The "Select" keyword. + + + + + The list of expression range variables being defined by the Select query + operator. + + + + + This is the base class for all XML expression syntax nodes (XmlDocument and + XmlElement). + + + + + Represents an XML Document literal expression. + + + + + If nothing is present, an empty list is returned. + + + + + If nothing is present, an empty list is returned. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + + + Represents an XML element with content in an XML literal expression. + + + + + If nothing is present, an empty list is returned. + + + + + Represents Xml text. + + + + + A list of all the text tokens in the Xml text. This list always contains at + least one token. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + If nothing is present, an empty list is returned. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an empty XML element of the form <element /> + + + + + If nothing is present, an empty list is returned. + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + + + If nothing is present, an empty list is returned. + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + + + Represents an XML CDATA section in an XML literal expression. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + + + Abstract node class that represents the textual description of a type, possibly + include generic type arguments, qualified names, array specifiers, nullable + specifier and the like. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + + + The type of the elements of the array. + + + + + Represents the list of "()" or "(,,)" modifiers on the array type. + + + + + A type name that represents a nullable type, such as "Integer?". + + + + + The kind of type that is this type is a nullable of. Cannot be an array type or + a nullable type. + + + + + The "?" token. + + + + + Represents an occurrence of a Visual Basic built-in type such as Integer or + String in source code. + + + + + The keyword that was used to describe the built-in type. + + + + + Abstract node class that represents a name, possibly include generic arguments + and qualified names. + + + + + Abstract node class that represents a name, possibly include generic arguments. + + + + + The identifier in the name. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + + + The generic argument list. + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + + + The part of the name that appears to the left of the dot. This can itself be + any name. + + + + + The "." token that separates the names. + + + + + The part of the name that appears to the right of the dot. This must be a + simple identifier. + + + + + Represents a name in the global namespace. + + + + + The "Global" keyword. + + + + + Represents a parenthesized list of generic type arguments. + + + + + The "(" token. + + + + + The "Of" keyword. + + + + + A list of all the type arguments. + + + + + The ")" token. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represent a Yield statement. + + + + + The "Yield" keyword. + + + + + The expression whose value is being yielded. + + + + + Represents an Await expression. + + + + + The "Await" keyword. + + + + + The expression being awaited. + + + + + Represents a single syntactic token in a VB program. A token is a keyword, + punctuator, literal, identifier or XML token. The type of keyword or punctuator + can be determined from the Kind property. + + + + + Helper to check whether the token is a keyword + + + + + Helpers to check whether the token is a binary operator + + True if it is a binary operator + + + + Check whether the token is a statement terminator + + True if it is statement terminator + + + + Check whether token is end of text + + + + + Create a new token with the trivia prepended to the existing preceding trivia + + + + + Create a new token with the trivia appended to the existing following trivia + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents an Xml NCName per Namespaces in XML 1.0 + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + + + The text of the attribute or pcdata after normalization. + + + + + Represents literal character data in interpolated string expression. + + + + + The text. + + + + + Represents a Decimal literal token. + + + + + The type suffix or type character that was on the literal, if any. If no suffix + was present, TypeCharacter.None is returned. + + + + + The value of the token. + + + + + Represents a Date literal token. + + + + + The value of the token. + + + + + Represents a string literal token. + + + + + The value of the string, after removing the quotation marks and combining + doubled quotation marks. + + + + + Represents a string literal token. + + + + + The value of the character, after removing the quotation marks. + + + + + Abstract class that represent structured trivia. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + + + The list of tokens that were skipped by the parser. + + + If nothing is present, an empty list is returned. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in + source. + + + + + If nothing is present, an empty list is returned. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + + + The expression on the left-hand-side of the "?". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + "?" token. + + + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + Represents a NameOf expression. + + + + + The "NameOf" keyword. + + + + + The "(" token. + + + + + The argument. + + + + + The ")" token. + + + + + Represents an interpolated string expression. + + + + + The opening '$"', '$“', or '$”' token. + + + + + The contents of the interpolated string. + + + + + The closing '"', '”', or '“' token. + + + + + Represents either text content or an interpolation. + + + + + Represents literal text content in an interpolated string. + + + + + The text token. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + + + The opening curly brace '{' token. + + + + + The expression whose formatted value should be embedded in the resultant + string. + + + + + Optional. The alignment clause ',alignment' of the embedded expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Optional. The format string clause ':formatString' of the embedded expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + The closing curly brace '}' token of the embedded expression. + + + + + Represents an alignment clause ',alignment' of an interpolated string embedded + expression. + + + + + The comma ',' token. + + + + + An expression representing the alignment of the interpolated expression. + + + + + Represents a format string clause ':formatString' of an interpolated string + embedded expression. + + + + + The ':' token. + + + + + The format string. + + + + + Represents a pre-processing directive (such as #If, #Const or #Region) + appearing in source. + + + + + The "#" token in a preprocessor directive. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + + + The "Const" keyword. + + + + + The name of the pre-processing constant being defined. + + + + + The "=" token. + + + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Represents an #Else pre-processing directive appearing in source. + + + + + Represents an #End If pre-processing directive appearing in source. + + + + + Represents the beginning of a #Region directive appearing in source. + + + + + The "Region" keyword. + + + + + The label of the code region being defined. + + + + + Represents an #End Region directive appearing in source. + + + + + The "End" keyword. + + + + + The "Region" keyword. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + + + Represents an #r directive appearing in scripts. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + An empty token because all non terminals must have a token. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + A representing the specific kind of + EndBlockStatementSyntax. One of EndIfStatement, EndUsingStatement, + EndWithStatement, EndSelectStatement, EndStructureStatement, EndEnumStatement, + EndInterfaceStatement, EndClassStatement, EndModuleStatement, + EndNamespaceStatement, EndSubStatement, EndFunctionStatement, EndGetStatement, + EndSetStatement, EndPropertyStatement, EndOperatorStatement, EndEventStatement, + EndAddHandlerStatement, EndRemoveHandlerStatement, EndRaiseEventStatement, + EndWhileStatement, EndTryStatement, EndSyncLockStatement. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an entire source file of VB code. + + + Represents the list of Option statements at the beginning of a source file. + + + Represents the list of Imports statements at the beginning of a source file. + + + Represents the list of AttributeStatements at the beginning of a source file + that contain the Assembly and Module attributes. + + + Represents the members of the default namespace for this source file: all the + top-level type and namespace declarations in the file. May also contain + Statements that are not valid + + + Represents the end of the source file. This token may have trivia (whitespace, + comments, ...) attached to it. + + + + + Represents an Option statement, such as "Option Strict On". + + + The "Option" keyword. + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + The keyword that identifiers the value being set for the option: On, Off, Text + or Binary. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + The "Imports" keyword. + + + A list of one or more import clauses. Each clause is either an alias, namespace + or XML namespace import. + + + + + Represents the clause of an Imports statement that imports all members of a + type or namespace or aliases a type or namespace. + + + An optional alias for the namespace or type being imported. + + + The namespace or type being imported. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + The identifier being introduced. + + + The "=" token. + + + + + Defines a XML namespace for XML expressions. + + + Identifies the XML namespace alias and URI. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + The statement that begins the NamespaceBlock. + + + The declarations contained in the namespace statement. + + + The End Namespace statement that ends the block. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + The "Namespace" keyword. + + + A (possibly dotted) name denoting the namespace being declared. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + The "Module" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Module" statement that ends the block. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + The "Structure" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Structure" statement that ends the block. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + The "Interface" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Interface" statement that ends the block. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + The "Class" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Class" statement that ends the block. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + The statement that begins the type or module. + + + The declarations contained in the enumeration. + + + The End XXX statement that ends the block. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + The "Inherits" keyword. + + + A list of the types being inherited. + + + + + Represents an Implements statement in a Class or Structure. + + + The "Implements" keyword. + + + A list of the types being implemented. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Module" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Structure" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Interface" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Class" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Enum" keyword. + + + The name of the enum being declared. + + + Optional "As XXX" clause describing the underlying type of the enumeration. If + no As clause was specified, Nothing is returned. + + + + + Represents the type parameter list in a declaration. + + + The "(" token. + + + The "Of" keyword. + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + The ")" token. + + + + + Represents a type parameter on a generic type declaration. + + + Represents the "In" or "Out" variance keyword on a type parameter, if present. + If no variance modifier was present, Nothing is returned. + + + The name of the type parameter + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + A list of the supplied constraints. If no constraints were supplied, Nothing is + returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + The "As" keyword. + + + The "{" token. + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + The "}" token. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + A representing the specific kind of + SpecialConstraintSyntax. One of NewConstraint, ClassConstraint, + StructureConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + Represents a type parameter constraint that is a type. + + + The type describing the constraint. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + An optional value for the enum member. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + A representing the specific kind of MethodBlockSyntax. + One of SubBlock, FunctionBlock. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + The "Sub New" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" statement that ends the block declaration. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Operator" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Operator" statement that ends the block declaration. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + A representing the specific kind of AccessorBlockSyntax. + One of GetAccessorBlock, SetAccessorBlock, AddHandlerAccessorBlock, + RemoveHandlerAccessorBlock, RaiseEventAccessorBlock. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + The property declaration that begins the block. + + + The accessor blocks contained in the property, between the Property and the End + Property statements. + + + The End Property statement that ends the block. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + The event declaration that begins the block. + + + The accessor blocks contained in the custom event declaration, between the + Event statement and the End Event statement. + + + The End Event statement that ends the block. + + + + + Represents the parameter list in a method declaration. + + + The "(" token that introduces the parameter list. If no parameter list was + present, Nothing is returned. + + + The list of parameters. If no parameter list was present, Nothing is returned. + + + The ")" token that concludes the parameter list. If no parameter list was + present, Nothing is returned. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A representing the specific kind of + MethodStatementSyntax. One of SubStatement, FunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" keyword. + + + The "New" keyword in the constructor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A representing the specific kind of + DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A representing the specific kind of + DelegateStatementSyntax. One of DelegateSubStatement, + DelegateFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The optional Custom keyword for custom event declarations. + + + The "Event" keyword that introduces this event declaration. + + + The name of the event being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an Implements clause indicates the interface methods that this + method implements. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Operator" keyword that introduces this operator declaration. + + + The operator being defined. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Property" keyword that introduces this property declaration. + + + The name of the property being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + property. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A representing the specific kind of + AccessorStatementSyntax. One of GetAccessorStatement, SetAccessorStatement, + AddHandlerAccessorStatement, RemoveHandlerAccessorStatement, + RaiseEventAccessorStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + The "Implements" keyword. + + + The list of interface members being implemented. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + The "Handles" keyword. + + + The list of event members being handled. + + + + + Represents event container specified through special keywords "Me", "MyBase" or + "MyClass".. + + + The container of the event. This can be one of the special keywords: "Me", + "MyBase" or "MyClass". + + + + + Represents event container that refers to a WithEvents member. + + + The container of the event. It is a simple identifier that refers to a + WithEvents member of the containing type. + + + + + Represents event container that refers to a WithEvents member's property. + + + The container of the event. + + + The "." token. + + + The provider of the event. It is a property of a WithEvents member of the + containing type. + + + + + Represents a single handled event in a "Handles ..." clause. + + + The container of the event. This can either be a simple identifier (identifying + a members of the containing type) or one of the special keywords "Me", "MyBase" + or "MyClass". + + + The "." token. + + + The event being handled. This must be a simple identifier. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The missing identifier token for this incomplete member. Should only be used to + have a location for error reporting. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + The "As" clause that describes the return type, and possibly includes "New", + "With" or "From". If no As clause was present, Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + variable or the value of the constant. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + The "As" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type-name part of the As clause. + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + The "As" keyword. + + + The New expression + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + The "With" keyword. + + + The "{" token. + + + The comma-separated list of field initializers. + + + The "}" token. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + The "From" keyword. + + + The initializer including the braces. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + The optional "Key" keyword. + + + The value being assigned. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + The optional "Key" keyword. + + + The "." token. + + + The name of the field being initialized. + + + The "=" token. + + + The value being assigned to the field. + + + + + Represents an "= initializer" clause in a declaration for a variable, parameter + or automatic property. + + + The "=" token. + + + The expression used as the initial value. + + + + + Represent a parameter to a method, property, constructor, etc. + + + A list of all attribute lists on this parameter. If no attributes were + specified, Nothing is returned. + + + A list of the modifier tokens "ByVal", "ByRef", "Optional" or "ParamArray" that + modify this parameter. + + + The name of the parameter, including any "?" or "()" modifiers. + + + If present, the "As type-name" clause describing the type of the parameter. If + no As clause is present, Nothing is returned. + + + If present, an initializer with the default value of the parameter. If no + default value is present, Nothing is returned. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + The identifier that names the item being declared. + + + The "?" token that indicates a nullable type. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + A list of array modifiers for the type. If no array modifiers were present, an + empty list is returned. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + The "(" token. + + + The comma tokens in the array type. There is one less comma than the rank. + + + The ")" token. + + + + + Represents a group of attributes within "<" and ">" brackets. + + + The "<" token. + + + A comma separated list of attribute declarations in this attribute list. + + + The ">" token. + + + + + Represents a single attribute declaration within an attribute list. + + + Optional attribute target. Assembly|Module : + + + The name of the attribute. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + + + Represents a single attribute declaration within an attribute list. + + + The "Assembly" or "Module" attribute modifier, is present. If no attribute + modifier is present, Nothing is returned. + + + The ":" token, if an attribute modifier is present. If no attribute modifier is + present, Nothing is returned. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + The list of attribute lists. + + + + + Represent an expression in a statement context. This may only be a invocation + or await expression in standard code but may be any expression in VB + Interactive code. + + + The expression. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + "?" token. + + + The expression whose value is being output. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + The While statement that begins the block. + + + The statements contained in the While...End While. This might be an empty list. + + + The End While statement that ends the block. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + The UsingStatement that begins the Using...End Using block. + + + The statements contained in the Using...End Using block. This might be an empty + list. + + + The End Using statement that ends the block. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + The SyncLock statement that begins the block. + + + The statements contained in the SyncLock...End SyncLock statement. This might + be an empty list. + + + The End SyncLock statement that ends the block. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + The WithStatement that begins the With...End With block. + + + The statements contained in the With...End With block. This might be an empty + list. + + + The End With statement that ends the block. + + + + + Represents the declaration of one or more local variables or constants. + + + The modifier token (Static, Dim or Const) that introduces this local variable + declaration. + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents a label statement. + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + The ":" token of the label statement. + + + + + Represents a "GoTo" statement. + + + The "GoTo" keyword. + + + The name of the label. If the label is a line number, wraps an IntegerLiteral + that is the line number, otherwise, wraps an Identifier. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + A representing the specific kind of LabelSyntax. One of + IdentifierLabel, NumericLabel, NextLabel. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + The "Stop" or "End" keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + The "Stop" or "End" keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + A representing the specific kind of + StopOrEndStatementSyntax. One of StopStatement, EndStatement. + + + The "Stop" or "End" keyword. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + A representing the specific kind of ExitStatementSyntax. + One of ExitDoStatement, ExitForStatement, ExitSubStatement, + ExitFunctionStatement, ExitOperatorStatement, ExitPropertyStatement, + ExitTryStatement, ExitSelectStatement, ExitWhileStatement. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + A representing the specific kind of + ContinueStatementSyntax. One of ContinueWhileStatement, ContinueDoStatement, + ContinueForStatement. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Return" statement. + + + The "Return" keyword. + + + The expression being returned, if present. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + The "If" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + A list of statements to be executed if the condition expression evaluates as + true. Multiple statements must be separated by colons. + + + An "Else" clause to be executed if the condition expression evaluates as false. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + The "Else" keyword. + + + A list of statements to be executed. Multiple statements must be separated by + colons. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + The "If" statement that begins the "If" block. + + + A list of statements to be executed if the condition expression evaluates as + true. + + + A list of "ElseIf" blocks to be evaluated, in order, if the condition + expression of the "If" statement evaluates as false. + + + An "Else" block to be executed if the condition expression of the "If" + statement and all "ElseIf" blocks evaluate as false. + + + Then "End If" statement. + + + + + Represents the "If ... Then" statement that begins a multi-line "If" block. + + + The "If" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + + + Represents an "ElseIf ... Then ..." block. + + + The "ElseIf ... Then" statement the begins the "ElseIf" block. + + + A list of statements to be executed if the condition expression of the "ElseIf" + statement evaluates as true. + + + + + Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. + + + The "ElseIf" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + + + Represents an "Else ..." block. + + + The "Else" statement that begins the "Else" block. + + + A list of statements to be executed. + + + + + Represents the "Else" statement that begins an "Else" block. + + + The "Else" keyword. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + The "Try" statement that begins the "Try" block. + + + A list of statements to be executed. + + + A list of "Catch" blocks which may be executed if an exception is thrown while + executing the statements in the "Try" block. + + + A "Finally" block to be executed before execution leaves the "Try" block. + + + The "End Try" statement. + + + + + Represents the "Try" statement that begins a "Try" block. + + + The "Try" keyword. + + + + + Represents a "Catch ..." block. + + + The "Catch" statement that begins the "Catch" block. + + + A list of statements to be executed if an exception is caught by the "Catch" + block. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + The "Catch" keyword. + + + An identifier declaring a new variable or naming an existing variable to store + the exception caught by the "Catch" statement. + + + A simple "As" clause specifying the type of exception to catch. + + + A "When" clause to filter exceptions before catching. + + + + + Represents the "When ..." clause of a "Catch" statement. + + + The "When" keyword. + + + The filter expression to be evaluated. + + + + + Represents a "Finally ..." block of a "Try" block. + + + The "Finally" statement that begins the "Finally" block. + + + A list of statements to be executed. + + + + + Represents the "Finally" statement that begins a "Finally" block. + + + The "Finally" keyword. + + + + + Represents the "Error" statement. + + + The "Error" keyword. + + + The expression that represents the error number. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + A representing the specific kind of + OnErrorGoToStatementSyntax. One of OnErrorGoToZeroStatement, + OnErrorGoToMinusOneStatement, OnErrorGoToLabelStatement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Resume Next statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "Resume" keyword. + + + The "Next" + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + The Select Case statement that begins the block. + + + A list of the contained Case blocks. + + + The End Select statement that ends the block. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + The "Select" keyword. + + + The "Case" keyword, if present. + + + The value that branching is based on. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + The "Else" part in a Case Else statement. + + + The "Else" keyword. + + + + + Represents a single value in a Case. + + + The expression that denotes the value being tested against. + + + + + Represents a range "expression To expression" in a Case. + + + The lower bound of the range. + + + The "To" keyword + + + The upper bound of the range. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + A representing the specific kind of + RelationalCaseClauseSyntax. One of CaseEqualsClause, CaseNotEqualsClause, + CaseLessThanClause, CaseLessThanOrEqualClause, CaseGreaterThanOrEqualClause, + CaseGreaterThanClause. + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + The "SyncLock" keyword. + + + The expression being synchronized on. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + A representing the specific kind of DoLoopBlockSyntax. + One of SimpleDoLoopBlock, DoWhileLoopBlock, DoUntilLoopBlock, DoLoopWhileBlock, + DoLoopUntilBlock. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + A representing the specific kind of DoStatementSyntax. + One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + A representing the specific kind of LoopStatementSyntax. + One of SimpleLoopStatement, LoopWhileStatement, LoopUntilStatement. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + A representing the specific kind of + WhileOrUntilClauseSyntax. One of WhileClause, UntilClause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + The While statement that begins a While...End While block. This statement + always occurs as the Begin of a WhileBlock. + + + The "While" keyword. + + + The boolean expression that controls the While loop. + + + + + Represents a For block, including the introducing statement, the body and the + "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For statement that begins the block. + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + + + Represents a For Each block, including the introducing statement, the body and + the "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For Each statement that begins the block. + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + The "For" keyword. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The "=" token. + + + The expression denoting the initial value of the iteration. + + + The "To" keyword. + + + The expression denoting the final value of the iteration. + + + The optional Step clause. + + + + + The Step clause in a For Statement. + + + The "Step" keyword. + + + The expression denoting the step increment. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + The "For" keyword. + + + The "Each" keyword. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The "In" keyword. + + + The expression denoting the collection to iterate over. + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + The "Next" keyword. + + + The variables in the Next statement, if present + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + The "Using" keyword. + + + If the Using statement is of a form that does not declare a new variable, this + is the expression used in the using. Otherwise, Nothing is returned. + + + If the Using statement is of a form that declares one or more new variables, + this is the list of variable declarations. Otherwise, Nothing is returned. + + + + + Represents a Throw statement. + + + The "Throw" keyword + + + The expression denoting the value being thrown. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + A representing the specific kind of + AssignmentStatementSyntax. One of SimpleAssignmentStatement, + MidAssignmentStatement, AddAssignmentStatement, SubtractAssignmentStatement, + MultiplyAssignmentStatement, DivideAssignmentStatement, + IntegerDivideAssignmentStatement, ExponentiateAssignmentStatement, + LeftShiftAssignmentStatement, RightShiftAssignmentStatement, + ConcatenateAssignmentStatement. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a left-hand side of a MidAssignment statement. + + + The "Mid" possibly followed by a type character. + + + The argument list. + + + + + Represent a call statement (also known as a invocation statement). + + + The "Call" keyword. + + + The expression denoting the call. This could be an Invocation or a MemberAccess + (in the case where no parentheses were supplied.) + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + A representing the specific kind of + AddRemoveHandlerStatementSyntax. One of AddHandlerStatement, + RemoveHandlerStatement. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represent a RaiseEvent statement. + + + The "RaiseEvent" keyword + + + The name of the event being raised. + + + The argument list, if present. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + The "With" keyword. + + + The expression that is the operand of the With statement. + + + + + Represents a ReDim statement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement clause. + + + The target of the ReDim statement. + + + The ArraySizeInitializationModifier. + + + + + Represents an "Erase" statement. + + + The "Erase" keyword. + + + A list of expressions denoting the arrays to erase. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + A representing the specific kind of + LiteralExpressionSyntax. One of CharacterLiteralExpression, + TrueLiteralExpression, FalseLiteralExpression, NumericLiteralExpression, + DateLiteralExpression, StringLiteralExpression, NothingLiteralExpression. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a parenthesized expression. + + + The "(" token + + + The expression inside the parentheses. + + + The ")" token + + + + + Represents a tuple literal expression. + + + The "(" token + + + The list of tuple arguments. + + + The ")" token + + + + + Represents a tuple type expression. + + + The "(" token + + + The list of tuple elements. + + + The ")" token + + + + + Represents a single declaration of a tuple element supplying only the type. + + + The type-name part of the tuple element syntax. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + The name of the element. + + + A simple "As" clause specifying the type of the tuple element. + + + + + Identifies the special instance "Me" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "MyBase" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "MyClass" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Represents a GetType expression. + + + The "GetType" keyword. + + + The "(" token. + + + The type to get the Type object for. This can be an open generic type. + + + The ")" token. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + A representing the specific kind of + TypeOfExpressionSyntax. One of TypeOfIsExpression, TypeOfIsNotExpression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a GetXmlNamespace expression. + + + The "GetXmlNamespace" keyword. + + + The "(" token. + + + The Xml namespace name being referenced. + + + The ")" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + A representing the specific kind of + MemberAccessExpressionSyntax. One of SimpleMemberAccessExpression, + DictionaryAccessExpression. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + A representing the specific kind of + XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, + XmlDescendantAccessExpression, XmlAttributeAccessExpression. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + The target of the call or index expression. + + + The argument list. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type of the object being initialized. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + An optional From or With clause to initialize the new object. + + + + + Represents a New expression that create an object of anonymous type. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The With clause to initialize the new object. + + + + + Represents an expression that creates a new array. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The element type of the array being created. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + A list of array modifiers such as "()" or "(,)". If no array modifiers were + present, an empty list is returned. + + + The initializer including the braces. + + + + + Represents an expression that creates a new array without naming the element + type. + + + The "{" token. + + + The list of initializers between the braces. + + + The "}" token. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + The keyword that was used in the cast operation. + + + The "(" token. + + + The expression being cast. + + + The ")" token. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + A representing the specific kind of + BinaryExpressionSyntax. One of AddExpression, SubtractExpression, + MultiplyExpression, DivideExpression, IntegerDivideExpression, + ExponentiateExpression, LeftShiftExpression, RightShiftExpression, + ConcatenateExpression, ModuloExpression, EqualsExpression, NotEqualsExpression, + LessThanExpression, LessThanOrEqualExpression, GreaterThanOrEqualExpression, + GreaterThanExpression, IsExpression, IsNotExpression, LikeExpression, + OrExpression, ExclusiveOrExpression, AndExpression, OrElseExpression, + AndAlsoExpression. + + + The left operand. + + + The right operand. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + A representing the specific kind of + UnaryExpressionSyntax. One of UnaryPlusExpression, UnaryMinusExpression, + NotExpression, AddressOfExpression. + + + The token that is the operator. + + + The expression being operated on. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The "If" keyword + + + The "(" token + + + The first expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The ")" token + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The "If" keyword + + + The "(" token + + + The first expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The ")" token + + + + + Represents a single line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a single line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a single line lambda expression. + + + A representing the specific kind of + SingleLineLambdaExpressionSyntax. One of SingleLineFunctionLambdaExpression, + SingleLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + A representing the specific kind of + MultiLineLambdaExpressionSyntax. One of MultiLineFunctionLambdaExpression, + MultiLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A representing the specific kind of LambdaHeaderSyntax. + One of SubLambdaHeader, FunctionLambdaHeader. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents a parenthesized argument list. + + + The "(" token. + + + The list of arguments. This may be empty. Omitted argument are represented by + an OmittedArgumentSyntax node. + + + The ")" token. + + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + An empty token because all non terminals must have a token. + + + + + Represents an argument that is just an optional argument name and an + expression. + + + The optional name and ":=" prefix of a named argument. + + + The expression that is the argument. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + The name used to identify the named argument. + + + The ":=" token. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + The lower bound of the range. This is typically the integer constant zero. + + + The "To" keyword. + + + The upper bound of the range. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + A list of all the query operators in this query expression. This list always + contains at least one operator. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + The name of the range variable being defined. + + + Describes the type of the variable being defined. + + + The "In" keyword. + + + The expression that serves as the source of items for the range variable. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the expression. + + + The expression used to initialize the expression variable. + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the aggregation + expression. + + + The name of the aggregation function. The "Group" aggregation function is + represented by the identifier "Group". + + + + + Represents the name and optional type of an expression range variable. + + + The name of the variable being defined. + + + Describes the type of the variable being defined. + + + The "=" token. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + The name of the aggregation function. + + + The "(" token if present. + + + The argument to the aggregation function. + + + The ")" token, if present. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + The "Group" keyword. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + The "From" keyword. + + + The list of collection variables declared by this From operator. + + + + + Represents a "Let" query operator. + + + The "Let" keyword. + + + The list of expression range variable being defined by the Let operator. + + + + + Represents an Aggregate query operator. + + + The "Aggregate" keyword. + + + The list of collection range variables declared by this Aggregate operator. + + + A list of additional query operators. It may be empty. + + + The "Into" keyword. + + + The list of new variables being defined by the aggregation. + + + + + Represents the "Distinct" query operator. + + + The "Distinct" keyword. + + + + + Represents a "Where" query operator. + + + The "Where" keyword. + + + The boolean expression used for filtering. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + A representing the specific kind of + PartitionWhileClauseSyntax. One of SkipWhileClause, TakeWhileClause. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + A representing the specific kind of + PartitionClauseSyntax. One of SkipClause, TakeClause. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents the "Group By" query operator. + + + The "Group" keyword. + + + The optional list of variables being grouped; the contents of the Group clause. + If none were specified, an empty list is returned. + + + The "By" keyword. + + + The key values being used for grouping. + + + The list of new variables that calculate aggregations. + + + + + Represents the "expression Equals expression" condition in a Join. + + + The left expression in the Join condition. + + + The "Equals" keyword. + + + The right expression in the Join condition. + + + + + Represents a Join query operator. + + + The "Join" keyword. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The "On" keyword. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Represents the "Group Join" query operator. + + + The "Group" keyword. + + + The "Join" keyword. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The "On" keyword. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + The "Into" keyword. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Order By" query operator. + + + The "Order" keyword + + + The "By" keyword. + + + The list of OrderExpression's to sort by. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + A representing the specific kind of OrderingSyntax. One + of AscendingOrdering, DescendingOrdering. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + Represents the "Select" query operator. + + + The "Select" keyword. + + + The list of expression range variables being defined by the Select query + operator. + + + + + Represents an XML Document literal expression. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + + + Represents an XML element with content in an XML literal expression. + + + + + Represents Xml text. + + + A list of all the text tokens in the Xml text. This list always contains at + least one token. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + Represents an empty XML element of the form <element /> + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + + + Represents an XML CDATA section in an XML literal expression. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + The type of the elements of the array. + + + Represents the list of "()" or "(,,)" modifiers on the array type. + + + + + A type name that represents a nullable type, such as "Integer?". + + + The kind of type that is this type is a nullable of. Cannot be an array type or + a nullable type. + + + The "?" token. + + + + + Represents an occurrence of a Visual Basic built-in type such as Integer or + String in source code. + + + The keyword that was used to describe the built-in type. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + The identifier in the name. + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + The identifier in the name. + + + The generic argument list. + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + The part of the name that appears to the left of the dot. This can itself be + any name. + + + The "." token that separates the names. + + + The part of the name that appears to the right of the dot. This must be a + simple identifier. + + + + + Represents a name in the global namespace. + + + The "Global" keyword. + + + + + Represents a parenthesized list of generic type arguments. + + + The "(" token. + + + The "Of" keyword. + + + A list of all the type arguments. + + + The ")" token. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + Represent a Yield statement. + + + The "Yield" keyword. + + + The expression whose value is being yielded. + + + + + Represents an Await expression. + + + The "Await" keyword. + + + The expression being awaited. + + + + + Represents an Xml NCName per Namespaces in XML 1.0 + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + A representing the specific kind of XmlTextTokenSyntax. + One of XmlTextLiteralToken, XmlEntityLiteralToken, + DocumentationCommentLineBreakToken. + + + The actual text of this token. + + + + + Represents literal character data in interpolated string expression. + + + The actual text of this token. + + + + + Represents a Decimal literal token. + + + The actual text of this token. + + + + + Represents a Date literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + The list of tokens that were skipped by the parser. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in + source. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + The expression on the left-hand-side of the "?". + + + "?" token. + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + Represents a NameOf expression. + + + The "NameOf" keyword. + + + The "(" token. + + + The argument. + + + The ")" token. + + + + + Represents an interpolated string expression. + + + The opening '$"', '$“', or '$”' token. + + + The contents of the interpolated string. + + + The closing '"', '”', or '“' token. + + + + + Represents literal text content in an interpolated string. + + + The text token. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + The opening curly brace '{' token. + + + The expression whose formatted value should be embedded in the resultant + string. + + + Optional. The alignment clause ',alignment' of the embedded expression. + + + Optional. The format string clause ':formatString' of the embedded expression. + + + The closing curly brace '}' token of the embedded expression. + + + + + Represents an alignment clause ',alignment' of an interpolated string embedded + expression. + + + The comma ',' token. + + + An expression representing the alignment of the interpolated expression. + + + + + Represents a format string clause ':formatString' of an interpolated string + embedded expression. + + + The ':' token. + + + The format string. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + A representing the specific kind of SyntaxTrivia. One of + WhitespaceTrivia, EndOfLineTrivia, ColonTrivia, CommentTrivia, + ConflictMarkerTrivia, LineContinuationTrivia, + DocumentationCommentExteriorTrivia, DisabledTextTrivia. + + + The actual text of this token. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + The "#" token in a preprocessor directive. + + + The "Const" keyword. + + + The name of the pre-processing constant being defined. + + + The "=" token. + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #Else pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #End If pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of a #Region directive appearing in source. + + + The "#" token in a preprocessor directive. + + + The "Region" keyword. + + + The label of the code region being defined. + + + + + Represents an #End Region directive appearing in source. + + + The "#" token in a preprocessor directive. + + + The "End" keyword. + + + The "Region" keyword. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #r directive appearing in scripts. + + + The "#" token in a preprocessor directive. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + The "#" token in a preprocessor directive. + + + + + Create an identifier node without brackets or type character. + + + + + Create an identifier node with brackets or type character. + + + + + Create an identifier node without brackets or type character or trivia. + + + + + Create a missing identifier. + + + + + Create a missing contextual keyword. + + + + + Create a missing keyword. + + + + + Create a missing punctuation mark. + + + + + Create a missing string literal. + + + + + Create a missing character literal. + + + + + Create a missing integer literal. + + + + + Creates a copy of a token. + + + + The new token + + + + Create an end-of-text token. + + + + + Create an end-of-text token. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + An empty token because all non terminals must have a token. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + A representing the specific kind of + EndBlockStatementSyntax. One of EndIfStatement, EndUsingStatement, + EndWithStatement, EndSelectStatement, EndStructureStatement, EndEnumStatement, + EndInterfaceStatement, EndClassStatement, EndModuleStatement, + EndNamespaceStatement, EndSubStatement, EndFunctionStatement, EndGetStatement, + EndSetStatement, EndPropertyStatement, EndOperatorStatement, EndEventStatement, + EndAddHandlerStatement, EndRemoveHandlerStatement, EndRaiseEventStatement, + EndWhileStatement, EndTryStatement, EndSyncLockStatement. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an entire source file of VB code. + + + Represents the list of Option statements at the beginning of a source file. + + + Represents the list of Imports statements at the beginning of a source file. + + + Represents the list of AttributeStatements at the beginning of a source file + that contain the Assembly and Module attributes. + + + Represents the members of the default namespace for this source file: all the + top-level type and namespace declarations in the file. May also contain + Statements that are not valid + + + Represents the end of the source file. This token may have trivia (whitespace, + comments, ...) attached to it. + + + + + Represents an Option statement, such as "Option Strict On". + + + The "Option" keyword. + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + The keyword that identifiers the value being set for the option: On, Off, Text + or Binary. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + The "Imports" keyword. + + + A list of one or more import clauses. Each clause is either an alias, namespace + or XML namespace import. + + + + + Represents the clause of an Imports statement that imports all members of a + type or namespace or aliases a type or namespace. + + + An optional alias for the namespace or type being imported. + + + The namespace or type being imported. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + The identifier being introduced. + + + The "=" token. + + + + + Defines a XML namespace for XML expressions. + + + Identifies the XML namespace alias and URI. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + The statement that begins the NamespaceBlock. + + + The declarations contained in the namespace statement. + + + The End Namespace statement that ends the block. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + The "Namespace" keyword. + + + A (possibly dotted) name denoting the namespace being declared. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + The "Module" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Module" statement that ends the block. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + The "Structure" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Structure" statement that ends the block. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + The "Interface" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Interface" statement that ends the block. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + The "Class" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Class" statement that ends the block. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + The statement that begins the type or module. + + + The declarations contained in the enumeration. + + + The End XXX statement that ends the block. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + The "Inherits" keyword. + + + A list of the types being inherited. + + + + + Represents an Implements statement in a Class or Structure. + + + The "Implements" keyword. + + + A list of the types being implemented. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Module" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Structure" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Interface" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Class" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Enum" keyword. + + + The name of the enum being declared. + + + Optional "As XXX" clause describing the underlying type of the enumeration. If + no As clause was specified, Nothing is returned. + + + + + Represents the type parameter list in a declaration. + + + The "(" token. + + + The "Of" keyword. + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + The ")" token. + + + + + Represents a type parameter on a generic type declaration. + + + Represents the "In" or "Out" variance keyword on a type parameter, if present. + If no variance modifier was present, Nothing is returned. + + + The name of the type parameter + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + A list of the supplied constraints. If no constraints were supplied, Nothing is + returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + The "As" keyword. + + + The "{" token. + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + The "}" token. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + A representing the specific kind of + SpecialConstraintSyntax. One of NewConstraint, ClassConstraint, + StructureConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + Represents a type parameter constraint that is a type. + + + The type describing the constraint. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + An optional value for the enum member. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + A representing the specific kind of MethodBlockSyntax. + One of SubBlock, FunctionBlock. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + The "Sub New" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" statement that ends the block declaration. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Operator" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Operator" statement that ends the block declaration. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + A representing the specific kind of AccessorBlockSyntax. + One of GetAccessorBlock, SetAccessorBlock, AddHandlerAccessorBlock, + RemoveHandlerAccessorBlock, RaiseEventAccessorBlock. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + The property declaration that begins the block. + + + The accessor blocks contained in the property, between the Property and the End + Property statements. + + + The End Property statement that ends the block. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + The event declaration that begins the block. + + + The accessor blocks contained in the custom event declaration, between the + Event statement and the End Event statement. + + + The End Event statement that ends the block. + + + + + Represents the parameter list in a method declaration. + + + The "(" token that introduces the parameter list. If no parameter list was + present, Nothing is returned. + + + The list of parameters. If no parameter list was present, Nothing is returned. + + + The ")" token that concludes the parameter list. If no parameter list was + present, Nothing is returned. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A representing the specific kind of + MethodStatementSyntax. One of SubStatement, FunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" keyword. + + + The "New" keyword in the constructor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A representing the specific kind of + DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A representing the specific kind of + DelegateStatementSyntax. One of DelegateSubStatement, + DelegateFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The optional Custom keyword for custom event declarations. + + + The "Event" keyword that introduces this event declaration. + + + The name of the event being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an Implements clause indicates the interface methods that this + method implements. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Operator" keyword that introduces this operator declaration. + + + The operator being defined. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Property" keyword that introduces this property declaration. + + + The name of the property being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + property. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A representing the specific kind of + AccessorStatementSyntax. One of GetAccessorStatement, SetAccessorStatement, + AddHandlerAccessorStatement, RemoveHandlerAccessorStatement, + RaiseEventAccessorStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + The "Implements" keyword. + + + The list of interface members being implemented. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + The "Handles" keyword. + + + The list of event members being handled. + + + + + Represents event container specified through special keywords "Me", "MyBase" or + "MyClass".. + + + The container of the event. This can be one of the special keywords: "Me", + "MyBase" or "MyClass". + + + + + Represents event container that refers to a WithEvents member. + + + The container of the event. It is a simple identifier that refers to a + WithEvents member of the containing type. + + + + + Represents event container that refers to a WithEvents member's property. + + + The container of the event. + + + The "." token. + + + The provider of the event. It is a property of a WithEvents member of the + containing type. + + + + + Represents a single handled event in a "Handles ..." clause. + + + The container of the event. This can either be a simple identifier (identifying + a members of the containing type) or one of the special keywords "Me", "MyBase" + or "MyClass". + + + The "." token. + + + The event being handled. This must be a simple identifier. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The missing identifier token for this incomplete member. Should only be used to + have a location for error reporting. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + The "As" clause that describes the return type, and possibly includes "New", + "With" or "From". If no As clause was present, Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + variable or the value of the constant. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + The "As" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type-name part of the As clause. + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + The "As" keyword. + + + The New expression + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + The "With" keyword. + + + The "{" token. + + + The comma-separated list of field initializers. + + + The "}" token. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + The "From" keyword. + + + The initializer including the braces. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + The optional "Key" keyword. + + + The value being assigned. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + The optional "Key" keyword. + + + The "." token. + + + The name of the field being initialized. + + + The "=" token. + + + The value being assigned to the field. + + + + + Represents an "= initializer" clause in a declaration for a variable, parameter + or automatic property. + + + The "=" token. + + + The expression used as the initial value. + + + + + Represent a parameter to a method, property, constructor, etc. + + + A list of all attribute lists on this parameter. If no attributes were + specified, Nothing is returned. + + + A list of the modifier tokens "ByVal", "ByRef", "Optional" or "ParamArray" that + modify this parameter. + + + The name of the parameter, including any "?" or "()" modifiers. + + + If present, the "As type-name" clause describing the type of the parameter. If + no As clause is present, Nothing is returned. + + + If present, an initializer with the default value of the parameter. If no + default value is present, Nothing is returned. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + The identifier that names the item being declared. + + + The "?" token that indicates a nullable type. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + A list of array modifiers for the type. If no array modifiers were present, an + empty list is returned. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + The "(" token. + + + The comma tokens in the array type. There is one less comma than the rank. + + + The ")" token. + + + + + Represents a group of attributes within "<" and ">" brackets. + + + The "<" token. + + + A comma separated list of attribute declarations in this attribute list. + + + The ">" token. + + + + + Represents a single attribute declaration within an attribute list. + + + Optional attribute target. Assembly|Module : + + + The name of the attribute. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + + + Represents a single attribute declaration within an attribute list. + + + The "Assembly" or "Module" attribute modifier, is present. If no attribute + modifier is present, Nothing is returned. + + + The ":" token, if an attribute modifier is present. If no attribute modifier is + present, Nothing is returned. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + The list of attribute lists. + + + + + Represent an expression in a statement context. This may only be a invocation + or await expression in standard code but may be any expression in VB + Interactive code. + + + The expression. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + "?" token. + + + The expression whose value is being output. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + The While statement that begins the block. + + + The statements contained in the While...End While. This might be an empty list. + + + The End While statement that ends the block. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + The UsingStatement that begins the Using...End Using block. + + + The statements contained in the Using...End Using block. This might be an empty + list. + + + The End Using statement that ends the block. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + The SyncLock statement that begins the block. + + + The statements contained in the SyncLock...End SyncLock statement. This might + be an empty list. + + + The End SyncLock statement that ends the block. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + The WithStatement that begins the With...End With block. + + + The statements contained in the With...End With block. This might be an empty + list. + + + The End With statement that ends the block. + + + + + Represents the declaration of one or more local variables or constants. + + + The modifier token (Static, Dim or Const) that introduces this local variable + declaration. + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents a label statement. + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + The ":" token of the label statement. + + + + + Represents a "GoTo" statement. + + + The "GoTo" keyword. + + + The name of the label. If the label is a line number, wraps an IntegerLiteral + that is the line number, otherwise, wraps an Identifier. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + A representing the specific kind of LabelSyntax. One of + IdentifierLabel, NumericLabel, NextLabel. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + The "Stop" or "End" keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + The "Stop" or "End" keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + A representing the specific kind of + StopOrEndStatementSyntax. One of StopStatement, EndStatement. + + + The "Stop" or "End" keyword. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + A representing the specific kind of ExitStatementSyntax. + One of ExitDoStatement, ExitForStatement, ExitSubStatement, + ExitFunctionStatement, ExitOperatorStatement, ExitPropertyStatement, + ExitTryStatement, ExitSelectStatement, ExitWhileStatement. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + A representing the specific kind of + ContinueStatementSyntax. One of ContinueWhileStatement, ContinueDoStatement, + ContinueForStatement. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Return" statement. + + + The "Return" keyword. + + + The expression being returned, if present. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + The "If" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + A list of statements to be executed if the condition expression evaluates as + true. Multiple statements must be separated by colons. + + + An "Else" clause to be executed if the condition expression evaluates as false. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + The "Else" keyword. + + + A list of statements to be executed. Multiple statements must be separated by + colons. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + The "If" statement that begins the "If" block. + + + A list of statements to be executed if the condition expression evaluates as + true. + + + A list of "ElseIf" blocks to be evaluated, in order, if the condition + expression of the "If" statement evaluates as false. + + + An "Else" block to be executed if the condition expression of the "If" + statement and all "ElseIf" blocks evaluate as false. + + + Then "End If" statement. + + + + + Represents the "If ... Then" statement that begins a multi-line "If" block. + + + The "If" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + + + Represents an "ElseIf ... Then ..." block. + + + The "ElseIf ... Then" statement the begins the "ElseIf" block. + + + A list of statements to be executed if the condition expression of the "ElseIf" + statement evaluates as true. + + + + + Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. + + + The "ElseIf" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + + + Represents an "Else ..." block. + + + The "Else" statement that begins the "Else" block. + + + A list of statements to be executed. + + + + + Represents the "Else" statement that begins an "Else" block. + + + The "Else" keyword. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + The "Try" statement that begins the "Try" block. + + + A list of statements to be executed. + + + A list of "Catch" blocks which may be executed if an exception is thrown while + executing the statements in the "Try" block. + + + A "Finally" block to be executed before execution leaves the "Try" block. + + + The "End Try" statement. + + + + + Represents the "Try" statement that begins a "Try" block. + + + The "Try" keyword. + + + + + Represents a "Catch ..." block. + + + The "Catch" statement that begins the "Catch" block. + + + A list of statements to be executed if an exception is caught by the "Catch" + block. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + The "Catch" keyword. + + + An identifier declaring a new variable or naming an existing variable to store + the exception caught by the "Catch" statement. + + + A simple "As" clause specifying the type of exception to catch. + + + A "When" clause to filter exceptions before catching. + + + + + Represents the "When ..." clause of a "Catch" statement. + + + The "When" keyword. + + + The filter expression to be evaluated. + + + + + Represents a "Finally ..." block of a "Try" block. + + + The "Finally" statement that begins the "Finally" block. + + + A list of statements to be executed. + + + + + Represents the "Finally" statement that begins a "Finally" block. + + + The "Finally" keyword. + + + + + Represents the "Error" statement. + + + The "Error" keyword. + + + The expression that represents the error number. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + A representing the specific kind of + OnErrorGoToStatementSyntax. One of OnErrorGoToZeroStatement, + OnErrorGoToMinusOneStatement, OnErrorGoToLabelStatement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Resume Next statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "Resume" keyword. + + + The "Next" + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + The Select Case statement that begins the block. + + + A list of the contained Case blocks. + + + The End Select statement that ends the block. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + The "Select" keyword. + + + The "Case" keyword, if present. + + + The value that branching is based on. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + The "Else" part in a Case Else statement. + + + The "Else" keyword. + + + + + Represents a single value in a Case. + + + The expression that denotes the value being tested against. + + + + + Represents a range "expression To expression" in a Case. + + + The lower bound of the range. + + + The "To" keyword + + + The upper bound of the range. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + A representing the specific kind of + RelationalCaseClauseSyntax. One of CaseEqualsClause, CaseNotEqualsClause, + CaseLessThanClause, CaseLessThanOrEqualClause, CaseGreaterThanOrEqualClause, + CaseGreaterThanClause. + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + The "SyncLock" keyword. + + + The expression being synchronized on. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + A representing the specific kind of DoLoopBlockSyntax. + One of SimpleDoLoopBlock, DoWhileLoopBlock, DoUntilLoopBlock, DoLoopWhileBlock, + DoLoopUntilBlock. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + A representing the specific kind of DoStatementSyntax. + One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + A representing the specific kind of LoopStatementSyntax. + One of SimpleLoopStatement, LoopWhileStatement, LoopUntilStatement. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + A representing the specific kind of + WhileOrUntilClauseSyntax. One of WhileClause, UntilClause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + The While statement that begins a While...End While block. This statement + always occurs as the Begin of a WhileBlock. + + + The "While" keyword. + + + The boolean expression that controls the While loop. + + + + + Represents a For block, including the introducing statement, the body and the + "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For statement that begins the block. + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + + + Represents a For Each block, including the introducing statement, the body and + the "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For Each statement that begins the block. + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + The "For" keyword. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The "=" token. + + + The expression denoting the initial value of the iteration. + + + The "To" keyword. + + + The expression denoting the final value of the iteration. + + + The optional Step clause. + + + + + The Step clause in a For Statement. + + + The "Step" keyword. + + + The expression denoting the step increment. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + The "For" keyword. + + + The "Each" keyword. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The "In" keyword. + + + The expression denoting the collection to iterate over. + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + The "Next" keyword. + + + The variables in the Next statement, if present + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + The "Using" keyword. + + + If the Using statement is of a form that does not declare a new variable, this + is the expression used in the using. Otherwise, Nothing is returned. + + + If the Using statement is of a form that declares one or more new variables, + this is the list of variable declarations. Otherwise, Nothing is returned. + + + + + Represents a Throw statement. + + + The "Throw" keyword + + + The expression denoting the value being thrown. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + A representing the specific kind of + AssignmentStatementSyntax. One of SimpleAssignmentStatement, + MidAssignmentStatement, AddAssignmentStatement, SubtractAssignmentStatement, + MultiplyAssignmentStatement, DivideAssignmentStatement, + IntegerDivideAssignmentStatement, ExponentiateAssignmentStatement, + LeftShiftAssignmentStatement, RightShiftAssignmentStatement, + ConcatenateAssignmentStatement. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a left-hand side of a MidAssignment statement. + + + The "Mid" possibly followed by a type character. + + + The argument list. + + + + + Represent a call statement (also known as a invocation statement). + + + The "Call" keyword. + + + The expression denoting the call. This could be an Invocation or a MemberAccess + (in the case where no parentheses were supplied.) + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + A representing the specific kind of + AddRemoveHandlerStatementSyntax. One of AddHandlerStatement, + RemoveHandlerStatement. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represent a RaiseEvent statement. + + + The "RaiseEvent" keyword + + + The name of the event being raised. + + + The argument list, if present. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + The "With" keyword. + + + The expression that is the operand of the With statement. + + + + + Represents a ReDim statement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement clause. + + + The target of the ReDim statement. + + + The ArraySizeInitializationModifier. + + + + + Represents an "Erase" statement. + + + The "Erase" keyword. + + + A list of expressions denoting the arrays to erase. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + A representing the specific kind of + LiteralExpressionSyntax. One of CharacterLiteralExpression, + TrueLiteralExpression, FalseLiteralExpression, NumericLiteralExpression, + DateLiteralExpression, StringLiteralExpression, NothingLiteralExpression. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a parenthesized expression. + + + The "(" token + + + The expression inside the parentheses. + + + The ")" token + + + + + Represents a tuple literal expression. + + + The "(" token + + + The list of tuple arguments. + + + The ")" token + + + + + Represents a tuple type expression. + + + The "(" token + + + The list of tuple elements. + + + The ")" token + + + + + Represents a single declaration of a tuple element supplying only the type. + + + The type-name part of the tuple element syntax. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + The name of the element. + + + A simple "As" clause specifying the type of the tuple element. + + + + + Identifies the special instance "Me" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "MyBase" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "MyClass" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Represents a GetType expression. + + + The "GetType" keyword. + + + The "(" token. + + + The type to get the Type object for. This can be an open generic type. + + + The ")" token. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + A representing the specific kind of + TypeOfExpressionSyntax. One of TypeOfIsExpression, TypeOfIsNotExpression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a GetXmlNamespace expression. + + + The "GetXmlNamespace" keyword. + + + The "(" token. + + + The Xml namespace name being referenced. + + + The ")" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + A representing the specific kind of + MemberAccessExpressionSyntax. One of SimpleMemberAccessExpression, + DictionaryAccessExpression. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + A representing the specific kind of + XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, + XmlDescendantAccessExpression, XmlAttributeAccessExpression. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + The target of the call or index expression. + + + The argument list. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type of the object being initialized. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + An optional From or With clause to initialize the new object. + + + + + Represents a New expression that create an object of anonymous type. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The With clause to initialize the new object. + + + + + Represents an expression that creates a new array. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The element type of the array being created. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + A list of array modifiers such as "()" or "(,)". If no array modifiers were + present, an empty list is returned. + + + The initializer including the braces. + + + + + Represents an expression that creates a new array without naming the element + type. + + + The "{" token. + + + The list of initializers between the braces. + + + The "}" token. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + The keyword that was used in the cast operation. + + + The "(" token. + + + The expression being cast. + + + The ")" token. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + A representing the specific kind of + BinaryExpressionSyntax. One of AddExpression, SubtractExpression, + MultiplyExpression, DivideExpression, IntegerDivideExpression, + ExponentiateExpression, LeftShiftExpression, RightShiftExpression, + ConcatenateExpression, ModuloExpression, EqualsExpression, NotEqualsExpression, + LessThanExpression, LessThanOrEqualExpression, GreaterThanOrEqualExpression, + GreaterThanExpression, IsExpression, IsNotExpression, LikeExpression, + OrExpression, ExclusiveOrExpression, AndExpression, OrElseExpression, + AndAlsoExpression. + + + The left operand. + + + The right operand. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + A representing the specific kind of + UnaryExpressionSyntax. One of UnaryPlusExpression, UnaryMinusExpression, + NotExpression, AddressOfExpression. + + + The token that is the operator. + + + The expression being operated on. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The "If" keyword + + + The "(" token + + + The first expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The ")" token + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The "If" keyword + + + The "(" token + + + The first expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The ")" token + + + + + Represents a single line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a single line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a single line lambda expression. + + + A representing the specific kind of + SingleLineLambdaExpressionSyntax. One of SingleLineFunctionLambdaExpression, + SingleLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + A representing the specific kind of + MultiLineLambdaExpressionSyntax. One of MultiLineFunctionLambdaExpression, + MultiLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A representing the specific kind of LambdaHeaderSyntax. + One of SubLambdaHeader, FunctionLambdaHeader. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents a parenthesized argument list. + + + The "(" token. + + + The list of arguments. This may be empty. Omitted argument are represented by + an OmittedArgumentSyntax node. + + + The ")" token. + + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + An empty token because all non terminals must have a token. + + + + + Represents an argument that is just an optional argument name and an + expression. + + + The optional name and ":=" prefix of a named argument. + + + The expression that is the argument. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + The name used to identify the named argument. + + + The ":=" token. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + The lower bound of the range. This is typically the integer constant zero. + + + The "To" keyword. + + + The upper bound of the range. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + A list of all the query operators in this query expression. This list always + contains at least one operator. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + The name of the range variable being defined. + + + Describes the type of the variable being defined. + + + The "In" keyword. + + + The expression that serves as the source of items for the range variable. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the expression. + + + The expression used to initialize the expression variable. + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the aggregation + expression. + + + The name of the aggregation function. The "Group" aggregation function is + represented by the identifier "Group". + + + + + Represents the name and optional type of an expression range variable. + + + The name of the variable being defined. + + + Describes the type of the variable being defined. + + + The "=" token. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + The name of the aggregation function. + + + The "(" token if present. + + + The argument to the aggregation function. + + + The ")" token, if present. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + The "Group" keyword. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + The "From" keyword. + + + The list of collection variables declared by this From operator. + + + + + Represents a "Let" query operator. + + + The "Let" keyword. + + + The list of expression range variable being defined by the Let operator. + + + + + Represents an Aggregate query operator. + + + The "Aggregate" keyword. + + + The list of collection range variables declared by this Aggregate operator. + + + A list of additional query operators. It may be empty. + + + The "Into" keyword. + + + The list of new variables being defined by the aggregation. + + + + + Represents the "Distinct" query operator. + + + The "Distinct" keyword. + + + + + Represents a "Where" query operator. + + + The "Where" keyword. + + + The boolean expression used for filtering. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + A representing the specific kind of + PartitionWhileClauseSyntax. One of SkipWhileClause, TakeWhileClause. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + A representing the specific kind of + PartitionClauseSyntax. One of SkipClause, TakeClause. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents the "Group By" query operator. + + + The "Group" keyword. + + + The optional list of variables being grouped; the contents of the Group clause. + If none were specified, an empty list is returned. + + + The "By" keyword. + + + The key values being used for grouping. + + + The list of new variables that calculate aggregations. + + + + + Represents the "expression Equals expression" condition in a Join. + + + The left expression in the Join condition. + + + The "Equals" keyword. + + + The right expression in the Join condition. + + + + + Represents a Join query operator. + + + The "Join" keyword. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The "On" keyword. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Represents the "Group Join" query operator. + + + The "Group" keyword. + + + The "Join" keyword. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The "On" keyword. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + The "Into" keyword. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Order By" query operator. + + + The "Order" keyword + + + The "By" keyword. + + + The list of OrderExpression's to sort by. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + A representing the specific kind of OrderingSyntax. One + of AscendingOrdering, DescendingOrdering. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + Represents the "Select" query operator. + + + The "Select" keyword. + + + The list of expression range variables being defined by the Select query + operator. + + + + + Represents an XML Document literal expression. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + + + Represents an XML element with content in an XML literal expression. + + + + + Represents Xml text. + + + A list of all the text tokens in the Xml text. This list always contains at + least one token. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + Represents an empty XML element of the form <element /> + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + + + Represents an XML CDATA section in an XML literal expression. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + The type of the elements of the array. + + + Represents the list of "()" or "(,,)" modifiers on the array type. + + + + + A type name that represents a nullable type, such as "Integer?". + + + The kind of type that is this type is a nullable of. Cannot be an array type or + a nullable type. + + + The "?" token. + + + + + Represents an occurrence of a Visual Basic built-in type such as Integer or + String in source code. + + + The keyword that was used to describe the built-in type. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + The identifier in the name. + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + The identifier in the name. + + + The generic argument list. + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + The part of the name that appears to the left of the dot. This can itself be + any name. + + + The "." token that separates the names. + + + The part of the name that appears to the right of the dot. This must be a + simple identifier. + + + + + Represents a name in the global namespace. + + + The "Global" keyword. + + + + + Represents a parenthesized list of generic type arguments. + + + The "(" token. + + + The "Of" keyword. + + + A list of all the type arguments. + + + The ")" token. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + Represent a Yield statement. + + + The "Yield" keyword. + + + The expression whose value is being yielded. + + + + + Represents an Await expression. + + + The "Await" keyword. + + + The expression being awaited. + + + + + Represents an Xml NCName per Namespaces in XML 1.0 + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + A representing the specific kind of XmlTextTokenSyntax. + One of XmlTextLiteralToken, XmlEntityLiteralToken, + DocumentationCommentLineBreakToken. + + + The actual text of this token. + + + + + Represents literal character data in interpolated string expression. + + + The actual text of this token. + + + + + Represents a Decimal literal token. + + + The actual text of this token. + + + + + Represents a Date literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + The list of tokens that were skipped by the parser. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in + source. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + The expression on the left-hand-side of the "?". + + + "?" token. + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + Represents a NameOf expression. + + + The "NameOf" keyword. + + + The "(" token. + + + The argument. + + + The ")" token. + + + + + Represents an interpolated string expression. + + + The opening '$"', '$“', or '$”' token. + + + The contents of the interpolated string. + + + The closing '"', '”', or '“' token. + + + + + Represents literal text content in an interpolated string. + + + The text token. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + The opening curly brace '{' token. + + + The expression whose formatted value should be embedded in the resultant + string. + + + Optional. The alignment clause ',alignment' of the embedded expression. + + + Optional. The format string clause ':formatString' of the embedded expression. + + + The closing curly brace '}' token of the embedded expression. + + + + + Represents an alignment clause ',alignment' of an interpolated string embedded + expression. + + + The comma ',' token. + + + An expression representing the alignment of the interpolated expression. + + + + + Represents a format string clause ':formatString' of an interpolated string + embedded expression. + + + The ':' token. + + + The format string. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + A representing the specific kind of SyntaxTrivia. One of + WhitespaceTrivia, EndOfLineTrivia, ColonTrivia, CommentTrivia, + ConflictMarkerTrivia, LineContinuationTrivia, + DocumentationCommentExteriorTrivia, DisabledTextTrivia. + + + The actual text of this token. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + The "#" token in a preprocessor directive. + + + The "Const" keyword. + + + The name of the pre-processing constant being defined. + + + The "=" token. + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #Else pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #End If pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of a #Region directive appearing in source. + + + The "#" token in a preprocessor directive. + + + The "Region" keyword. + + + The label of the code region being defined. + + + + + Represents an #End Region directive appearing in source. + + + The "#" token in a preprocessor directive. + + + The "End" keyword. + + + The "Region" keyword. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #r directive appearing in scripts. + + + The "#" token in a preprocessor directive. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + The "#" token in a preprocessor directive. + + + + + Returns the statement if there is exactly one in the body, + otherwise returns Nothing. + + + + + Return an empty body if the body is a single, zero-width EmptyStatement, + otherwise returns the entire body. + + + + + Parse GetType, + GetTypeExpression -> GetType OpenParenthesis GetTypeTypeName CloseParenthesis + + + + + + + Parse NameOf, + NameOfExpression -> NameOf OpenParenthesis Name CloseParenthesis + + + + + + + Parse TypeOf ... Is ... or TypeOf ... IsNot ... + TypeOfExpression -> "TypeOf" Expression "Is|IsNot" LineTerminator? TypeName + + + + + + + Transition from scanning XML to scanning VB. As a result, + any single line trivia is consumed and appended to the token + which is assumed to be the token at the transition point. + + + + After VB15.5 it is possible to use named arguments in non-trailing position, except in attribute lists (where it remains disallowed) + + + + ParseCast parses CType, DirectCast, TryCast. + CCCastExpression -> DirectCast ( CCExpression , TypeName ) + | TryCast ( CCExpression , TypeName ) + | CType ( CCExpression , TypeName ) + { | CastTarget ( CCExpression ) } + + Cast + Dev10 ParseCType does not parse exact grammar in the spec, since dev10 accepts Expression whereas the grammar uses CCExpression. + This function only does not parse CastTarget ( ... ), it is parsed in ParseTerm + + + + + gets the last token that has nonzero FullWidth. + NOTE: this helper will not descend into structured trivia. + + + + + gets the last token regardless if it has zero FullWidth or not + NOTE: this helper will not descend into structured trivia. + + + + + Adjust the trivia on a node so that missing tokens are always before newline and colon trivia. + Because new lines and colons are eagerly attached as trivia, missing tokens can end up incorrectly after the new line. + This method moves the trailing non-whitespace trivia from the last token to the last zero with token. + + + + + Slow part of AdjustTriviaForMissingTokensCore where we actually do the work when we need to. + + + + + Parses a CollectionInitializer + CollectionInitializer -> "{" CollectionInitializerList "}" + CollectionInitializerList -> CollectionElement {"," CollectionElement}* + CollectionElement -> Expression | CollectionInitializer + + CollectionInitializerSyntax + In the grammar ArrayLiteralExpression is a rename of CollectionInitializer + + + + Parses + "With "{" FieldInitializerList "}" + FieldInitializerList -> FieldInitializer {"," FieldInitializer}* + FieldInitializer -> {Key? "." IdentifierOrKeyword "="}? Expression + + e.g. + Dim x as new Customer With {.Id = 1, .Name = "A"} + + ObjectMemberInitializer + + + + Parses an ObjectCollectionInitializer + ObjectCollectionInitializer -> "from" CollectionInitializer + + + ObjectCollectionInitializer + In Dev10 this was called ParseInitializerList. It also took several boolean parameters. + These were always set as + AllowExpressionInitializers = true + AllowAssignmentInitializers = false + AnonymousTypeInitializer = false + RequireAtleastOneInitializer = false + + While the grammar uses the nonterminal CollectionInitializer is modeled as an + AnonymousArrayCreationExpression which has the identical syntax "{" Expression {"," Expression }* "}" + + + + + + Parses a FieldInitializer + + FieldInitializer -> ("key"? "." IdentifierOrKeyword "=")? Expression + + If true then allow the keyword "key" to prefix the field initializer + + + + + Parse and return a TypeName. Assumes the CurrentToken is on the name. + + Controls generic argument parsing + Controls generic argument parsing + TypeName + + + + Parameter -> Attributes? ParameterModifiers* ParameterIdentifier ("as" TypeName)? ("=" ConstantExpression)? + + + + + >This replaces both ParseParameter and ParseOptionalParameter in Dev10 + + + + Parse a CustomEventMemberDeclaration + + + + + This code used to be in ParseEventDefinition. + + + + Peeks in a stream of VB tokens. + Note that the first token will be picked according to _allowLeadingMultilineTrivia + The rest will be picked as regular VB as scanner does not always know what to do with + line terminators and we assume that multiple token lookahead makes sense inside a single statement. + + + + + Consumes current token and gets the next one with desired state. + + + + + Consumes current node and gets next one. + + + + + Check to see if the given is available with the + of the parser. If it is not available a diagnostic will be added to the returned value. + + + + + Returns false and reports an error if the feature is un-available + + + + + Create a bad statement. Report an error only if the statement doesn't have one already + + + + + If set to true a new missing identifier will be created and added to the incomplete member. + If set to true the error will be attached to the first skipped token of the incomplete member. + + + + + + Resyncs to next statement terminator. Used in Preprocessor + + + + + If the current token is a newline statement terminator, then consume the token. + + True if the statement terminator was consumed + + + + Parses StringLiteral + + LiteralNode + If the current Token is not StringLiteral then returns LiteralNode with missing token. + + + + Check that the current token is the expected kind, the current node is consumed and optionally a new line + after the token. + + The expected node kind. + A token of the expected kind. This node may be an empty token with an error attached to it + Since nodes are immutable, the only way to create nodes with errors attached is to create a node without an error, + then add an error with this method to create another node. + + + + Checks if the resulting Cref or Name attribute value has valid trivia + Note, this may be applicable not only to regular trivia, but also to syntax + nodes added to trivia when the parser was recovering from errors + + + + + Checks if the given is a colon trivia whose string representation is the COLON (U+003A) character from ASCII range + (specifically excluding cases when it is the FULLWIDTH COLON (U+FF1A) character). + See also: http://fileformat.info/info/unicode/char/FF1A + + A VB syntax node to check. + + + + Base class of a compile time constant. + + + + + Represents a compile time constant. + + + + + Candidate nodes that may be reused. + + + + + The text changes combined into a single region. + + + + + The range from which we cannot reuse nodes. + + + + + Current node. Not necessarily reusable or even a NonTerminal. + Can be null if we are out of nodes. + + + + + preprocessor state before _currentNode + + + + + preprocessor state getter after _currentNode + + + + + Expand the span in the tree to encompass the + nearest statements that the span overlaps. + + + + + Not guaranteed to return the span of a StatementSyntax. + + + + + Expand the span in the tree by the maximum number + of tokens required for look ahead and the maximum + number of characters for look behind. + + + + + Moving to the next node on the stack. + returns false if we are out of nodes. + + + + + Crumbles current node onto the stack and pops one node into current. + Returns false if current node cannot be crumbled. + + + + + Certain syntax node kinds should not be crumbled since + re-using individual child nodes may complicate parsing. + + + + + Advances to given position if needed (note: no way back) + Gets a nonterminal that can be used for incremental. + May return Nothing if such node is not available. + Typically it is _currentNode. + + + + + Returns current candidate for reuse if there is one. + + + + + Checks if node is reusable. + The reasons for it not be usable are typically that it intersects affected range. + + + + + Creates red tokens for a stream of text + + + + + Entry point to directive processing for Scanner. + + + + + Gets an initial preprocessor state and applies all directives from a given node. + Entry point for blender + + + + + The possible states that the mini scanning can be in. + + + + + DO NOT USE DIRECTLY. + USE GetScratch() + + + + + Gets a chunk of text as a DisabledCode node. + + The range of text. + The DisabledCode node. + + + + Accept a CR/LF pair or either in isolation as a newline. + Make it a statement separator + + + + + Accept a CR/LF pair or either in isolation as a newline. + Make it a whitespace + + + + + Consumes all trivia until a nontrivia char is found + + + + + Scans a single piece of trivia + + + + + Scan trivia on one LOGICAL line + Will check for whitespace, comment, EoL, implicit line break + EoL may be consumed as whitespace only as a part of line continuation ( _ ) + + + + + Return True if the builder is a (possibly empty) list of + WhitespaceTrivia followed by an EndOfLineTrivia. + + + + + Return True if the character is a colon, and not part of ":=". + + + + + Not intended for use in Expression Compiler scenarios. + + + + + Try to convert an Identifier to a Keyword. Called by the parser when it wants to force + an identifier to be a keyword. + + + + + page represents a cached array of chars. + + + + + where page maps in the stream. Used to validate pages + + + + + page's buffer + + + + + current page we are reading. + + + + + gets a page for the position. + will initialize it if we have cache miss + + + + + 0 - not a surrogate, 2 - is valid surrogate + 1 is an error + + + + + Crumbles currently available node (if available) into its components. + The leftmost child becomes the current node. + If operation is not possible (node has no children, there is no node), then returns false. + + + + + Gets current reusable syntax node. + If node is returned its start will be aligned with the start of current token. + NOTE: Line offset may not match start of current token because of lookahead. + + + + + Indicates that previously returned node has been consumed + and scanner needs to advance by the size of the node. + + NOTE: the advancement is done relative to the start of the current token. + Line offset may not match start of current token because of lookahead. + + This operation will discard lookahead tokens and reset preprocessor state + to the state of current token. + + + + + Indicates that previously returned node has been consumed + and scanner needs to advance by the size of the node. + + NOTE: the advancement is done relative to the _lineBufferOffset. + Line offset will likely not match start of current token because this operation + is done while constructing the content of current token. + + NOTE: This operation assumes that there is no tokens read ahead. + + NOTE: This operation does not change preprocessor state. + The assumption is that it is responsibility of the node consumer to update preprocessor + state if needed when using nodes that change preprocessor state. + + + + + note that state is applied only to the token #1 + + + + See description in TryScanXmlDocComment(...) + + + + This method is only to be used for parsing Cref and Name attributes as stand-alone entities + + + + + Returns False if trivia ends line. + + + + + Scan VB tokens + + + + + Scan VB tokens but consume multiline trivia before token. Done at the start of a new statement except after line if. + + + + + Scan tokens in Xml misc state, these are tokens between document declaration and the root element + + + + + Scan tokens inside of <!DOCTYPE ... > + + + + + Scan tokens inside of < ... > + + + + + Scan tokens inside of </ ...> + + + + + Scan a single quoted string + + + + + Scan a single quoted string RIGHT_SINGLE_QUOTATION_MARK + + + + + Scan a quoted string + + + + + Scan a quoted string RIGHT_DOUBLE_QUOTATION_MARK + + + + + Scan a string that is missing quotes (error recovery) + + + + + Scan text between markup + + + + + Scan text inside of <![CDATA[ ... ]]> + + + + + Scan first text inside f <? ... ?>, the first text can have leading trivia + + + + + Scan remaining text inside of <? ... ?> + + + + + Scan text inside of <!-- ... --> + + + + + Scan punctuation in an interpolated string. + + + + + Scan interpolated string text content. + + + + + Scan interpolated string format string text content (no newlines). + + + + + Contextual Nodekind + + + + + If true, the identifier was enclosed in brackets, such as "[End]". + + + + + The text of the identifier, not including the brackets or type character. + + + + + The type character suffix, if present. Returns TypeCharacter.None if no type + character was present. The only allowed values are None, Integer, Long, + Decimal, Single, Double, and String. + + + + + Represents an identifier token. This might include brackets around the name, + and a type character. + + + + + Contextual Nodekind + + + + + If true, the identifier was enclosed in brackets, such as "[End]". + + + + + The text of the identifier, not including the brackets or type character. + + + + + The type character suffix, if present. Returns TypeCharacter.None if no type + character was present. The only allowed values are None, Integer, Long, + Decimal, Single, Double, and String. + + + + + Contextual Nodekind + + + + + If true, the identifier was enclosed in brackets, such as "[End]". + + + + + The text of the identifier, not including the brackets or type character. + + + + + The type character suffix, if present. Returns TypeCharacter.None if no type + character was present. The only allowed values are None, Integer, Long, + Decimal, Single, Double, and String. + + + + + The value of the token. + + + + + Represents an integer literal token. + + + + + Whether the token was specified in base 10, 16, 8, or 2. + + + + + The type suffix or type character that was on the literal, if any. If no suffix + was present, TypeCharacter.None is returned. + + + + + Represents a floating literal token. + + + + + The value of the token. + + + + + Represents a floating literal token. + + + + + The type suffix or type character that was on the literal, if any. If no suffix + was present, TypeCharacter.None is returned. + + + + + Return the length of the common ending between the two + sets of trivia. The valid trivia (following skipped tokens) + of one must be contained in the valid trivia of the other. + + + + + Return the index within the trivia of what would be considered trailing + single-line trivia by the Scanner. This behavior must match ScanSingleLineTrivia. + In short, search walks backwards and stops at the second terminator + (colon or EOL) from the end, ignoring EOLs preceded by line continuations. + + + + + Add all the tokens in this node and children to the build token list builder. While doing this, add any + diagnostics not on tokens to the given diagnostic info list. + + + + + Represents one of the type characters or literal suffixes of VB. Used to + describe a) the type character suffixes that can be placed on identifiers, and + b) the suffixes that can be placed on integer literals. + + + + + The "%" type character." + + + + + The "&" type character." + + + + + The "@" type character." + + + + + The "!" type character." + + + + + The "#" type character." + + + + + The "$" type character." + + + + + The "S" literal suffix denoting "Short" + + + + + The "US" literal suffix denoting "UShort" + + + + + The "I" literal suffix denoting "Integer" + + + + + The "UI" literal suffix denoting "UInteger" + + + + + The "L" literal suffix denoting "Long" + + + + + The "UL" literal suffix denoting "ULong" + + + + + The "F" literal suffix denoting "Single" + + + + + The "R" literal suffix denoting "Double" + + + + + The "D" literal suffix denoting "Decimal" + + + + + The four possible number bases that a literal can be written in. + + + + + The base class for all nodes that represent statements. This includes both + declaration statements, such as class declarations as well as executable + statements. + + + + + The base class for all nodes that represent executable statements. + + + + + The base class for all nodes that represent statements that declare options, + imports, members, etc. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + This node is associated with the following syntax kinds: + + + + + + + + An empty token because all non terminals must have a token. + + + + + Returns a copy of this with the Empty property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Empty property. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The "End" keyword + + + + + Returns a copy of this with the EndKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Returns a copy of this with the BlockKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the EndKeyword property. + + + The value for the BlockKeyword property. + + + + + Represents an entire source file of VB code. + + + This node is associated with the following syntax kinds: + + + + + + + + Represents the list of Option statements at the beginning of a source file. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Options property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents the list of Imports statements at the beginning of a source file. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Imports] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents the list of AttributeStatements at the beginning of a source file + that contain the Assembly and Module attributes. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Attributes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents the members of the default namespace for this source file: all the + top-level type and namespace declarations in the file. May also contain + Statements that are not valid + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents the end of the source file. This token may have trivia (whitespace, + comments, ...) attached to it. + + + + + Returns a copy of this with the EndOfFileToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Options property. + + + The value for the Imports property. + + + The value for the Attributes property. + + + The value for the Members property. + + + The value for the EndOfFileToken property. + + + + + Returns #r directives specified in the compilation. + + + + + Represents an Option statement, such as "Option Strict On". + + + This node is associated with the following syntax kinds: + + + + + + + + The "Option" keyword. + + + + + Returns a copy of this with the OptionKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + + + Returns a copy of this with the NameKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The keyword that identifiers the value being set for the option: On, Off, Text + or Binary. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ValueKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OptionKeyword property. + + + The value for the NameKeyword property. + + + The value for the ValueKeyword property. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Imports" keyword. + + + + + Returns a copy of this with the ImportsKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of one or more import clauses. Each clause is either an alias, namespace + or XML namespace import. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the ImportsClauses property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ImportsKeyword property. + + + The value for the ImportsClauses property. + + + + + The base class for the possible clauses of an Imports statement. + + + + + Represents the clause of an Imports statement that imports all members of a + type or namespace or aliases a type or namespace. + + + This node is associated with the following syntax kinds: + + + + + + + + An optional alias for the namespace or type being imported. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the [Alias] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The namespace or type being imported. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Alias property. + + + The value for the Name property. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + This node is associated with the following syntax kinds: + + + + + + + + The identifier being introduced. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "=" token. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + The value for the EqualsToken property. + + + + + Defines a XML namespace for XML expressions. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Identifies the XML namespace alias and URI. + + + + + Returns a copy of this with the XmlNamespace property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the GreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanToken property. + + + The value for the XmlNamespace property. + + + The value for the GreaterThanToken property. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The statement that begins the NamespaceBlock. + + + + + Returns a copy of this with the NamespaceStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The declarations contained in the namespace statement. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End Namespace statement that ends the block. + + + + + Returns a copy of this with the EndNamespaceStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NamespaceStatement property. + + + The value for the Members property. + + + The value for the EndNamespaceStatement property. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Namespace" keyword. + + + + + Returns a copy of this with the NamespaceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A (possibly dotted) name denoting the namespace being declared. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NamespaceKeyword property. + + + The value for the Name property. + + + + + Represents a declaration of a Class, Interface, Structure, Module, its contents + and the End statement that ends it. + + + + + A list of the Inherits declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Inherits] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the Implements declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Implements] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The declarations contained in the type or module. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The statement that begins the block declaration. + + + + + The statement that ends the block declaration. + + + + + Returns a copy of this with the property changed to the + specified value. Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the property changed to the + specified value. Returns this instance if the specified value is the same as the current value. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Module" statement that begins the block. + + + + + Returns a copy of this with the ModuleStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the Inherits declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Inherits] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the Implements declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Implements] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The declarations contained in the type or module. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Module" statement that ends the block. + + + + + Returns a copy of this with the EndModuleStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ModuleStatement property. + + + The value for the Inherits property. + + + The value for the Implements property. + + + The value for the Members property. + + + The value for the EndModuleStatement property. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Structure" statement that begins the block. + + + + + Returns a copy of this with the StructureStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the Inherits declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Inherits] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the Implements declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Implements] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The declarations contained in the type or module. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Structure" statement that ends the block. + + + + + Returns a copy of this with the EndStructureStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the StructureStatement property. + + + The value for the Inherits property. + + + The value for the Implements property. + + + The value for the Members property. + + + The value for the EndStructureStatement property. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Interface" statement that begins the block. + + + + + Returns a copy of this with the InterfaceStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the Inherits declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Inherits] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the Implements declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Implements] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The declarations contained in the type or module. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Interface" statement that ends the block. + + + + + Returns a copy of this with the EndInterfaceStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the InterfaceStatement property. + + + The value for the Inherits property. + + + The value for the Implements property. + + + The value for the Members property. + + + The value for the EndInterfaceStatement property. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Class" statement that begins the block. + + + + + Returns a copy of this with the ClassStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the Inherits declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Inherits] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the Implements declarations for the type. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the [Implements] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The declarations contained in the type or module. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Class" statement that ends the block. + + + + + Returns a copy of this with the EndClassStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ClassStatement property. + + + The value for the Inherits property. + + + The value for the Implements property. + + + The value for the Members property. + + + The value for the EndClassStatement property. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + This node is associated with the following syntax kinds: + + + + + + + + The statement that begins the type or module. + + + + + Returns a copy of this with the EnumStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The declarations contained in the enumeration. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Members property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End XXX statement that ends the block. + + + + + Returns a copy of this with the EndEnumStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the EnumStatement property. + + + The value for the Members property. + + + The value for the EndEnumStatement property. + + + + + Represents an Inherits or Implements statement in a Class, Structure or + Interface. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Inherits" keyword. + + + + + Returns a copy of this with the InheritsKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the types being inherited. + + + + + Returns a copy of this with the Types property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the InheritsKeyword property. + + + The value for the Types property. + + + + + Represents an Implements statement in a Class or Structure. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Implements" keyword. + + + + + Returns a copy of this with the ImplementsKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the types being implemented. + + + + + Returns a copy of this with the Types property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ImplementsKeyword property. + + + The value for the Types property. + + + + + Abstract class for the beginning statement of a Module, Class, Interface or + Structure declaration. This node always appears as the Begin of a TypeBlock + with Kind=ModuleDeclarationBlock, ClassDeclarationBlock, + InterfaceDeclarationBlock or StructureDeclarationBlock. + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the type being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns the keyword indicating the kind of declaration being made: "Class", "Structure", "Module", "Interface", etc. + + + + + Returns a copy of this with the property changed to the + specified value. Returns this instance if the specified value is the same as the current value. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Module" keyword. + + + + + Returns a copy of this with the ModuleKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the type being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the ModuleKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterList property. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Structure" keyword. + + + + + Returns a copy of this with the StructureKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the type being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the StructureKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterList property. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Interface" keyword. + + + + + Returns a copy of this with the InterfaceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the type being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the InterfaceKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterList property. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Class" keyword. + + + + + Returns a copy of this with the ClassKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the type being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the ClassKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterList property. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Enum" keyword. + + + + + Returns a copy of this with the EnumKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the enum being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Optional "As XXX" clause describing the underlying type of the enumeration. If + no As clause was specified, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the UnderlyingType property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the EnumKeyword property. + + + The value for the Identifier property. + + + The value for the UnderlyingType property. + + + + + Represents the type parameter list in a declaration. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "Of" keyword. + + + + + Returns a copy of this with the OfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + + + Returns a copy of this with the Parameters property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the OfKeyword property. + + + The value for the Parameters property. + + + The value for the CloseParenToken property. + + + + + Represents a type parameter on a generic type declaration. + + + This node is associated with the following syntax kinds: + + + + + + + + Represents the "In" or "Out" variance keyword on a type parameter, if present. + If no variance modifier was present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the VarianceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the type parameter + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterConstraintClause property changed + to the specified value. Returns this instance if the specified value is the + same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the VarianceKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterConstraintClause property. + + + + + An abstract node class that is the parent of classes that describe type + parameter constraint clauses. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + This node is associated with the following syntax kinds: + + + + + + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + + + Returns a copy of this with the AsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of the supplied constraints. If no constraints were supplied, Nothing is + returned. + + + + + Returns a copy of this with the Constraint property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AsKeyword property. + + + The value for the Constraint property. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + This node is associated with the following syntax kinds: + + + + + + + + The "As" keyword. + + + + + Returns a copy of this with the AsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "{" token. + + + + + Returns a copy of this with the OpenBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + + + Returns a copy of this with the Constraints property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "}" token. + + + + + Returns a copy of this with the CloseBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AsKeyword property. + + + The value for the OpenBraceToken property. + + + The value for the Constraints property. + + + The value for the CloseBraceToken property. + + + + + An abstract node class that is the parent of classes that describe type + parameter constraints. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + Returns a copy of this with the ConstraintKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the ConstraintKeyword property. + + + + + Represents a type parameter constraint that is a type. + + + This node is associated with the following syntax kinds: + + + + + + + + The type describing the constraint. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Type property. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An optional value for the enum member. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Identifier property. + + + The value for the Initializer property. + + + + + Represents a block member declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. Examples + include methods, constructors, operators, property accessors and custom event + accessors. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The statement that begins the block declaration. + + + + + The statement that ends the block declaration. + + + + + Returns a copy of this with the property changed to the + specified value. Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the property changed to the + specified value. Returns this instance if the specified value is the same as the current value. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "Sub" or "Function" statement that begins the block. + + + + + Returns a copy of this with the SubOrFunctionStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Returns a copy of this with the EndSubOrFunctionStatement property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the SubOrFunctionStatement property. + + + The value for the Statements property. + + + The value for the EndSubOrFunctionStatement property. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Sub New" statement that begins the block. + + + + + Returns a copy of this with the SubNewStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Sub" statement that ends the block declaration. + + + + + Returns a copy of this with the EndSubStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the SubNewStatement property. + + + The value for the Statements property. + + + The value for the EndSubStatement property. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Operator" statement that begins the block. + + + + + Returns a copy of this with the OperatorStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Operator" statement that ends the block declaration. + + + + + Returns a copy of this with the EndOperatorStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OperatorStatement property. + + + The value for the Statements property. + + + The value for the EndOperatorStatement property. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + Returns a copy of this with the AccessorStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Returns a copy of this with the EndAccessorStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AccessorStatement property. + + + The value for the Statements property. + + + The value for the EndAccessorStatement property. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The property declaration that begins the block. + + + + + Returns a copy of this with the PropertyStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The accessor blocks contained in the property, between the Property and the End + Property statements. + + + + + Returns a copy of this with the Accessors property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End Property statement that ends the block. + + + + + Returns a copy of this with the EndPropertyStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the PropertyStatement property. + + + The value for the Accessors property. + + + The value for the EndPropertyStatement property. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The event declaration that begins the block. + + + + + Returns a copy of this with the EventStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The accessor blocks contained in the custom event declaration, between the + Event statement and the End Event statement. + + + + + Returns a copy of this with the Accessors property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End Event statement that ends the block. + + + + + Returns a copy of this with the EndEventStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the EventStatement property. + + + The value for the Accessors property. + + + The value for the EndEventStatement property. + + + + + An abstract node class that is the parent for declarations that are + "method-like"; i.e., that have a parameter list and return type. This includes + methods, constructors, properties, events, operators, declares, delegates, + property accessors and custom event accessors. + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns the keyword indicating the kind of declaration being made: "Sub", "Function", "Event", "Property", etc. Does not return either the "Declare" or "Delegate" keywords. + + + + + Returns a copy of this with the property changed to the + specified value. Returns this instance if the specified value is the same as the current value. + + + + + Represents the parameter list in a method declaration. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token that introduces the parameter list. If no parameter list was + present, Nothing is returned. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of parameters. If no parameter list was present, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Parameters property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token that concludes the parameter list. If no parameter list was + present, Nothing is returned. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the Parameters property. + + + The value for the CloseParenToken property. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + This node is associated with the following syntax kinds: + + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + + + Returns a copy of this with the SubOrFunctionKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the method being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a Handles clause indicated the events that this method handles. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the HandlesClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ImplementsClause property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the SubOrFunctionKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterList property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + The value for the HandlesClause property. + + + The value for the ImplementsClause property. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Sub" keyword. + + + + + Returns a copy of this with the SubKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "New" keyword in the constructor declaration. + + + + + Returns a copy of this with the NewKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the SubKeyword property. + + + The value for the NewKeyword property. + + + The value for the ParameterList property. + + + + + A Declare statement that declares an external DLL method. + + + This node is associated with the following syntax kinds: + + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Declare" keyword. + + + + + Returns a copy of this with the DeclareKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + If present, the keyword that defines the string translation semantics of the + external method. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the CharsetKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "Sub" or "Function" keyword. + + + + + Returns a copy of this with the SubOrFunctionKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the method being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Lib" keyword. + + + + + Returns a copy of this with the LibKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The string literal with the library name. + + + + + Returns a copy of this with the LibraryName property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AliasKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The string literal with the alias. If not present, returns Nothing. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AliasName property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the DeclareKeyword property. + + + The value for the CharsetKeyword property. + + + The value for the SubOrFunctionKeyword property. + + + The value for the Identifier property. + + + The value for the LibKeyword property. + + + The value for the LibraryName property. + + + The value for the AliasKeyword property. + + + The value for the AliasName property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + + + A statement that declares a delegate type. + + + This node is associated with the following syntax kinds: + + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Delegate" keyword. + + + + + Returns a copy of this with the DelegateKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "Sub" or "Function" keyword. + + + + + Returns a copy of this with the SubOrFunctionKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the delegate being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the TypeParameterList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the DelegateKeyword property. + + + The value for the SubOrFunctionKeyword property. + + + The value for the Identifier property. + + + The value for the TypeParameterList property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The optional Custom keyword for custom event declarations. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the CustomKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Event" keyword that introduces this event declaration. + + + + + Returns a copy of this with the EventKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the event being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, an Implements clause indicates the interface methods that this + method implements. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ImplementsClause property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the CustomKeyword property. + + + The value for the EventKeyword property. + + + The value for the Identifier property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + The value for the ImplementsClause property. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Operator" keyword that introduces this operator declaration. + + + + + Returns a copy of this with the OperatorKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The operator being defined. + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the OperatorKeyword property. + + + The value for the OperatorToken property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Property" keyword that introduces this property declaration. + + + + + Returns a copy of this with the PropertyKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the property being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, an "= initial-value" clause describing the initial value of the + property. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ImplementsClause property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the PropertyKeyword property. + + + The value for the Identifier property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + The value for the Initializer property. + + + The value for the ImplementsClause property. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + + + Returns a copy of this with the AccessorKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the AccessorKeyword property. + + + The value for the ParameterList property. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Implements" keyword. + + + + + Returns a copy of this with the ImplementsKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of interface members being implemented. + + + + + Returns a copy of this with the InterfaceMembers property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ImplementsKeyword property. + + + The value for the InterfaceMembers property. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Handles" keyword. + + + + + Returns a copy of this with the HandlesKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of event members being handled. + + + + + Returns a copy of this with the Events property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HandlesKeyword property. + + + The value for the Events property. + + + + + Represents container of an event in a Handles clause item. + + + + + Represents event container specified through special keywords "Me", "MyBase" or + "MyClass".. + + + This node is associated with the following syntax kinds: + + + + + + + + The container of the event. This can be one of the special keywords: "Me", + "MyBase" or "MyClass". + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + + + Represents event container that refers to a WithEvents member. + + + This node is associated with the following syntax kinds: + + + + + + + + The container of the event. It is a simple identifier that refers to a + WithEvents member of the containing type. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + + + Represents event container that refers to a WithEvents member's property. + + + This node is associated with the following syntax kinds: + + + + + + + + The container of the event. + + + + + Returns a copy of this with the WithEventsContainer property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "." token. + + + + + Returns a copy of this with the DotToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The provider of the event. It is a property of a WithEvents member of the + containing type. + + + + + Returns a copy of this with the [Property] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WithEventsContainer property. + + + The value for the DotToken property. + + + The value for the Property property. + + + + + Represents a single handled event in a "Handles ..." clause. + + + This node is associated with the following syntax kinds: + + + + + + + + The container of the event. This can either be a simple identifier (identifying + a members of the containing type) or one of the special keywords "Me", "MyBase" + or "MyClass". + + + + + Returns a copy of this with the EventContainer property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "." token. + + + + + Returns a copy of this with the DotToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The event being handled. This must be a simple identifier. + + + + + Returns a copy of this with the EventMember property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the EventContainer property. + + + The value for the DotToken property. + + + The value for the EventMember property. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The missing identifier token for this incomplete member. Should only be used to + have a location for error reporting. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the MissingIdentifier property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the MissingIdentifier property. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Returns a copy of this with the Declarators property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the Declarators property. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + This node is associated with the following syntax kinds: + + + + + + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + + + Returns a copy of this with the Names property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "As" clause that describes the return type, and possibly includes "New", + "With" or "From". If no As clause was present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, an "= initial-value" clause describing the initial value of the + variable or the value of the constant. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Names property. + + + The value for the AsClause property. + + + The value for the Initializer property. + + + + + Abstract node class that represents the different kinds of "As {type-name}" + clauses in a declaration: simple "As" clauses and "As New" clauses. The type + has optional attributes associated with it, although attributes are not + permitted in all possible places where this node occurs. + + + + + The "As" keyword. + + + + + Returns a copy of this with the AsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + This node is associated with the following syntax kinds: + + + + + + + + The "As" keyword. + + + + + Returns a copy of this with the AsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The type-name part of the As clause. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AsKeyword property. + + + The value for the AttributeLists property. + + + The value for the Type property. + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + This node is associated with the following syntax kinds: + + + + + + + + The "As" keyword. + + + + + Returns a copy of this with the AsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The New expression + + + + + Returns a copy of this with the NewExpression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AsKeyword property. + + + The value for the NewExpression property. + + + + + An abstract node class that represents a "With" or "From" clause used to + initialize a new object. + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + This node is associated with the following syntax kinds: + + + + + + + + The "With" keyword. + + + + + Returns a copy of this with the WithKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "{" token. + + + + + Returns a copy of this with the OpenBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The comma-separated list of field initializers. + + + + + Returns a copy of this with the Initializers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "}" token. + + + + + Returns a copy of this with the CloseBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WithKeyword property. + + + The value for the OpenBraceToken property. + + + The value for the Initializers property. + + + The value for the CloseBraceToken property. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + This node is associated with the following syntax kinds: + + + + + + + + The "From" keyword. + + + + + Returns a copy of this with the FromKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The initializer including the braces. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the FromKeyword property. + + + The value for the Initializer property. + + + + + Abstract class that represent a single field initializer used in a "With {...}" + field initializer list. + + + + + The optional "Key" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the KeyKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The optional "Key" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the KeyKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The value being assigned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the KeyKeyword property. + + + The value for the Expression property. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + This node is associated with the following syntax kinds: + + + + + + + + The optional "Key" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the KeyKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "." token. + + + + + Returns a copy of this with the DotToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the field being initialized. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "=" token. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The value being assigned to the field. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the KeyKeyword property. + + + The value for the DotToken property. + + + The value for the Name property. + + + The value for the EqualsToken property. + + + The value for the Expression property. + + + + + Represents an "= initializer" clause in a declaration for a variable, parameter + or automatic property. + + + This node is associated with the following syntax kinds: + + + + + + + + The "=" token. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression used as the initial value. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the EqualsToken property. + + + The value for the Value property. + + + + + Represent a parameter to a method, property, constructor, etc. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all attribute lists on this parameter. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the modifier tokens "ByVal", "ByRef", "Optional" or "ParamArray" that + modify this parameter. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the parameter, including any "?" or "()" modifiers. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, the "As type-name" clause describing the type of the parameter. If + no As clause is present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If present, an initializer with the default value of the parameter. If no + default value is present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the [Default] property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the Identifier property. + + + The value for the AsClause property. + + + The value for the Default property. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + This node is associated with the following syntax kinds: + + + + + + + + The identifier that names the item being declared. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "?" token that indicates a nullable type. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Nullable property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ArrayBounds property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of array modifiers for the type. If no array modifiers were present, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the ArrayRankSpecifiers property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + The value for the Nullable property. + + + The value for the ArrayBounds property. + + + The value for the ArrayRankSpecifiers property. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The comma tokens in the array type. There is one less comma than the rank. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the CommaTokens property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the CommaTokens property. + + + The value for the CloseParenToken property. + + + + + Returns the ranks of this array rank specifier. + + + + + Represents a group of attributes within "<" and ">" brackets. + + + This node is associated with the following syntax kinds: + + + + + + + + The "<" token. + + + + + Returns a copy of this with the LessThanToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A comma separated list of attribute declarations in this attribute list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Attributes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ">" token. + + + + + Returns a copy of this with the GreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanToken property. + + + The value for the Attributes property. + + + The value for the GreaterThanToken property. + + + + + Represents a single attribute declaration within an attribute list. + + + This node is associated with the following syntax kinds: + + + + + + + + Optional attribute target. Assembly|Module : + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Target property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The name of the attribute. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ArgumentList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Target property. + + + The value for the Name property. + + + The value for the ArgumentList property. + + + + + Represents a single attribute declaration within an attribute list. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Assembly" or "Module" attribute modifier, is present. If no attribute + modifier is present, Nothing is returned. + + + + + Returns a copy of this with the AttributeModifier property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The ":" token, if an attribute modifier is present. If no attribute modifier is + present, Nothing is returned. + + + + + Returns a copy of this with the ColonToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeModifier property. + + + The value for the ColonToken property. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + This node is associated with the following syntax kinds: + + + + + + + + The list of attribute lists. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AttributeLists property. + + + + + Represent an expression in a statement context. This may only be a invocation + or await expression in standard code but may be any expression in VB + Interactive code. + + + This node is associated with the following syntax kinds: + + + + + + + + The expression. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Expression property. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + This node is associated with the following syntax kinds: + + + + + + + + "?" token. + + + + + Returns a copy of this with the QuestionToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression whose value is being output. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the QuestionToken property. + + + The value for the Expression property. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + This node is associated with the following syntax kinds: + + + + + + + + The While statement that begins the block. + + + + + Returns a copy of this with the WhileStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the While...End While. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End While statement that ends the block. + + + + + Returns a copy of this with the EndWhileStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WhileStatement property. + + + The value for the Statements property. + + + The value for the EndWhileStatement property. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + This node is associated with the following syntax kinds: + + + + + + + + The UsingStatement that begins the Using...End Using block. + + + + + Returns a copy of this with the UsingStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the Using...End Using block. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End Using statement that ends the block. + + + + + Returns a copy of this with the EndUsingStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the UsingStatement property. + + + The value for the Statements property. + + + The value for the EndUsingStatement property. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The SyncLock statement that begins the block. + + + + + Returns a copy of this with the SyncLockStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the SyncLock...End SyncLock statement. This might + be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End SyncLock statement that ends the block. + + + + + Returns a copy of this with the EndSyncLockStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the SyncLockStatement property. + + + The value for the Statements property. + + + The value for the EndSyncLockStatement property. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The WithStatement that begins the With...End With block. + + + + + Returns a copy of this with the WithStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The statements contained in the With...End With block. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End With statement that ends the block. + + + + + Returns a copy of this with the EndWithStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WithStatement property. + + + The value for the Statements property. + + + The value for the EndWithStatement property. + + + + + Represents the declaration of one or more local variables or constants. + + + This node is associated with the following syntax kinds: + + + + + + + + The modifier token (Static, Dim or Const) that introduces this local variable + declaration. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Returns a copy of this with the Declarators property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Modifiers property. + + + The value for the Declarators property. + + + + + Represents a label statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + + + Returns a copy of this with the LabelToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ":" token of the label statement. + + + + + Returns a copy of this with the ColonToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LabelToken property. + + + The value for the ColonToken property. + + + + + Represents a "GoTo" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "GoTo" keyword. + + + + + Returns a copy of this with the GoToKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the label. If the label is a line number, wraps an IntegerLiteral + that is the line number, otherwise, wraps an Identifier. + + + + + Returns a copy of this with the Label property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GoToKeyword property. + + + The value for the Label property. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + Returns a copy of this with the LabelToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the LabelToken property. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "Stop" or "End" keyword. + + + + + Returns a copy of this with the StopOrEndKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the StopOrEndKeyword property. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + + + + + The "Exit" keyword. + + + + + Returns a copy of this with the ExitKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The keyword describing the block to exit. + + + + + Returns a copy of this with the BlockKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the ExitKeyword property. + + + The value for the BlockKeyword property. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The "Continue" keyword. + + + + + Returns a copy of this with the ContinueKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Returns a copy of this with the BlockKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the ContinueKeyword property. + + + The value for the BlockKeyword property. + + + + + Represents a "Return" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Return" keyword. + + + + + Returns a copy of this with the ReturnKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression being returned, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ReturnKeyword property. + + + The value for the Expression property. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "If" keyword. + + + + + Returns a copy of this with the IfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The condition expression to be evaluated. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Then" keyword. + + + + + Returns a copy of this with the ThenKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of statements to be executed if the condition expression evaluates as + true. Multiple statements must be separated by colons. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An "Else" clause to be executed if the condition expression evaluates as false. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ElseClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the IfKeyword property. + + + The value for the Condition property. + + + The value for the ThenKeyword property. + + + The value for the Statements property. + + + The value for the ElseClause property. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Else" keyword. + + + + + Returns a copy of this with the ElseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of statements to be executed. Multiple statements must be separated by + colons. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElseKeyword property. + + + The value for the Statements property. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "If" statement that begins the "If" block. + + + + + Returns a copy of this with the IfStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of statements to be executed if the condition expression evaluates as + true. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of "ElseIf" blocks to be evaluated, in order, if the condition + expression of the "If" statement evaluates as false. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the ElseIfBlocks property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An "Else" block to be executed if the condition expression of the "If" + statement and all "ElseIf" blocks evaluate as false. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ElseBlock property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Then "End If" statement. + + + + + Returns a copy of this with the EndIfStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the IfStatement property. + + + The value for the Statements property. + + + The value for the ElseIfBlocks property. + + + The value for the ElseBlock property. + + + The value for the EndIfStatement property. + + + + + Represents the "If ... Then" statement that begins a multi-line "If" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "If" keyword. + + + + + Returns a copy of this with the IfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The condition expression to be evaluated. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Then" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ThenKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the IfKeyword property. + + + The value for the Condition property. + + + The value for the ThenKeyword property. + + + + + Represents an "ElseIf ... Then ..." block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "ElseIf ... Then" statement the begins the "ElseIf" block. + + + + + Returns a copy of this with the ElseIfStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of statements to be executed if the condition expression of the "ElseIf" + statement evaluates as true. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElseIfStatement property. + + + The value for the Statements property. + + + + + Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "ElseIf" keyword. + + + + + Returns a copy of this with the ElseIfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The condition expression to be evaluated. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Then" keyword. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ThenKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElseIfKeyword property. + + + The value for the Condition property. + + + The value for the ThenKeyword property. + + + + + Represents an "Else ..." block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Else" statement that begins the "Else" block. + + + + + Returns a copy of this with the ElseStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of statements to be executed. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElseStatement property. + + + The value for the Statements property. + + + + + Represents the "Else" statement that begins an "Else" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Else" keyword. + + + + + Returns a copy of this with the ElseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElseKeyword property. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Try" statement that begins the "Try" block. + + + + + Returns a copy of this with the TryStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of statements to be executed. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of "Catch" blocks which may be executed if an exception is thrown while + executing the statements in the "Try" block. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the CatchBlocks property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A "Finally" block to be executed before execution leaves the "Try" block. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the FinallyBlock property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End Try" statement. + + + + + Returns a copy of this with the EndTryStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the TryStatement property. + + + The value for the Statements property. + + + The value for the CatchBlocks property. + + + The value for the FinallyBlock property. + + + The value for the EndTryStatement property. + + + + + Represents the "Try" statement that begins a "Try" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Try" keyword. + + + + + Returns a copy of this with the TryKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the TryKeyword property. + + + + + Represents a "Catch ..." block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Catch" statement that begins the "Catch" block. + + + + + Returns a copy of this with the CatchStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of statements to be executed if an exception is caught by the "Catch" + block. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the CatchStatement property. + + + The value for the Statements property. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Catch" keyword. + + + + + Returns a copy of this with the CatchKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An identifier declaring a new variable or naming an existing variable to store + the exception caught by the "Catch" statement. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the IdentifierName property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A simple "As" clause specifying the type of exception to catch. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A "When" clause to filter exceptions before catching. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the WhenClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the CatchKeyword property. + + + The value for the IdentifierName property. + + + The value for the AsClause property. + + + The value for the WhenClause property. + + + + + Represents the "When ..." clause of a "Catch" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "When" keyword. + + + + + Returns a copy of this with the WhenKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The filter expression to be evaluated. + + + + + Returns a copy of this with the Filter property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WhenKeyword property. + + + The value for the Filter property. + + + + + Represents a "Finally ..." block of a "Try" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Finally" statement that begins the "Finally" block. + + + + + Returns a copy of this with the FinallyStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of statements to be executed. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the FinallyStatement property. + + + The value for the Statements property. + + + + + Represents the "Finally" statement that begins a "Finally" block. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Finally" keyword. + + + + + Returns a copy of this with the FinallyKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the FinallyKeyword property. + + + + + Represents the "Error" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Error" keyword. + + + + + Returns a copy of this with the ErrorKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression that represents the error number. + + + + + Returns a copy of this with the ErrorNumber property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ErrorKeyword property. + + + The value for the ErrorNumber property. + + + + + Represents an OnError Goto statement. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The "On" keyword + + + + + Returns a copy of this with the OnKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Error" keyword. + + + + + Returns a copy of this with the ErrorKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "GoTo" keyword + + + + + Returns a copy of this with the GoToKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An optional minus for On Error Goto -1 + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Minus property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Returns a copy of this with the Label property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the OnKeyword property. + + + The value for the ErrorKeyword property. + + + The value for the GoToKeyword property. + + + The value for the Minus property. + + + The value for the Label property. + + + + + Represents an OnError Resume Next statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "On" keyword + + + + + Returns a copy of this with the OnKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Error" keyword. + + + + + Returns a copy of this with the ErrorKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Resume" keyword. + + + + + Returns a copy of this with the ResumeKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Next" + + + + + Returns a copy of this with the NextKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OnKeyword property. + + + The value for the ErrorKeyword property. + + + The value for the ResumeKeyword property. + + + The value for the NextKeyword property. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The "Resume" keyword. + + + + + Returns a copy of this with the ResumeKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Label property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the ResumeKeyword property. + + + The value for the Label property. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + This node is associated with the following syntax kinds: + + + + + + + + The Select Case statement that begins the block. + + + + + Returns a copy of this with the SelectStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of the contained Case blocks. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the CaseBlocks property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The End Select statement that ends the block. + + + + + Returns a copy of this with the EndSelectStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the SelectStatement property. + + + The value for the CaseBlocks property. + + + The value for the EndSelectStatement property. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Select" keyword. + + + + + Returns a copy of this with the SelectKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Case" keyword, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the CaseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The value that branching is based on. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the SelectKeyword property. + + + The value for the CaseKeyword property. + + + The value for the Expression property. + + + + + Represents a case statement and its subsequent block. + + + This node is associated with the following syntax kinds: + + + + + + + + + The statement that begins the case block. + + + + + Returns a copy of this with the CaseStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The statements contained in the case block. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the CaseStatement property. + + + The value for the Statements property. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "Case" keyword + + + + + Returns a copy of this with the CaseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Returns a copy of this with the Cases property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the CaseKeyword property. + + + The value for the Cases property. + + + + + Represents a single clause in a case statement. An abstract node that is the + parent of different kinds of Case clauses. + + + + + The "Else" part in a Case Else statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Else" keyword. + + + + + Returns a copy of this with the ElseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElseKeyword property. + + + + + Represents a single value in a Case. + + + This node is associated with the following syntax kinds: + + + + + + + + The expression that denotes the value being tested against. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Value property. + + + + + Represents a range "expression To expression" in a Case. + + + This node is associated with the following syntax kinds: + + + + + + + + The lower bound of the range. + + + + + Returns a copy of this with the LowerBound property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "To" keyword + + + + + Returns a copy of this with the ToKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The upper bound of the range. + + + + + Returns a copy of this with the UpperBound property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LowerBound property. + + + The value for the ToKeyword property. + + + The value for the UpperBound property. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + + The "Is" keyword, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the IsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression that denotes the value being tested against. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the IsKeyword property. + + + The value for the OperatorToken property. + + + The value for the Value property. + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + The "SyncLock" keyword. + + + + + Returns a copy of this with the SyncLockKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression being synchronized on. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the SyncLockKeyword property. + + + The value for the Expression property. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + The Do statement that begins the block. + + + + + Returns a copy of this with the DoStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The statements contained in the block statement. This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The Loop statement that ends the block. + + + + + Returns a copy of this with the LoopStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the DoStatement property. + + + The value for the Statements property. + + + The value for the LoopStatement property. + + + + + The Do statement that begins a Do-Loop block. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The "Do" keyword. + + + + + Returns a copy of this with the DoKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the WhileOrUntilClause property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the DoKeyword property. + + + The value for the WhileOrUntilClause property. + + + + + The Loop statement that begins a Do-Loop block. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The "Loop" keyword. + + + + + Returns a copy of this with the LoopKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the WhileOrUntilClause property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the LoopKeyword property. + + + The value for the WhileOrUntilClause property. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "While" or "Until" keyword. + + + + + Returns a copy of this with the WhileOrUntilKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The boolean expression after the While or Until. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the WhileOrUntilKeyword property. + + + The value for the Condition property. + + + + + The While statement that begins a While...End While block. This statement + always occurs as the Begin of a WhileBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + The "While" keyword. + + + + + Returns a copy of this with the WhileKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The boolean expression that controls the While loop. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WhileKeyword property. + + + The value for the Condition property. + + + + + Represents a For or For Each block. + + + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the NextStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The For or For Each statement that begins the block. + + + + + Represents a For block, including the introducing statement, the body and the + "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + This node is associated with the following syntax kinds: + + + + + + + + The For statement that begins the block. + + + + + Returns a copy of this with the ForStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the NextStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ForStatement property. + + + The value for the Statements property. + + + The value for the NextStatement property. + + + + + Represents a For Each block, including the introducing statement, the body and + the "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + This node is associated with the following syntax kinds: + + + + + + + + The For Each statement that begins the block. + + + + + Returns a copy of this with the ForEachStatement property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the NextStatement property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ForEachStatement property. + + + The value for the Statements property. + + + The value for the NextStatement property. + + + + + Represents a For or For Each statement. + + + + + The "For" keyword. + + + + + Returns a copy of this with the ForKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + + + Returns a copy of this with the ControlVariable property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + This node is associated with the following syntax kinds: + + + + + + + + The "For" keyword. + + + + + Returns a copy of this with the ForKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + + + Returns a copy of this with the ControlVariable property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "=" token. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression denoting the initial value of the iteration. + + + + + Returns a copy of this with the FromValue property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "To" keyword. + + + + + Returns a copy of this with the ToKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression denoting the final value of the iteration. + + + + + Returns a copy of this with the ToValue property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The optional Step clause. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the StepClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ForKeyword property. + + + The value for the ControlVariable property. + + + The value for the EqualsToken property. + + + The value for the FromValue property. + + + The value for the ToKeyword property. + + + The value for the ToValue property. + + + The value for the StepClause property. + + + + + The Step clause in a For Statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Step" keyword. + + + + + Returns a copy of this with the StepKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression denoting the step increment. + + + + + Returns a copy of this with the StepValue property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the StepKeyword property. + + + The value for the StepValue property. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + This node is associated with the following syntax kinds: + + + + + + + + The "For" keyword. + + + + + Returns a copy of this with the ForKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Each" keyword. + + + + + Returns a copy of this with the EachKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + + + Returns a copy of this with the ControlVariable property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "In" keyword. + + + + + Returns a copy of this with the InKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression denoting the collection to iterate over. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ForKeyword property. + + + The value for the EachKeyword property. + + + The value for the ControlVariable property. + + + The value for the InKeyword property. + + + The value for the Expression property. + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Next" keyword. + + + + + Returns a copy of this with the NextKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The variables in the Next statement, if present + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the ControlVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NextKeyword property. + + + The value for the ControlVariables property. + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Using" keyword. + + + + + Returns a copy of this with the UsingKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If the Using statement is of a form that does not declare a new variable, this + is the expression used in the using. Otherwise, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If the Using statement is of a form that declares one or more new variables, + this is the list of variable declarations. Otherwise, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Variables property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the UsingKeyword property. + + + The value for the Expression property. + + + The value for the Variables property. + + + + + Represents a Throw statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Throw" keyword + + + + + Returns a copy of this with the ThrowKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression denoting the value being thrown. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ThrowKeyword property. + + + The value for the Expression property. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + + + + + + + The target (left hand side) of the assignment. + + + + + Returns a copy of this with the Left property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The source (right hand side) of the assignment. + + + + + Returns a copy of this with the Right property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the Left property. + + + The value for the OperatorToken property. + + + The value for the Right property. + + + + + Represents a left-hand side of a MidAssignment statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Mid" possibly followed by a type character. + + + + + Returns a copy of this with the Mid property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The argument list. + + + + + Returns a copy of this with the ArgumentList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Mid property. + + + The value for the ArgumentList property. + + + + + Represent a call statement (also known as a invocation statement). + + + This node is associated with the following syntax kinds: + + + + + + + + The "Call" keyword. + + + + + Returns a copy of this with the CallKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression denoting the call. This could be an Invocation or a MemberAccess + (in the case where no parentheses were supplied.) + + + + + Returns a copy of this with the Invocation property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the CallKeyword property. + + + The value for the Invocation property. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "AddHandler" or "RemoveHandler" keyword. + + + + + Returns a copy of this with the AddHandlerOrRemoveHandlerKeyword property + changed to the specified value. Returns this instance if the specified value is + the same as the current value. + + + + + The event being accessed. + + + + + Returns a copy of this with the EventExpression property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "," token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The delegate being added or removed. + + + + + Returns a copy of this with the DelegateExpression property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AddHandlerOrRemoveHandlerKeyword property. + + + The value for the EventExpression property. + + + The value for the CommaToken property. + + + The value for the DelegateExpression property. + + + + + Represent a RaiseEvent statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "RaiseEvent" keyword + + + + + Returns a copy of this with the RaiseEventKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The name of the event being raised. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The argument list, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ArgumentList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the RaiseEventKeyword property. + + + The value for the Name property. + + + The value for the ArgumentList property. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + This node is associated with the following syntax kinds: + + + + + + + + The "With" keyword. + + + + + Returns a copy of this with the WithKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression that is the operand of the With statement. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WithKeyword property. + + + The value for the Expression property. + + + + + Represents a ReDim statement. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "ReDim" keyword. + + + + + Returns a copy of this with the ReDimKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the PreserveKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of ReDim clauses. + + + + + Returns a copy of this with the Clauses property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the ReDimKeyword property. + + + The value for the PreserveKeyword property. + + + The value for the Clauses property. + + + + + Represents a ReDim statement clause. + + + This node is associated with the following syntax kinds: + + + + + + + + The target of the ReDim statement. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ArraySizeInitializationModifier. + + + + + Returns a copy of this with the ArrayBounds property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Expression property. + + + The value for the ArrayBounds property. + + + + + Represents an "Erase" statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Erase" keyword. + + + + + Returns a copy of this with the EraseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of expressions denoting the arrays to erase. + + + + + Returns a copy of this with the Expressions property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the EraseKeyword property. + + + The value for the Expressions property. + + + + + An abstract base class for all node classes that define expressions. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Returns a copy of this with the Token property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the Token property. + + + + + Represents a parenthesized expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression inside the parentheses. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the Expression property. + + + The value for the CloseParenToken property. + + + + + Represents a tuple literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of tuple arguments. + + + + + Returns a copy of this with the Arguments property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the Arguments property. + + + The value for the CloseParenToken property. + + + + + Represents a tuple type expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of tuple elements. + + + + + Returns a copy of this with the Elements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the Elements property. + + + The value for the CloseParenToken property. + + + + + Represents a single declaration of a tuple element. + + + + + Represents a single declaration of a tuple element supplying only the type. + + + This node is associated with the following syntax kinds: + + + + + + + + The type-name part of the tuple element syntax. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Type property. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + This node is associated with the following syntax kinds: + + + + + + + + The name of the element. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A simple "As" clause specifying the type of the tuple element. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + The value for the AsClause property. + + + + + Identifies one of the special instances "Me", "MyClass" or "MyBase". The Kind + property identifies which. + + + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Identifies the special instance "Me" + + + This node is associated with the following syntax kinds: + + + + + + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + + + Identifies the special instance "MyBase" + + + This node is associated with the following syntax kinds: + + + + + + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + + + Identifies the special instance "MyClass" + + + This node is associated with the following syntax kinds: + + + + + + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + + + Represents a GetType expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "GetType" keyword. + + + + + Returns a copy of this with the GetTypeKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The type to get the Type object for. This can be an open generic type. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GetTypeKeyword property. + + + The value for the OpenParenToken property. + + + The value for the Type property. + + + The value for the CloseParenToken property. + + + + + Represents a TypeOf...Is or IsNot expression. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "TypeOf" keyword. + + + + + Returns a copy of this with the TypeOfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression being tested. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Is" or "IsNot" keyword. + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the type being tested against. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the TypeOfKeyword property. + + + The value for the Expression property. + + + The value for the OperatorToken property. + + + The value for the Type property. + + + + + Represents a GetXmlNamespace expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "GetXmlNamespace" keyword. + + + + + Returns a copy of this with the GetXmlNamespaceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The Xml namespace name being referenced. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GetXmlNamespaceKeyword property. + + + The value for the OpenParenToken property. + + + The value for the Name property. + + + The value for the CloseParenToken property. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + This node is associated with the following syntax kinds: + + + + + + + + + The expression on the left-hand-side of the "." or "!" token. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "." or "!" token. + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The identifier after the "." or "!" token. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the Expression property. + + + The value for the OperatorToken property. + + + The value for the Name property. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + This node is associated with the following syntax kinds: + + + + + + + + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Base property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The initial dot "." part of the separator. + + + + + Returns a copy of this with the Token1 property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "@" part of .@ or the second "." of "...". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Token2 property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The third "." in a "..." separator. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Token3 property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The identifier after the ".", ".@" or "..." + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the Base property. + + + The value for the Token1 property. + + + The value for the Token2 property. + + + The value for the Token3 property. + + + The value for the Name property. + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + This node is associated with the following syntax kinds: + + + + + + + + The target of the call or index expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The argument list. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ArgumentList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Expression property. + + + The value for the ArgumentList property. + + + + + Base class for object, array and anonymous object creation expressions + + + + + The "New" keyword. + + + + + Returns a copy of this with the NewKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + This node is associated with the following syntax kinds: + + + + + + + + The "New" keyword. + + + + + Returns a copy of this with the NewKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The type of the object being initialized. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ArgumentList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An optional From or With clause to initialize the new object. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NewKeyword property. + + + The value for the AttributeLists property. + + + The value for the Type property. + + + The value for the ArgumentList property. + + + The value for the Initializer property. + + + + + Represents a New expression that create an object of anonymous type. + + + This node is associated with the following syntax kinds: + + + + + + + + The "New" keyword. + + + + + Returns a copy of this with the NewKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The With clause to initialize the new object. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NewKeyword property. + + + The value for the AttributeLists property. + + + The value for the Initializer property. + + + + + Represents an expression that creates a new array. + + + This node is associated with the following syntax kinds: + + + + + + + + The "New" keyword. + + + + + Returns a copy of this with the NewKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The element type of the array being created. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ArrayBounds property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of array modifiers such as "()" or "(,)". If no array modifiers were + present, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the RankSpecifiers property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The initializer including the braces. + + + + + Returns a copy of this with the Initializer property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NewKeyword property. + + + The value for the AttributeLists property. + + + The value for the Type property. + + + The value for the ArrayBounds property. + + + The value for the RankSpecifiers property. + + + The value for the Initializer property. + + + + + Represents an expression that creates a new array without naming the element + type. + + + This node is associated with the following syntax kinds: + + + + + + + + The "{" token. + + + + + Returns a copy of this with the OpenBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of initializers between the braces. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Initializers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "}" token. + + + + + Returns a copy of this with the CloseBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenBraceToken property. + + + The value for the Initializers property. + + + The value for the CloseBraceToken property. + + + + + Represents a CType, DirectCast or TryCast conversion expression. The Kind + property determines which kind of cast it is. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression being cast. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "," token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The type the expression is being cast to. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + This node is associated with the following syntax kinds: + + + + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression being cast. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "," token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The type the expression is being cast to. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + The value for the OpenParenToken property. + + + The value for the Expression property. + + + The value for the CommaToken property. + + + The value for the Type property. + + + The value for the CloseParenToken property. + + + + + This node is associated with the following syntax kinds: + + + + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression being cast. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "," token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The type the expression is being cast to. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + The value for the OpenParenToken property. + + + The value for the Expression property. + + + The value for the CommaToken property. + + + The value for the Type property. + + + The value for the CloseParenToken property. + + + + + This node is associated with the following syntax kinds: + + + + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression being cast. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "," token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The type the expression is being cast to. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + The value for the OpenParenToken property. + + + The value for the Expression property. + + + The value for the CommaToken property. + + + The value for the Type property. + + + The value for the CloseParenToken property. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + This node is associated with the following syntax kinds: + + + + + + + + The keyword that was used in the cast operation. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression being cast. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + The value for the OpenParenToken property. + + + The value for the Expression property. + + + The value for the CloseParenToken property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The left operand. + + + + + Returns a copy of this with the Left property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The right operand. + + + + + Returns a copy of this with the Right property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the Left property. + + + The value for the OperatorToken property. + + + The value for the Right property. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + This node is associated with the following syntax kinds: + + + + + + + + + + + The token that is the operator. + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression being operated on. + + + + + Returns a copy of this with the Operand property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the OperatorToken property. + + + The value for the Operand property. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + This node is associated with the following syntax kinds: + + + + + + + + The "If" keyword + + + + + Returns a copy of this with the IfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The first expression inside the parentheses. + + + + + Returns a copy of this with the FirstExpression property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "," token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The second expression inside the parentheses. + + + + + Returns a copy of this with the SecondExpression property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The ")" token + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the IfKeyword property. + + + The value for the OpenParenToken property. + + + The value for the FirstExpression property. + + + The value for the CommaToken property. + + + The value for the SecondExpression property. + + + The value for the CloseParenToken property. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + This node is associated with the following syntax kinds: + + + + + + + + The "If" keyword + + + + + Returns a copy of this with the IfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The first expression inside the parentheses. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "," token. + + + + + Returns a copy of this with the FirstCommaToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The second expression inside the parentheses. + + + + + Returns a copy of this with the WhenTrue property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "," token. + + + + + Returns a copy of this with the SecondCommaToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The second expression inside the parentheses. + + + + + Returns a copy of this with the WhenFalse property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the IfKeyword property. + + + The value for the OpenParenToken property. + + + The value for the Condition property. + + + The value for the FirstCommaToken property. + + + The value for the WhenTrue property. + + + The value for the SecondCommaToken property. + + + The value for the WhenFalse property. + + + The value for the CloseParenToken property. + + + + + Represents a lambda expression, either single line or multi-line. + + + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + + + Returns a copy of this with the SubOrFunctionHeader property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Represents a single line lambda expression. + + + This node is associated with the following syntax kinds: + + + + + + + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + + + Returns a copy of this with the SubOrFunctionHeader property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Returns a copy of this with the Body property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the SubOrFunctionHeader property. + + + The value for the Body property. + + + + + Single line subs only have a single statement. However, when binding it is convenient to have a statement list. For example, + dim statements are not valid in a single line lambda. However, it is nice to be able to provide semantic info about the local. + The only way to create locals is to have a statement list. This method is friend because the statement list should not be part + of the public api. + + + + + Represents a multi-line lambda expression. + + + This node is associated with the following syntax kinds: + + + + + + + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + + + Returns a copy of this with the SubOrFunctionHeader property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Statements property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Returns a copy of this with the EndSubOrFunctionStatement property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the SubOrFunctionHeader property. + + + The value for the Statements property. + + + The value for the EndSubOrFunctionStatement property. + + + + + Represents the header part of a lambda expression + + + This node is associated with the following syntax kinds: + + + + + + + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AttributeLists property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Modifiers property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + + + Returns a copy of this with the SubOrFunctionKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ParameterList property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the AttributeLists property. + + + The value for the Modifiers property. + + + The value for the SubOrFunctionKeyword property. + + + The value for the ParameterList property. + + + The value for the AsClause property. + + + + + Represents a parenthesized argument list. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of arguments. This may be empty. Omitted argument are represented by + an OmittedArgumentSyntax node. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Arguments property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the Arguments property. + + + The value for the CloseParenToken property. + + + + + Base class for the possible kinds of arguments that can appear in an argument + list. + + + + + Gets a value indicating whether this argument is a named argument. + + True if this argument is a named argument; otherwise false. + + + + Gets a value indicating whether this argument is an omitted argument. + + True if this argument is an omitted argument; otherwise false. + + + + Gets the expression of this argument, if any. + + The expression of this argument if it is a simple argument; otherwise null. + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + This node is associated with the following syntax kinds: + + + + + + + + An empty token because all non terminals must have a token. + + + + + Returns a copy of this with the Empty property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Empty property. + + + + + Represents an argument that is just an optional argument name and an + expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The optional name and ":=" prefix of a named argument. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the NameColonEquals property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression that is the argument. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NameColonEquals property. + + + The value for the Expression property. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + This node is associated with the following syntax kinds: + + + + + + + + The name used to identify the named argument. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The ":=" token. + + + + + Returns a copy of this with the ColonEqualsToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the ColonEqualsToken property. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + This node is associated with the following syntax kinds: + + + + + + + + The lower bound of the range. This is typically the integer constant zero. + + + + + Returns a copy of this with the LowerBound property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "To" keyword. + + + + + Returns a copy of this with the ToKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The upper bound of the range. + + + + + Returns a copy of this with the UpperBound property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LowerBound property. + + + The value for the ToKeyword property. + + + The value for the UpperBound property. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all the query operators in this query expression. This list always + contains at least one operator. + + + + + Returns a copy of this with the Clauses property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Clauses property. + + + + + This is a base class for all query operators. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + This node is associated with the following syntax kinds: + + + + + + + + The name of the range variable being defined. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Describes the type of the variable being defined. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "In" keyword. + + + + + Returns a copy of this with the InKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression that serves as the source of items for the range variable. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + The value for the AsClause property. + + + The value for the InKeyword property. + + + The value for the Expression property. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + This node is associated with the following syntax kinds: + + + + + + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the NameEquals property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression used to initialize the expression variable. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NameEquals property. + + + The value for the Expression property. + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + This node is associated with the following syntax kinds: + + + + + + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the aggregation + expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the NameEquals property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the aggregation function. The "Group" aggregation function is + represented by the identifier "Group". + + + + + Returns a copy of this with the Aggregation property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NameEquals property. + + + The value for the Aggregation property. + + + + + Represents the name and optional type of an expression range variable. + + + This node is associated with the following syntax kinds: + + + + + + + + The name of the variable being defined. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Describes the type of the variable being defined. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "=" token. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + The value for the AsClause property. + + + The value for the EqualsToken property. + + + + + Represents aggregation in aggregation range variable declaration of a Group By, + Group Join or Aggregate query operator. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The name of the aggregation function. + + + + + Returns a copy of this with the FunctionName property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The argument to the aggregation function. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Argument property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token, if present. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the FunctionName property. + + + The value for the OpenParenToken property. + + + The value for the Argument property. + + + The value for the CloseParenToken property. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Group" keyword. + + + + + Returns a copy of this with the GroupKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GroupKeyword property. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + This node is associated with the following syntax kinds: + + + + + + + + The "From" keyword. + + + + + Returns a copy of this with the FromKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of collection variables declared by this From operator. + + + + + Returns a copy of this with the Variables property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the FromKeyword property. + + + The value for the Variables property. + + + + + Represents a "Let" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Let" keyword. + + + + + Returns a copy of this with the LetKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of expression range variable being defined by the Let operator. + + + + + Returns a copy of this with the Variables property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LetKeyword property. + + + The value for the Variables property. + + + + + Represents an Aggregate query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Aggregate" keyword. + + + + + Returns a copy of this with the AggregateKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The list of collection range variables declared by this Aggregate operator. + + + + + Returns a copy of this with the Variables property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of additional query operators. It may be empty. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AdditionalQueryOperators property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + The "Into" keyword. + + + + + Returns a copy of this with the IntoKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of new variables being defined by the aggregation. + + + + + Returns a copy of this with the AggregationVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AggregateKeyword property. + + + The value for the Variables property. + + + The value for the AdditionalQueryOperators property. + + + The value for the IntoKeyword property. + + + The value for the AggregationVariables property. + + + + + Represents the "Distinct" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Distinct" keyword. + + + + + Returns a copy of this with the DistinctKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the DistinctKeyword property. + + + + + Represents a "Where" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Where" keyword. + + + + + Returns a copy of this with the WhereKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The boolean expression used for filtering. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the WhereKeyword property. + + + The value for the Condition property. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "Skip" or "Take" keyword. + + + + + Returns a copy of this with the SkipOrTakeKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "While" keyword. + + + + + Returns a copy of this with the WhileKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The boolean expression used for partitioning. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the SkipOrTakeKeyword property. + + + The value for the WhileKeyword property. + + + The value for the Condition property. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "Skip" or "Take" keyword. + + + + + Returns a copy of this with the SkipOrTakeKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Represents the expression with the number of items to take or skip. + + + + + Returns a copy of this with the Count property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the SkipOrTakeKeyword property. + + + The value for the Count property. + + + + + Represents the "Group By" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Group" keyword. + + + + + Returns a copy of this with the GroupKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The optional list of variables being grouped; the contents of the Group clause. + If none were specified, an empty list is returned. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Items property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "By" keyword. + + + + + Returns a copy of this with the ByKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The key values being used for grouping. + + + + + Returns a copy of this with the Keys property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the IntoKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of new variables that calculate aggregations. + + + + + Returns a copy of this with the AggregationVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GroupKeyword property. + + + The value for the Items property. + + + The value for the ByKeyword property. + + + The value for the Keys property. + + + The value for the IntoKeyword property. + + + The value for the AggregationVariables property. + + + + + Represents a Join or a Group Join query operator. + + + + + The "Join" keyword. + + + + + Returns a copy of this with the JoinKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Defines the collection range variables being joined to. + + + + + Returns a copy of this with the JoinedVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + An additional Join or Group Join query operator. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AdditionalJoins property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "On" keyword. + + + + + Returns a copy of this with the OnKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Returns a copy of this with the JoinConditions property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Represents the "expression Equals expression" condition in a Join. + + + This node is associated with the following syntax kinds: + + + + + + + + The left expression in the Join condition. + + + + + Returns a copy of this with the Left property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "Equals" keyword. + + + + + Returns a copy of this with the EqualsKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The right expression in the Join condition. + + + + + Returns a copy of this with the Right property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Left property. + + + The value for the EqualsKeyword property. + + + The value for the Right property. + + + + + Represents a Join query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Join" keyword. + + + + + Returns a copy of this with the JoinKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Defines the collection range variables being joined to. + + + + + Returns a copy of this with the JoinedVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + An additional Join or Group Join query operator. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AdditionalJoins property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "On" keyword. + + + + + Returns a copy of this with the OnKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Returns a copy of this with the JoinConditions property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the JoinKeyword property. + + + The value for the JoinedVariables property. + + + The value for the AdditionalJoins property. + + + The value for the OnKeyword property. + + + The value for the JoinConditions property. + + + + + Represents the "Group Join" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Group" keyword. + + + + + Returns a copy of this with the GroupKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Join" keyword. + + + + + Returns a copy of this with the JoinKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Defines the collection range variables being joined to. + + + + + Returns a copy of this with the JoinedVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + An additional Join or Group Join query operator. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the AdditionalJoins property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "On" keyword. + + + + + Returns a copy of this with the OnKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Returns a copy of this with the JoinConditions property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "Into" keyword. + + + + + Returns a copy of this with the IntoKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of new variables that calculate aggregations. + + + + + Returns a copy of this with the AggregationVariables property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GroupKeyword property. + + + The value for the JoinKeyword property. + + + The value for the JoinedVariables property. + + + The value for the AdditionalJoins property. + + + The value for the OnKeyword property. + + + The value for the JoinConditions property. + + + The value for the IntoKeyword property. + + + The value for the AggregationVariables property. + + + + + Represents the "Order By" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Order" keyword + + + + + Returns a copy of this with the OrderKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "By" keyword. + + + + + Returns a copy of this with the ByKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of OrderExpression's to sort by. + + + + + Returns a copy of this with the Orderings property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OrderKeyword property. + + + The value for the ByKeyword property. + + + The value for the Orderings property. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + This node is associated with the following syntax kinds: + + + + + + + + + The expression to sort by. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AscendingOrDescendingKeyword property changed + to the specified value. Returns this instance if the specified value is the + same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the Expression property. + + + The value for the AscendingOrDescendingKeyword property. + + + + + Represents the "Select" query operator. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Select" keyword. + + + + + Returns a copy of this with the SelectKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The list of expression range variables being defined by the Select query + operator. + + + + + Returns a copy of this with the Variables property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the SelectKeyword property. + + + The value for the Variables property. + + + + + This is the base class for all XML expression syntax nodes (XmlDocument and + XmlElement). + + + + + Represents an XML Document literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Declaration property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the PrecedingMisc property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Root property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the FollowingMisc property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Declaration property. + + + The value for the PrecedingMisc property. + + + The value for the Root property. + + + The value for the FollowingMisc property. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanQuestionToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the XmlKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Version property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Encoding property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Standalone property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the QuestionGreaterThanToken property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanQuestionToken property. + + + The value for the XmlKeyword property. + + + The value for the Version property. + + + The value for the Encoding property. + + + The value for the Standalone property. + + + The value for the QuestionGreaterThanToken property. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the Equals property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the Equals property. + + + The value for the Value property. + + + + + Represents an XML element with content in an XML literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the StartTag property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Content property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndTag property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the StartTag property. + + + The value for the Content property. + + + The value for the EndTag property. + + + + + Represents Xml text. + + + This node is associated with the following syntax kinds: + + + + + + + + A list of all the text tokens in the Xml text. This list always contains at + least one token. + + + + + Returns a copy of this with the TextTokens property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the TextTokens property. + + + + + Represents the start tag of an XML element of the form <element>. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Attributes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the GreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanToken property. + + + The value for the Name property. + + + The value for the Attributes property. + + + The value for the GreaterThanToken property. + + + + + Represents the end tag of an XML element of the form </element>. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanSlashToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the GreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanSlashToken property. + + + The value for the Name property. + + + The value for the GreaterThanToken property. + + + + + Represents an empty XML element of the form <element /> + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Attributes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the SlashGreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanToken property. + + + The value for the Name property. + + + The value for the Attributes property. + + + The value for the SlashGreaterThanToken property. + + + + + Represents an XML attribute in an XML literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the EqualsToken property. + + + The value for the Value property. + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the StartQuoteToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the TextTokens property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndQuoteToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the StartQuoteToken property. + + + The value for the TextTokens property. + + + The value for the EndQuoteToken property. + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + This node is associated with the following syntax kinds: + + + + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Prefix property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the LocalName property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Prefix property. + + + The value for the LocalName property. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the GreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanToken property. + + + The value for the Name property. + + + The value for the GreaterThanToken property. + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the ColonToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the ColonToken property. + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanExclamationMinusMinusToken property + changed to the specified value. Returns this instance if the specified value is + the same as the current value. + + + + + Returns a copy of this with the TextTokens property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the MinusMinusGreaterThanToken property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanExclamationMinusMinusToken property. + + + The value for the TextTokens property. + + + The value for the MinusMinusGreaterThanToken property. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanQuestionToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the TextTokens property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the QuestionGreaterThanToken property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanQuestionToken property. + + + The value for the Name property. + + + The value for the TextTokens property. + + + The value for the QuestionGreaterThanToken property. + + + + + Represents an XML CDATA section in an XML literal expression. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the BeginCDataToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the TextTokens property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndCDataToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the BeginCDataToken property. + + + The value for the TextTokens property. + + + The value for the EndCDataToken property. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the LessThanPercentEqualsToken property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the PercentGreaterThanToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the LessThanPercentEqualsToken property. + + + The value for the Expression property. + + + The value for the PercentGreaterThanToken property. + + + + + Abstract node class that represents the textual description of a type, possibly + include generic type arguments, qualified names, array specifiers, nullable + specifier and the like. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + This node is associated with the following syntax kinds: + + + + + + + + The type of the elements of the array. + + + + + Returns a copy of this with the ElementType property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents the list of "()" or "(,,)" modifiers on the array type. + + + + + Returns a copy of this with the RankSpecifiers property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElementType property. + + + The value for the RankSpecifiers property. + + + + + A type name that represents a nullable type, such as "Integer?". + + + This node is associated with the following syntax kinds: + + + + + + + + The kind of type that is this type is a nullable of. Cannot be an array type or + a nullable type. + + + + + Returns a copy of this with the ElementType property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "?" token. + + + + + Returns a copy of this with the QuestionMarkToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ElementType property. + + + The value for the QuestionMarkToken property. + + + + + Represents an occurrence of a Visual Basic built-in type such as Integer or + String in source code. + + + This node is associated with the following syntax kinds: + + + + + + + + The keyword that was used to describe the built-in type. + + + + + Returns a copy of this with the Keyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Keyword property. + + + + + Abstract node class that represents a name, possibly include generic arguments + and qualified names. + + + + + Abstract node class that represents a name, possibly include generic arguments. + + + + + The identifier in the name. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + This node is associated with the following syntax kinds: + + + + + + + + The identifier in the name. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + This node is associated with the following syntax kinds: + + + + + + + + The identifier in the name. + + + + + Returns a copy of this with the Identifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The generic argument list. + + + + + Returns a copy of this with the TypeArgumentList property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Identifier property. + + + The value for the TypeArgumentList property. + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + This node is associated with the following syntax kinds: + + + + + + + + The part of the name that appears to the left of the dot. This can itself be + any name. + + + + + Returns a copy of this with the Left property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "." token that separates the names. + + + + + Returns a copy of this with the DotToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The part of the name that appears to the right of the dot. This must be a + simple identifier. + + + + + Returns a copy of this with the Right property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Left property. + + + The value for the DotToken property. + + + The value for the Right property. + + + + + Represents a name in the global namespace. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Global" keyword. + + + + + Returns a copy of this with the GlobalKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the GlobalKeyword property. + + + + + Represents a parenthesized list of generic type arguments. + + + This node is associated with the following syntax kinds: + + + + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The "Of" keyword. + + + + + Returns a copy of this with the OfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + A list of all the type arguments. + + + + + Returns a copy of this with the Arguments property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the OfKeyword property. + + + The value for the Arguments property. + + + The value for the CloseParenToken property. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Signature property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AsClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the Signature property. + + + The value for the AsClause property. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the ArgumentTypes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenParenToken property. + + + The value for the ArgumentTypes property. + + + The value for the CloseParenToken property. + + + + + This node is associated with the following syntax kinds: + + + + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Modifier property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Type property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Modifier property. + + + The value for the Type property. + + + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the OperatorKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the OperatorToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OperatorKeyword property. + + + The value for the OperatorToken property. + + + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Left property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the DotToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the Right property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Left property. + + + The value for the DotToken property. + + + The value for the Right property. + + + + + Represent a Yield statement. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Yield" keyword. + + + + + Returns a copy of this with the YieldKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression whose value is being yielded. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the YieldKeyword property. + + + The value for the Expression property. + + + + + Represents an Await expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "Await" keyword. + + + + + Returns a copy of this with the AwaitKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The expression being awaited. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the AwaitKeyword property. + + + The value for the Expression property. + + + + + Abstract class that represent structured trivia. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + This node is associated with the following syntax kinds: + + + + + + + + The list of tokens that were skipped by the parser. + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Tokens property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Tokens property. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in + source. + + + This node is associated with the following syntax kinds: + + + + + + + + If nothing is present, an empty list is returned. + + + + + Returns a copy of this with the Content property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Content property. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the StartQuoteToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Reference property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndQuoteToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the EqualsToken property. + + + The value for the StartQuoteToken property. + + + The value for the Reference property. + + + The value for the EndQuoteToken property. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + This node is associated with the following syntax kinds: + + + + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the StartQuoteToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Reference property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndQuoteToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Name property. + + + The value for the EqualsToken property. + + + The value for the StartQuoteToken property. + + + The value for the Reference property. + + + The value for the EndQuoteToken property. + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + This node is associated with the following syntax kinds: + + + + + + + + The expression on the left-hand-side of the "?". + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + "?" token. + + + + + Returns a copy of this with the QuestionMarkToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + Returns a copy of this with the WhenNotNull property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the Expression property. + + + The value for the QuestionMarkToken property. + + + The value for the WhenNotNull property. + + + + + Represents a NameOf expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The "NameOf" keyword. + + + + + Returns a copy of this with the NameOfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "(" token. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The argument. + + + + + Returns a copy of this with the Argument property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The ")" token. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the NameOfKeyword property. + + + The value for the OpenParenToken property. + + + The value for the Argument property. + + + The value for the CloseParenToken property. + + + + + Represents an interpolated string expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The opening '$"', '$“', or '$”' token. + + + + + Returns a copy of this with the DollarSignDoubleQuoteToken property changed to + the specified value. Returns this instance if the specified value is the same + as the current value. + + + + + The contents of the interpolated string. + + + + + Returns a copy of this with the Contents property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The closing '"', '”', or '“' token. + + + + + Returns a copy of this with the DoubleQuoteToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the DollarSignDoubleQuoteToken property. + + + The value for the Contents property. + + + The value for the DoubleQuoteToken property. + + + + + Represents either text content or an interpolation. + + + + + Represents literal text content in an interpolated string. + + + This node is associated with the following syntax kinds: + + + + + + + + The text token. + + + + + Returns a copy of this with the TextToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the TextToken property. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + This node is associated with the following syntax kinds: + + + + + + + + The opening curly brace '{' token. + + + + + Returns a copy of this with the OpenBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + The expression whose formatted value should be embedded in the resultant + string. + + + + + Returns a copy of this with the Expression property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Optional. The alignment clause ',alignment' of the embedded expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the AlignmentClause property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Optional. The format string clause ':formatString' of the embedded expression. + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the FormatClause property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The closing curly brace '}' token of the embedded expression. + + + + + Returns a copy of this with the CloseBraceToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the OpenBraceToken property. + + + The value for the Expression property. + + + The value for the AlignmentClause property. + + + The value for the FormatClause property. + + + The value for the CloseBraceToken property. + + + + + Represents an alignment clause ',alignment' of an interpolated string embedded + expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The comma ',' token. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An expression representing the alignment of the interpolated expression. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the CommaToken property. + + + The value for the Value property. + + + + + Represents a format string clause ':formatString' of an interpolated string + embedded expression. + + + This node is associated with the following syntax kinds: + + + + + + + + The ':' token. + + + + + Returns a copy of this with the ColonToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The format string. + + + + + Returns a copy of this with the FormatStringToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the ColonToken property. + + + The value for the FormatStringToken property. + + + + + Represents a pre-processing directive (such as #If, #Const or #Region) + appearing in source. + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Const" keyword. + + + + + Returns a copy of this with the ConstKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The name of the pre-processing constant being defined. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + The "=" token. + + + + + Returns a copy of this with the EqualsToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Returns a copy of this with the Value property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the ConstKeyword property. + + + The value for the Name property. + + + The value for the EqualsToken property. + + + The value for the Value property. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + This node is associated with the following syntax kinds: + + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ElseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the IfOrElseIfKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Condition property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + This child is optional. If it is not present, then Nothing is returned. + + + + + Returns a copy of this with the ThenKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The new kind. + + + The value for the HashToken property. + + + The value for the ElseKeyword property. + + + The value for the IfOrElseIfKeyword property. + + + The value for the Condition property. + + + The value for the ThenKeyword property. + + + + + Represents an #Else pre-processing directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the ElseKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the ElseKeyword property. + + + + + Represents an #End If pre-processing directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the IfKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the EndKeyword property. + + + The value for the IfKeyword property. + + + + + Represents the beginning of a #Region directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Region" keyword. + + + + + Returns a copy of this with the RegionKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The label of the code region being defined. + + + + + Returns a copy of this with the Name property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the RegionKeyword property. + + + The value for the Name property. + + + + + Represents an #End Region directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "End" keyword. + + + + + Returns a copy of this with the EndKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + The "Region" keyword. + + + + + Returns a copy of this with the RegionKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the EndKeyword property. + + + The value for the RegionKeyword property. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the ExternalSourceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the ExternalSource property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the CommaToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the LineStart property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the ExternalSourceKeyword property. + + + The value for the OpenParenToken property. + + + The value for the ExternalSource property. + + + The value for the CommaToken property. + + + The value for the LineStart property. + + + The value for the CloseParenToken property. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EndKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the ExternalSourceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the EndKeyword property. + + + The value for the ExternalSourceKeyword property. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the ExternalChecksumKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the OpenParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the ExternalSource property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the FirstCommaToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Guid property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the SecondCommaToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the Checksum property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the CloseParenToken property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the ExternalChecksumKeyword property. + + + The value for the OpenParenToken property. + + + The value for the ExternalSource property. + + + The value for the FirstCommaToken property. + + + The value for the Guid property. + + + The value for the SecondCommaToken property. + + + The value for the Checksum property. + + + The value for the CloseParenToken property. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the EnableKeyword property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the WarningKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the ErrorCodes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the EnableKeyword property. + + + The value for the WarningKeyword property. + + + The value for the ErrorCodes property. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the DisableKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the WarningKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the ErrorCodes property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the DisableKeyword property. + + + The value for the WarningKeyword property. + + + The value for the ErrorCodes property. + + + + + Represents an #r directive appearing in scripts. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the ReferenceKeyword property changed to the + specified value. Returns this instance if the specified value is the same as + the current value. + + + + + Returns a copy of this with the File property changed to the specified value. + Returns this instance if the specified value is the same as the current value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + The value for the ReferenceKeyword property. + + + The value for the File property. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + This node is associated with the following syntax kinds: + + + + + + + + The "#" token in a preprocessor directive. + + + + + Returns a copy of this with the HashToken property changed to the specified + value. Returns this instance if the specified value is the same as the current + value. + + + + + Returns a copy of this with the specified changes. Returns this instance if + there are no actual changes. + + + The value for the HashToken property. + + + + + Creates a syntax trivia normalizing visitor + + The whitespace to indent with + The whitespace to use for end of line + Whether to use elastic trivia or not + Whether to rewrite keywords in default casing or not + + + + + indentation depth is the declaration depth for statements within the block. for start/end statements + of these blocks (e.g. the if statement), it is a level less + + + + + We each element of option, imports and attributes on a separate line, where the last element of this the list if + followed by an empty line: + Option Strict On + + Imports System + Imports Goo + + [...] + + Namespace + [...] + + + + + Add an empty line after the begin, except the first member is a nested namespace. + Separate each member of a namespace with an empty line. + + + + + We want to display type blocks (Modules, Classes, Structures and Interfaces) like follows + Class Goo + implements IBar1, IBar2 + implements IBar3 + inherits Bar1 + + Public Sub Boo() + End Sub + End Class + + or + + Class Goo + + Public Sub Boo() + End Sub + End Class + + Basically it's an empty line between implements and inherits and between each member. If there are no + inherits or implements, add an empty line before the first member. + + + + + Each statement and the begin will be displayed on a separate line. No empty lines. + + + + + Adds VB specific parts to the line directive map + + + + + + Represents a visitor that visits only the single SyntaxNode + passed into its method and produces + a value of the type specified by the parameter. + + + The type of the return value of this visitor's Visit method. + + + + + Represents a visitor that visits only the single SyntaxNode + passed into its method. + + + + + Represents a which descends an entire graph and + may replace or remove visited SyntaxNodes in depth-first order. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + An empty token because all non terminals must have a token. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + A representing the specific kind of + EndBlockStatementSyntax. One of EndIfStatement, EndUsingStatement, + EndWithStatement, EndSelectStatement, EndStructureStatement, EndEnumStatement, + EndInterfaceStatement, EndClassStatement, EndModuleStatement, + EndNamespaceStatement, EndSubStatement, EndFunctionStatement, EndGetStatement, + EndSetStatement, EndPropertyStatement, EndOperatorStatement, EndEventStatement, + EndAddHandlerStatement, EndRemoveHandlerStatement, EndRaiseEventStatement, + EndWhileStatement, EndTryStatement, EndSyncLockStatement. + + + The "End" keyword + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + A representing the specific kind of + EndBlockStatementSyntax. One of EndIfStatement, EndUsingStatement, + EndWithStatement, EndSelectStatement, EndStructureStatement, EndEnumStatement, + EndInterfaceStatement, EndClassStatement, EndModuleStatement, + EndNamespaceStatement, EndSubStatement, EndFunctionStatement, EndGetStatement, + EndSetStatement, EndPropertyStatement, EndOperatorStatement, EndEventStatement, + EndAddHandlerStatement, EndRemoveHandlerStatement, EndRaiseEventStatement, + EndWhileStatement, EndTryStatement, EndSyncLockStatement. + + + The keyword that ends the block. Must be one of: "If", "Using", "With", + "Select", "Structure", "Enum", "Interface", "Class", "Module", "Namespace", + "Sub", "Function", "Get, "Set", "Property", "Operator", "Event", "AddHandler", + "RemoveHandler", "RaiseEvent", "While", "Try" or "SyncLock". + + + + + Represents an entire source file of VB code. + + + Represents the list of Option statements at the beginning of a source file. + + + Represents the list of Imports statements at the beginning of a source file. + + + Represents the list of AttributeStatements at the beginning of a source file + that contain the Assembly and Module attributes. + + + Represents the members of the default namespace for this source file: all the + top-level type and namespace declarations in the file. May also contain + Statements that are not valid + + + Represents the end of the source file. This token may have trivia (whitespace, + comments, ...) attached to it. + + + + + Represents an entire source file of VB code. + + + Represents the list of Option statements at the beginning of a source file. + + + Represents the list of Imports statements at the beginning of a source file. + + + Represents the list of AttributeStatements at the beginning of a source file + that contain the Assembly and Module attributes. + + + Represents the members of the default namespace for this source file: all the + top-level type and namespace declarations in the file. May also contain + Statements that are not valid + + + + + Represents an entire source file of VB code. + + + + + Represents an Option statement, such as "Option Strict On". + + + The "Option" keyword. + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + The keyword that identifiers the value being set for the option: On, Off, Text + or Binary. + + + + + Represents an Option statement, such as "Option Strict On". + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + The keyword that identifiers the value being set for the option: On, Off, Text + or Binary. + + + + + Represents an Option statement, such as "Option Strict On". + + + The keyword that identifies the option being set: Explicit, Strict, Compare or + Infer. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + The "Imports" keyword. + + + A list of one or more import clauses. Each clause is either an alias, namespace + or XML namespace import. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + A list of one or more import clauses. Each clause is either an alias, namespace + or XML namespace import. + + + + + Represents an Imports statement, which has one or more imports clauses. + + + + + Represents the clause of an Imports statement that imports all members of a + type or namespace or aliases a type or namespace. + + + An optional alias for the namespace or type being imported. + + + The namespace or type being imported. + + + + + Represents the clause of an Imports statement that imports all members of a + type or namespace or aliases a type or namespace. + + + The namespace or type being imported. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + The identifier being introduced. + + + The "=" token. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + The identifier being introduced. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + The identifier being introduced. + + + + + Defines a XML namespace for XML expressions. + + + Identifies the XML namespace alias and URI. + + + + + Defines a XML namespace for XML expressions. + + + Identifies the XML namespace alias and URI. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + The statement that begins the NamespaceBlock. + + + The declarations contained in the namespace statement. + + + The End Namespace statement that ends the block. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + The statement that begins the NamespaceBlock. + + + The declarations contained in the namespace statement. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + The statement that begins the NamespaceBlock. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + The "Namespace" keyword. + + + A (possibly dotted) name denoting the namespace being declared. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + A (possibly dotted) name denoting the namespace being declared. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + The "Module" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Module" statement that ends the block. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + The "Module" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + The "Module" statement that begins the block. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + The "Structure" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Structure" statement that ends the block. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + The "Structure" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + The "Structure" statement that begins the block. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + The "Interface" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Interface" statement that ends the block. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + The "Interface" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + The "Interface" statement that begins the block. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + The "Class" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + The "End Class" statement that ends the block. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + The "Class" statement that begins the block. + + + A list of the Inherits declarations for the type. + + + A list of the Implements declarations for the type. + + + The declarations contained in the type or module. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + The "Class" statement that begins the block. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + The statement that begins the type or module. + + + The declarations contained in the enumeration. + + + The End XXX statement that ends the block. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + The statement that begins the type or module. + + + The declarations contained in the enumeration. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + The statement that begins the type or module. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + The "Inherits" keyword. + + + A list of the types being inherited. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + A list of the types being inherited. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + A list of the types being inherited. + + + + + Represents an Implements statement in a Class or Structure. + + + The "Implements" keyword. + + + A list of the types being implemented. + + + + + Represents an Implements statement in a Class or Structure. + + + A list of the types being implemented. + + + + + Represents an Implements statement in a Class or Structure. + + + A list of the types being implemented. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Module" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Structure" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Interface" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Class" keyword. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The name of the type being declared. + + + If present, a type parameter list with generic parameters for this type. If no + generic parameters were present, Nothing is returned. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + The name of the type being declared. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The "Enum" keyword. + + + The name of the enum being declared. + + + Optional "As XXX" clause describing the underlying type of the enumeration. If + no As clause was specified, Nothing is returned. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The name of the enum being declared. + + + Optional "As XXX" clause describing the underlying type of the enumeration. If + no As clause was specified, Nothing is returned. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + The name of the enum being declared. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + The name of the enum being declared. + + + + + Represents the type parameter list in a declaration. + + + The "(" token. + + + The "Of" keyword. + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + The ")" token. + + + + + Represents the type parameter list in a declaration. + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + + + Represents the type parameter list in a declaration. + + + A list of the type parameters. There must be at least one type parameter in the + list. + + + + + Represents a type parameter on a generic type declaration. + + + Represents the "In" or "Out" variance keyword on a type parameter, if present. + If no variance modifier was present, Nothing is returned. + + + The name of the type parameter + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + + + Represents a type parameter on a generic type declaration. + + + The name of the type parameter + + + + + Represents a type parameter on a generic type declaration. + + + The name of the type parameter + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + The "As" keyword, if any type constraints were supplied. If no type constraints + were supplied, Nothing is returned. + + + A list of the supplied constraints. If no constraints were supplied, Nothing is + returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + A list of the supplied constraints. If no constraints were supplied, Nothing is + returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + The "As" keyword. + + + The "{" token. + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + The "}" token. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + A list of the supplied constraints. If no constraints were supplied, an empty + list is returned. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + A representing the specific kind of + SpecialConstraintSyntax. One of NewConstraint, ClassConstraint, + StructureConstraint. + + + The "New", "Class" or "Structure" keyword that denotes the kind of special + constraint. + + + + + Represents a type parameter constraint that is a type. + + + The type describing the constraint. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + An optional value for the enum member. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Sub" or "Function" statement that begins the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + A representing the specific kind of MethodBlockSyntax. + One of SubBlock, FunctionBlock. + + + The "Sub" or "Function" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + A representing the specific kind of MethodBlockSyntax. + One of SubBlock, FunctionBlock. + + + The "Sub" or "Function" statement that begins the block. + + + The "End Sub" or "End Function" statement that ends the block. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + The "Sub New" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Sub" statement that ends the block declaration. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + The "Sub New" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + The "Sub New" statement that begins the block. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Operator" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Operator" statement that ends the block declaration. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Operator" statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + The "Operator" statement that begins the block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + A representing the specific kind of AccessorBlockSyntax. + One of GetAccessorBlock, SetAccessorBlock, AddHandlerAccessorBlock, + RemoveHandlerAccessorBlock, RaiseEventAccessorBlock. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The statements contained in the block statement. This might be an empty list. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + A representing the specific kind of AccessorBlockSyntax. + One of GetAccessorBlock, SetAccessorBlock, AddHandlerAccessorBlock, + RemoveHandlerAccessorBlock, RaiseEventAccessorBlock. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" statement that + begins the accessor block. + + + The "End Get", "End Set", "End AddHandler", "End RemoveHandler", or "End + RaiseEvent" statement that ends the accessor block. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + The property declaration that begins the block. + + + The accessor blocks contained in the property, between the Property and the End + Property statements. + + + The End Property statement that ends the block. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + The property declaration that begins the block. + + + The accessor blocks contained in the property, between the Property and the End + Property statements. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + The event declaration that begins the block. + + + The accessor blocks contained in the custom event declaration, between the + Event statement and the End Event statement. + + + The End Event statement that ends the block. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + The event declaration that begins the block. + + + The accessor blocks contained in the custom event declaration, between the + Event statement and the End Event statement. + + + + + Represents the parameter list in a method declaration. + + + The "(" token that introduces the parameter list. If no parameter list was + present, Nothing is returned. + + + The list of parameters. If no parameter list was present, Nothing is returned. + + + The ")" token that concludes the parameter list. If no parameter list was + present, Nothing is returned. + + + + + Represents the parameter list in a method declaration. + + + The list of parameters. If no parameter list was present, Nothing is returned. + + + + + Represents the parameter list in a method declaration. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + The name of the method being declared. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + The name of the method being declared. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + The name of the method being declared. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + The name of the method being declared. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A representing the specific kind of + MethodStatementSyntax. One of SubStatement, FunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + If present, a type parameter list with generic type parameters for this method. + If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, a Handles clause indicated the events that this method handles. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A representing the specific kind of + MethodStatementSyntax. One of SubStatement, FunctionStatement. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A representing the specific kind of + MethodStatementSyntax. One of SubStatement, FunctionStatement. + + + The "Sub" or "Function" keyword that introduces this method declaration. + + + The name of the method being declared. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" keyword. + + + The "New" keyword in the constructor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The name of the method being declared. + + + The string literal with the library name. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + The name of the method being declared. + + + The string literal with the library name. + + + + + A Declare statement that declares an external DLL method. + + + The name of the method being declared. + + + The string literal with the library name. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The name of the method being declared. + + + The string literal with the library name. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + The name of the method being declared. + + + The string literal with the library name. + + + + + A Declare statement that declares an external DLL method. + + + The name of the method being declared. + + + The string literal with the library name. + + + + + A Declare statement that declares an external DLL method. + + + A representing the specific kind of + DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Declare" keyword. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The "Lib" keyword. + + + The string literal with the library name. + + + If present, the "Alias" keyword. If not present, returns Nothing. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A representing the specific kind of + DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + If present, the keyword that defines the string translation semantics of the + external method. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The string literal with the library name. + + + The string literal with the alias. If not present, returns Nothing. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A Declare statement that declares an external DLL method. + + + A representing the specific kind of + DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The string literal with the library name. + + + + + A Declare statement that declares an external DLL method. + + + A representing the specific kind of + DeclareStatementSyntax. One of DeclareSubStatement, DeclareFunctionStatement. + + + The "Sub" or "Function" keyword. + + + The name of the method being declared. + + + The string literal with the library name. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + The name of the delegate being declared. + + + + + A statement that declares a delegate type. + + + The name of the delegate being declared. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + The name of the delegate being declared. + + + + + A statement that declares a delegate type. + + + The name of the delegate being declared. + + + + + A statement that declares a delegate type. + + + A representing the specific kind of + DelegateStatementSyntax. One of DelegateSubStatement, + DelegateFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Delegate" keyword. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A representing the specific kind of + DelegateStatementSyntax. One of DelegateSubStatement, + DelegateFunctionStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + If present, a type parameter list with generic type parameters for this + delegate. If no generic type parameters were present, Nothing is returned. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares a delegate type. + + + A representing the specific kind of + DelegateStatementSyntax. One of DelegateSubStatement, + DelegateFunctionStatement. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + + + A statement that declares a delegate type. + + + A representing the specific kind of + DelegateStatementSyntax. One of DelegateSubStatement, + DelegateFunctionStatement. + + + The "Sub" or "Function" keyword. + + + The name of the delegate being declared. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The optional Custom keyword for custom event declarations. + + + The "Event" keyword that introduces this event declaration. + + + The name of the event being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an Implements clause indicates the interface methods that this + method implements. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The name of the event being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an Implements clause indicates the interface methods that this + method implements. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + The name of the event being declared. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + The name of the event being declared. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Operator" keyword that introduces this operator declaration. + + + The operator being defined. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The operator being defined. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + The operator being defined. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Property" keyword that introduces this property declaration. + + + The name of the property being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + property. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The name of the property being declared. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + property. + + + If present, an Implements clause indicated the interface methods that this + method implements. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + The name of the property being declared. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + The name of the property being declared. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A representing the specific kind of + AccessorStatementSyntax. One of GetAccessorStatement, SetAccessorStatement, + AddHandlerAccessorStatement, RemoveHandlerAccessorStatement, + RaiseEventAccessorStatement. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + A representing the specific kind of + AccessorStatementSyntax. One of GetAccessorStatement, SetAccessorStatement, + AddHandlerAccessorStatement, RemoveHandlerAccessorStatement, + RaiseEventAccessorStatement. + + + The "Get", "Set", "AddHandler", "RemoveHandler", or "RaiseEvent" keyword that + introduces this accessor declaration. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + The "Implements" keyword. + + + The list of interface members being implemented. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + The list of interface members being implemented. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + The list of interface members being implemented. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + The "Handles" keyword. + + + The list of event members being handled. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + The list of event members being handled. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + The list of event members being handled. + + + + + Represents event container specified through special keywords "Me", "MyBase" or + "MyClass".. + + + The container of the event. This can be one of the special keywords: "Me", + "MyBase" or "MyClass". + + + + + Represents event container that refers to a WithEvents member. + + + The container of the event. It is a simple identifier that refers to a + WithEvents member of the containing type. + + + + + Represents event container that refers to a WithEvents member. + + + The container of the event. It is a simple identifier that refers to a + WithEvents member of the containing type. + + + + + Represents event container that refers to a WithEvents member's property. + + + The container of the event. + + + The "." token. + + + The provider of the event. It is a property of a WithEvents member of the + containing type. + + + + + Represents event container that refers to a WithEvents member's property. + + + The container of the event. + + + The provider of the event. It is a property of a WithEvents member of the + containing type. + + + + + Represents a single handled event in a "Handles ..." clause. + + + The container of the event. This can either be a simple identifier (identifying + a members of the containing type) or one of the special keywords "Me", "MyBase" + or "MyClass". + + + The "." token. + + + The event being handled. This must be a simple identifier. + + + + + Represents a single handled event in a "Handles ..." clause. + + + The container of the event. This can either be a simple identifier (identifying + a members of the containing type) or one of the special keywords "Me", "MyBase" + or "MyClass". + + + The event being handled. This must be a simple identifier. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The missing identifier token for this incomplete member. Should only be used to + have a location for error reporting. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + A list of all attribute lists on this declaration. If no attributes were + specified, an empty list is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + The "As" clause that describes the return type, and possibly includes "New", + "With" or "From". If no As clause was present, Nothing is returned. + + + If present, an "= initial-value" clause describing the initial value of the + variable or the value of the constant. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + The names of the variables being declared. Each name might have a "?" or "()" + modifier(s) attached. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + The "As" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type-name part of the As clause. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type-name part of the As clause. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + The type-name part of the As clause. + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + The "As" keyword. + + + The New expression + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + The New expression + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + The "With" keyword. + + + The "{" token. + + + The comma-separated list of field initializers. + + + The "}" token. + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + The comma-separated list of field initializers. + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + The comma-separated list of field initializers. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + The "From" keyword. + + + The initializer including the braces. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + The initializer including the braces. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + The optional "Key" keyword. + + + The value being assigned. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + The value being assigned. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + The optional "Key" keyword. + + + The "." token. + + + The name of the field being initialized. + + + The "=" token. + + + The value being assigned to the field. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + The name of the field being initialized. + + + The value being assigned to the field. + + + + + Represents an "= initializer" clause in a declaration for a variable, parameter + or automatic property. + + + The "=" token. + + + The expression used as the initial value. + + + + + Represents an "= initializer" clause in a declaration for a variable, parameter + or automatic property. + + + The expression used as the initial value. + + + + + Represent a parameter to a method, property, constructor, etc. + + + A list of all attribute lists on this parameter. If no attributes were + specified, Nothing is returned. + + + A list of the modifier tokens "ByVal", "ByRef", "Optional" or "ParamArray" that + modify this parameter. + + + The name of the parameter, including any "?" or "()" modifiers. + + + If present, the "As type-name" clause describing the type of the parameter. If + no As clause is present, Nothing is returned. + + + If present, an initializer with the default value of the parameter. If no + default value is present, Nothing is returned. + + + + + Represent a parameter to a method, property, constructor, etc. + + + The name of the parameter, including any "?" or "()" modifiers. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + The identifier that names the item being declared. + + + The "?" token that indicates a nullable type. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + A list of array modifiers for the type. If no array modifiers were present, an + empty list is returned. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + The identifier that names the item being declared. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + The identifier that names the item being declared. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + The identifier that names the item being declared. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + The "(" token. + + + The comma tokens in the array type. There is one less comma than the rank. + + + The ")" token. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + + + Represents a group of attributes within "<" and ">" brackets. + + + The "<" token. + + + A comma separated list of attribute declarations in this attribute list. + + + The ">" token. + + + + + Represents a group of attributes within "<" and ">" brackets. + + + A comma separated list of attribute declarations in this attribute list. + + + + + Represents a group of attributes within "<" and ">" brackets. + + + + + Represents a single attribute declaration within an attribute list. + + + Optional attribute target. Assembly|Module : + + + The name of the attribute. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + + + Represents a single attribute declaration within an attribute list. + + + The name of the attribute. + + + + + Represents a single attribute declaration within an attribute list. + + + The "Assembly" or "Module" attribute modifier, is present. If no attribute + modifier is present, Nothing is returned. + + + The ":" token, if an attribute modifier is present. If no attribute modifier is + present, Nothing is returned. + + + + + Represents a single attribute declaration within an attribute list. + + + The "Assembly" or "Module" attribute modifier, is present. If no attribute + modifier is present, Nothing is returned. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + The list of attribute lists. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + + + Represent an expression in a statement context. This may only be a invocation + or await expression in standard code but may be any expression in VB + Interactive code. + + + The expression. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + "?" token. + + + The expression whose value is being output. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + The expression whose value is being output. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + The While statement that begins the block. + + + The statements contained in the While...End While. This might be an empty list. + + + The End While statement that ends the block. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + The While statement that begins the block. + + + The statements contained in the While...End While. This might be an empty list. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + The While statement that begins the block. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + The UsingStatement that begins the Using...End Using block. + + + The statements contained in the Using...End Using block. This might be an empty + list. + + + The End Using statement that ends the block. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + The UsingStatement that begins the Using...End Using block. + + + The statements contained in the Using...End Using block. This might be an empty + list. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + The UsingStatement that begins the Using...End Using block. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + The SyncLock statement that begins the block. + + + The statements contained in the SyncLock...End SyncLock statement. This might + be an empty list. + + + The End SyncLock statement that ends the block. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + The SyncLock statement that begins the block. + + + The statements contained in the SyncLock...End SyncLock statement. This might + be an empty list. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + The SyncLock statement that begins the block. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + The WithStatement that begins the With...End With block. + + + The statements contained in the With...End With block. This might be an empty + list. + + + The End With statement that ends the block. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + The WithStatement that begins the With...End With block. + + + The statements contained in the With...End With block. This might be an empty + list. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + The WithStatement that begins the With...End With block. + + + + + Represents the declaration of one or more local variables or constants. + + + The modifier token (Static, Dim or Const) that introduces this local variable + declaration. + + + The list of variable declarator. Each declarator specifies one or more variable + names along with a type and/or initializer. + + + + + Represents a label statement. + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + The ":" token of the label statement. + + + + + Represents a label statement. + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + + + Represents a label statement. + + + The name of the label. If the label is a line number, returns an IntegerLiteral + that is the line number, otherwise, returns an Identifier. + + + + + Represents a "GoTo" statement. + + + The "GoTo" keyword. + + + The name of the label. If the label is a line number, wraps an IntegerLiteral + that is the line number, otherwise, wraps an Identifier. + + + + + Represents a "GoTo" statement. + + + The name of the label. If the label is a line number, wraps an IntegerLiteral + that is the line number, otherwise, wraps an Identifier. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + A representing the specific kind of LabelSyntax. One of + IdentifierLabel, NumericLabel, NextLabel. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + A representing the specific kind of LabelSyntax. One of + IdentifierLabel, NumericLabel, NextLabel. + + + The label name (identifier), line number (integer literal), or next keyword + token. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + The "Stop" or "End" keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + The "Stop" or "End" keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + A representing the specific kind of + StopOrEndStatementSyntax. One of StopStatement, EndStatement. + + + The "Stop" or "End" keyword. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + A representing the specific kind of ExitStatementSyntax. + One of ExitDoStatement, ExitForStatement, ExitSubStatement, + ExitFunctionStatement, ExitOperatorStatement, ExitPropertyStatement, + ExitTryStatement, ExitSelectStatement, ExitWhileStatement. + + + The "Exit" keyword. + + + The keyword describing the block to exit. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + A representing the specific kind of ExitStatementSyntax. + One of ExitDoStatement, ExitForStatement, ExitSubStatement, + ExitFunctionStatement, ExitOperatorStatement, ExitPropertyStatement, + ExitTryStatement, ExitSelectStatement, ExitWhileStatement. + + + The keyword describing the block to exit. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + A representing the specific kind of + ContinueStatementSyntax. One of ContinueWhileStatement, ContinueDoStatement, + ContinueForStatement. + + + The "Continue" keyword. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + A representing the specific kind of + ContinueStatementSyntax. One of ContinueWhileStatement, ContinueDoStatement, + ContinueForStatement. + + + The "Do", "For" or "While" keyword that identifies the kind of loop being + continued. + + + + + Represents a "Return" statement. + + + The "Return" keyword. + + + The expression being returned, if present. + + + + + Represents a "Return" statement. + + + The expression being returned, if present. + + + + + Represents a "Return" statement. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + The "If" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + A list of statements to be executed if the condition expression evaluates as + true. Multiple statements must be separated by colons. + + + An "Else" clause to be executed if the condition expression evaluates as false. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + The condition expression to be evaluated. + + + A list of statements to be executed if the condition expression evaluates as + true. Multiple statements must be separated by colons. + + + An "Else" clause to be executed if the condition expression evaluates as false. + + + + + Represents a single-line "If ... Then ... Else ..." statement. + + + The condition expression to be evaluated. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + The "Else" keyword. + + + A list of statements to be executed. Multiple statements must be separated by + colons. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + A list of statements to be executed. Multiple statements must be separated by + colons. + + + + + Represents the "Else ..." clause of a single-line "If" statement. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + The "If" statement that begins the "If" block. + + + A list of statements to be executed if the condition expression evaluates as + true. + + + A list of "ElseIf" blocks to be evaluated, in order, if the condition + expression of the "If" statement evaluates as false. + + + An "Else" block to be executed if the condition expression of the "If" + statement and all "ElseIf" blocks evaluate as false. + + + Then "End If" statement. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + The "If" statement that begins the "If" block. + + + A list of statements to be executed if the condition expression evaluates as + true. + + + A list of "ElseIf" blocks to be evaluated, in order, if the condition + expression of the "If" statement evaluates as false. + + + An "Else" block to be executed if the condition expression of the "If" + statement and all "ElseIf" blocks evaluate as false. + + + + + Represents a multi-line "If ... Then ... ElseIf ... Then ... Else ... End If" + block. + + + The "If" statement that begins the "If" block. + + + + + Represents the "If ... Then" statement that begins a multi-line "If" block. + + + The "If" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + + + Represents the "If ... Then" statement that begins a multi-line "If" block. + + + The condition expression to be evaluated. + + + + + Represents an "ElseIf ... Then ..." block. + + + The "ElseIf ... Then" statement the begins the "ElseIf" block. + + + A list of statements to be executed if the condition expression of the "ElseIf" + statement evaluates as true. + + + + + Represents an "ElseIf ... Then ..." block. + + + The "ElseIf ... Then" statement the begins the "ElseIf" block. + + + + + Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. + + + The "ElseIf" keyword. + + + The condition expression to be evaluated. + + + The "Then" keyword. + + + + + Represents the "ElseIf ... Then" statement that begins an "ElseIf" block. + + + The condition expression to be evaluated. + + + + + Represents an "Else ..." block. + + + The "Else" statement that begins the "Else" block. + + + A list of statements to be executed. + + + + + Represents an "Else ..." block. + + + A list of statements to be executed. + + + + + Represents an "Else ..." block. + + + + + Represents the "Else" statement that begins an "Else" block. + + + The "Else" keyword. + + + + + Represents the "Else" statement that begins an "Else" block. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + The "Try" statement that begins the "Try" block. + + + A list of statements to be executed. + + + A list of "Catch" blocks which may be executed if an exception is thrown while + executing the statements in the "Try" block. + + + A "Finally" block to be executed before execution leaves the "Try" block. + + + The "End Try" statement. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + A list of statements to be executed. + + + A list of "Catch" blocks which may be executed if an exception is thrown while + executing the statements in the "Try" block. + + + A "Finally" block to be executed before execution leaves the "Try" block. + + + + + Represents a "Try ... Catch ... Finally ... End Try" block. + + + + + Represents the "Try" statement that begins a "Try" block. + + + The "Try" keyword. + + + + + Represents the "Try" statement that begins a "Try" block. + + + + + Represents a "Catch ..." block. + + + The "Catch" statement that begins the "Catch" block. + + + A list of statements to be executed if an exception is caught by the "Catch" + block. + + + + + Represents a "Catch ..." block. + + + The "Catch" statement that begins the "Catch" block. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + The "Catch" keyword. + + + An identifier declaring a new variable or naming an existing variable to store + the exception caught by the "Catch" statement. + + + A simple "As" clause specifying the type of exception to catch. + + + A "When" clause to filter exceptions before catching. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + An identifier declaring a new variable or naming an existing variable to store + the exception caught by the "Catch" statement. + + + A simple "As" clause specifying the type of exception to catch. + + + A "When" clause to filter exceptions before catching. + + + + + Represents the "Catch ... When ..." statement that begins a "Catch" block. + + + + + Represents the "When ..." clause of a "Catch" statement. + + + The "When" keyword. + + + The filter expression to be evaluated. + + + + + Represents the "When ..." clause of a "Catch" statement. + + + The filter expression to be evaluated. + + + + + Represents a "Finally ..." block of a "Try" block. + + + The "Finally" statement that begins the "Finally" block. + + + A list of statements to be executed. + + + + + Represents a "Finally ..." block of a "Try" block. + + + A list of statements to be executed. + + + + + Represents a "Finally ..." block of a "Try" block. + + + + + Represents the "Finally" statement that begins a "Finally" block. + + + The "Finally" keyword. + + + + + Represents the "Finally" statement that begins a "Finally" block. + + + + + Represents the "Error" statement. + + + The "Error" keyword. + + + The expression that represents the error number. + + + + + Represents the "Error" statement. + + + The expression that represents the error number. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + A representing the specific kind of + OnErrorGoToStatementSyntax. One of OnErrorGoToZeroStatement, + OnErrorGoToMinusOneStatement, OnErrorGoToLabelStatement. + + + The "On" keyword + + + The "Error" keyword. + + + The "GoTo" keyword + + + An optional minus for On Error Goto -1 + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Goto statement. + + + A representing the specific kind of + OnErrorGoToStatementSyntax. One of OnErrorGoToZeroStatement, + OnErrorGoToMinusOneStatement, OnErrorGoToLabelStatement. + + + The name of the label. If the label is a line number, 0 or -1, wraps an + IntegerLiteralToken that is the line number, otherwise, wraps an Identifier. + + + + + Represents an OnError Resume Next statement. + + + The "On" keyword + + + The "Error" keyword. + + + The "Resume" keyword. + + + The "Next" + + + + + Represents an OnError Resume Next statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + A representing the specific kind of + ResumeStatementSyntax. One of ResumeStatement, ResumeLabelStatement, + ResumeNextStatement. + + + The "Resume" keyword. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + A representing the specific kind of + ResumeStatementSyntax. One of ResumeStatement, ResumeLabelStatement, + ResumeNextStatement. + + + The label. The value of this depends on the Kind. If Kind=Resume, returns + Nothing. If Kind=ResumeNext, wraps the keyword "Next", If Kind=ResumeLabel, + wraps an Identifier or IntegerLiteralToken with the label or line number. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + A representing the specific kind of + ResumeStatementSyntax. One of ResumeStatement, ResumeLabelStatement, + ResumeNextStatement. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + The Select Case statement that begins the block. + + + A list of the contained Case blocks. + + + The End Select statement that ends the block. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + The Select Case statement that begins the block. + + + A list of the contained Case blocks. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + The Select Case statement that begins the block. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + The "Select" keyword. + + + The "Case" keyword, if present. + + + The value that branching is based on. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + The value that branching is based on. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a case statement and its subsequent block. + + + The statement that begins the case block. + + + + + Represents a case statement and its subsequent block. + + + A representing the specific kind of CaseBlockSyntax. One + of CaseBlock, CaseElseBlock. + + + The statement that begins the case block. + + + The statements contained in the case block. This might be an empty list. + + + + + Represents a case statement and its subsequent block. + + + A representing the specific kind of CaseBlockSyntax. One + of CaseBlock, CaseElseBlock. + + + The statement that begins the case block. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A representing the specific kind of CaseStatementSyntax. + One of CaseStatement, CaseElseStatement. + + + The "Case" keyword + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A representing the specific kind of CaseStatementSyntax. + One of CaseStatement, CaseElseStatement. + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + A representing the specific kind of CaseStatementSyntax. + One of CaseStatement, CaseElseStatement. + + + A list of clauses associated with this Case. If Kind=CaseElse, then this list + has exactly one child, which is a ElseCaseClause. + + + + + The "Else" part in a Case Else statement. + + + The "Else" keyword. + + + + + The "Else" part in a Case Else statement. + + + + + Represents a single value in a Case. + + + The expression that denotes the value being tested against. + + + + + Represents a range "expression To expression" in a Case. + + + The lower bound of the range. + + + The "To" keyword + + + The upper bound of the range. + + + + + Represents a range "expression To expression" in a Case. + + + The lower bound of the range. + + + The upper bound of the range. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + A representing the specific kind of + RelationalCaseClauseSyntax. One of CaseEqualsClause, CaseNotEqualsClause, + CaseLessThanClause, CaseLessThanOrEqualClause, CaseGreaterThanOrEqualClause, + CaseGreaterThanClause. + + + The "Is" keyword, if present. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + A representing the specific kind of + RelationalCaseClauseSyntax. One of CaseEqualsClause, CaseNotEqualsClause, + CaseLessThanClause, CaseLessThanOrEqualClause, CaseGreaterThanOrEqualClause, + CaseGreaterThanClause. + + + The operator in the relational clause. One of "=", "<", ">", "<=" or + ">=". + + + The expression that denotes the value being tested against. + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + The "SyncLock" keyword. + + + The expression being synchronized on. + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + The expression being synchronized on. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + The Do statement that begins the block. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + A representing the specific kind of DoLoopBlockSyntax. + One of SimpleDoLoopBlock, DoWhileLoopBlock, DoUntilLoopBlock, DoLoopWhileBlock, + DoLoopUntilBlock. + + + The Do statement that begins the block. + + + The statements contained in the block statement. This might be an empty list. + + + The Loop statement that ends the block. + + + + + Represents a Do-Loop block. The Kind property can be used to determine if this + is a Do While, Do Until, Do Loop While, Do Loop Until, or infinite Do Loop. + + + A representing the specific kind of DoLoopBlockSyntax. + One of SimpleDoLoopBlock, DoWhileLoopBlock, DoUntilLoopBlock, DoLoopWhileBlock, + DoLoopUntilBlock. + + + The Do statement that begins the block. + + + The Loop statement that ends the block. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + + + The Do statement that begins a Do-Loop block. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + + + The Do statement that begins a Do-Loop block. + + + A representing the specific kind of DoStatementSyntax. + One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. + + + The "Do" keyword. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + A representing the specific kind of DoStatementSyntax. + One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. + + + The "While expression" or "Until expression" clause of the Do statement, if + present. + + + + + The Do statement that begins a Do-Loop block. + + + A representing the specific kind of DoStatementSyntax. + One of SimpleDoStatement, DoWhileStatement, DoUntilStatement. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + + + The Loop statement that begins a Do-Loop block. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + + + The Loop statement that begins a Do-Loop block. + + + A representing the specific kind of LoopStatementSyntax. + One of SimpleLoopStatement, LoopWhileStatement, LoopUntilStatement. + + + The "Loop" keyword. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + A representing the specific kind of LoopStatementSyntax. + One of SimpleLoopStatement, LoopWhileStatement, LoopUntilStatement. + + + The "While expression" or "Until expression" clause of the Loop statement, if + present. + + + + + The Loop statement that begins a Do-Loop block. + + + A representing the specific kind of LoopStatementSyntax. + One of SimpleLoopStatement, LoopWhileStatement, LoopUntilStatement. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + The boolean expression after the While or Until. + + + + + Represents a "While expression" or "Until expression" in a Do or Loop + statement. The Kind of the clause can be "WhileClause" or "UntilClause" to + indicate which kind of clause. + + + A representing the specific kind of + WhileOrUntilClauseSyntax. One of WhileClause, UntilClause. + + + The "While" or "Until" keyword. + + + The boolean expression after the While or Until. + + + + + The While statement that begins a While...End While block. This statement + always occurs as the Begin of a WhileBlock. + + + The "While" keyword. + + + The boolean expression that controls the While loop. + + + + + The While statement that begins a While...End While block. This statement + always occurs as the Begin of a WhileBlock. + + + The boolean expression that controls the While loop. + + + + + Represents a For block, including the introducing statement, the body and the + "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For statement that begins the block. + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + + + Represents a For block, including the introducing statement, the body and the + "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For statement that begins the block. + + + + + Represents a For Each block, including the introducing statement, the body and + the "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For Each statement that begins the block. + + + The statements contained in the For or For Each loop. This might be an empty + list. + + + The Next statement that ends the block. If two For or For Each statements are + ended by a single Next statement, the inner For will not have a Next statement. + + + + + Represents a For Each block, including the introducing statement, the body and + the "Next" (which can be omitted if a containing For has a Next with multiple + variables). + + + The For Each statement that begins the block. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + The "For" keyword. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The "=" token. + + + The expression denoting the initial value of the iteration. + + + The "To" keyword. + + + The expression denoting the final value of the iteration. + + + The optional Step clause. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The expression denoting the initial value of the iteration. + + + The expression denoting the final value of the iteration. + + + The optional Step clause. + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The expression denoting the initial value of the iteration. + + + The expression denoting the final value of the iteration. + + + + + The Step clause in a For Statement. + + + The "Step" keyword. + + + The expression denoting the step increment. + + + + + The Step clause in a For Statement. + + + The expression denoting the step increment. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + The "For" keyword. + + + The "Each" keyword. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The "In" keyword. + + + The expression denoting the collection to iterate over. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + If the For or For Each statement is of a form that does not declare a new loop + control variable, this is the expression that denotes the loop control + variable. If this loop is of a form that does declare a new control variable, + this is a VariableDeclarator that has the variable being declared. + + + The expression denoting the collection to iterate over. + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + The "Next" keyword. + + + The variables in the Next statement, if present + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + The variables in the Next statement, if present + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + The "Using" keyword. + + + If the Using statement is of a form that does not declare a new variable, this + is the expression used in the using. Otherwise, Nothing is returned. + + + If the Using statement is of a form that declares one or more new variables, + this is the list of variable declarations. Otherwise, Nothing is returned. + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + If the Using statement is of a form that does not declare a new variable, this + is the expression used in the using. Otherwise, Nothing is returned. + + + If the Using statement is of a form that declares one or more new variables, + this is the list of variable declarations. Otherwise, Nothing is returned. + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + + + Represents a Throw statement. + + + The "Throw" keyword + + + The expression denoting the value being thrown. + + + + + Represents a Throw statement. + + + The expression denoting the value being thrown. + + + + + Represents a Throw statement. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + The target (left hand side) of the assignment. + + + The source (right hand side) of the assignment. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + A representing the specific kind of + AssignmentStatementSyntax. One of SimpleAssignmentStatement, + MidAssignmentStatement, AddAssignmentStatement, SubtractAssignmentStatement, + MultiplyAssignmentStatement, DivideAssignmentStatement, + IntegerDivideAssignmentStatement, ExponentiateAssignmentStatement, + LeftShiftAssignmentStatement, RightShiftAssignmentStatement, + ConcatenateAssignmentStatement. + + + The target (left hand side) of the assignment. + + + The operator used in the assignment statement. One of "=", "+=", "-=", "*=", + "/=", "\=", "^=", "&=", "<<=" or ">>=". + + + The source (right hand side) of the assignment. + + + + + Represents a left-hand side of a MidAssignment statement. + + + The "Mid" possibly followed by a type character. + + + The argument list. + + + + + Represents a left-hand side of a MidAssignment statement. + + + The "Mid" possibly followed by a type character. + + + The argument list. + + + + + Represent a call statement (also known as a invocation statement). + + + The "Call" keyword. + + + The expression denoting the call. This could be an Invocation or a MemberAccess + (in the case where no parentheses were supplied.) + + + + + Represent a call statement (also known as a invocation statement). + + + The expression denoting the call. This could be an Invocation or a MemberAccess + (in the case where no parentheses were supplied.) + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The event being accessed. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + The event being accessed. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + A representing the specific kind of + AddRemoveHandlerStatementSyntax. One of AddHandlerStatement, + RemoveHandlerStatement. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The "," token. + + + The delegate being added or removed. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + A representing the specific kind of + AddRemoveHandlerStatementSyntax. One of AddHandlerStatement, + RemoveHandlerStatement. + + + The "AddHandler" or "RemoveHandler" keyword. + + + The event being accessed. + + + The delegate being added or removed. + + + + + Represent a RaiseEvent statement. + + + The "RaiseEvent" keyword + + + The name of the event being raised. + + + The argument list, if present. + + + + + Represent a RaiseEvent statement. + + + The name of the event being raised. + + + The argument list, if present. + + + + + Represent a RaiseEvent statement. + + + The name of the event being raised. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + The "With" keyword. + + + The expression that is the operand of the With statement. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + The expression that is the operand of the With statement. + + + + + Represents a ReDim statement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + A representing the specific kind of + ReDimStatementSyntax. One of ReDimStatement, ReDimPreserveStatement. + + + The "ReDim" keyword. + + + Returns Nothing if Kind=ReDim, returns the "Preserve" keyword if + Kind=RedimPreserve. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + A representing the specific kind of + ReDimStatementSyntax. One of ReDimStatement, ReDimPreserveStatement. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement. + + + A representing the specific kind of + ReDimStatementSyntax. One of ReDimStatement, ReDimPreserveStatement. + + + The list of ReDim clauses. + + + + + Represents a ReDim statement clause. + + + The target of the ReDim statement. + + + The ArraySizeInitializationModifier. + + + + + Represents an "Erase" statement. + + + The "Erase" keyword. + + + A list of expressions denoting the arrays to erase. + + + + + Represents an "Erase" statement. + + + A list of expressions denoting the arrays to erase. + + + + + Represents an "Erase" statement. + + + A list of expressions denoting the arrays to erase. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + A representing the specific kind of + LiteralExpressionSyntax. One of CharacterLiteralExpression, + TrueLiteralExpression, FalseLiteralExpression, NumericLiteralExpression, + DateLiteralExpression, StringLiteralExpression, NothingLiteralExpression. + + + The token that represents the literal. The Kind property determines what type + this property returns: Kind=IntegerLiteral ==> Returns IntegerLiteralToken. + Kind=CharacterLiteral ==> Returns CharacterLiteralToken. Kind=DecimalLiteral + ==> Returns DecimalLiteralToken Kind=FloatingLiteral ==> Returns + FloatingLiteralToken Kind=DateLiteral ==> Returns DateLiteralToken + Kind=StringLiteral ==> Returns StringLiteralToken Kind=BooleanLiteral ==> + Returns Keyword (with it's kind being TrueKeyword or FalseKeyword) + Kind=NothingLiteral ==> Returns Keyword (with it's kind being + NothingKeyword) + + + + + Represents a parenthesized expression. + + + The "(" token + + + The expression inside the parentheses. + + + The ")" token + + + + + Represents a parenthesized expression. + + + The expression inside the parentheses. + + + + + Represents a tuple literal expression. + + + The "(" token + + + The list of tuple arguments. + + + The ")" token + + + + + Represents a tuple literal expression. + + + The list of tuple arguments. + + + + + Represents a tuple literal expression. + + + The list of tuple arguments. + + + + + Represents a tuple type expression. + + + The "(" token + + + The list of tuple elements. + + + The ")" token + + + + + Represents a tuple type expression. + + + The list of tuple elements. + + + + + Represents a tuple type expression. + + + The list of tuple elements. + + + + + Represents a single declaration of a tuple element supplying only the type. + + + The type-name part of the tuple element syntax. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + The name of the element. + + + A simple "As" clause specifying the type of the tuple element. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + The name of the element. + + + + + Represents a single declaration of a tuple element supplying element name and + optionally a type. + + + The name of the element. + + + + + Identifies the special instance "Me" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "Me" + + + + + Identifies the special instance "MyBase" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "MyBase" + + + + + Identifies the special instance "MyClass" + + + The "Me", "MyClass" or "MyBase" keyword. + + + + + Identifies the special instance "MyClass" + + + + + Represents a GetType expression. + + + The "GetType" keyword. + + + The "(" token. + + + The type to get the Type object for. This can be an open generic type. + + + The ")" token. + + + + + Represents a GetType expression. + + + The type to get the Type object for. This can be an open generic type. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The expression being tested. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + The expression being tested. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + A representing the specific kind of + TypeOfExpressionSyntax. One of TypeOfIsExpression, TypeOfIsNotExpression. + + + The "TypeOf" keyword. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a TypeOf...Is or IsNot expression. + + + A representing the specific kind of + TypeOfExpressionSyntax. One of TypeOfIsExpression, TypeOfIsNotExpression. + + + The expression being tested. + + + The "Is" or "IsNot" keyword. + + + The name of the type being tested against. + + + + + Represents a GetXmlNamespace expression. + + + The "GetXmlNamespace" keyword. + + + The "(" token. + + + The Xml namespace name being referenced. + + + The ")" token. + + + + + Represents a GetXmlNamespace expression. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The expression on the left-hand-side of the "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + A representing the specific kind of + MemberAccessExpressionSyntax. One of SimpleMemberAccessExpression, + DictionaryAccessExpression. + + + The expression on the left-hand-side of the "." or "!" token. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + A representing the specific kind of + MemberAccessExpressionSyntax. One of SimpleMemberAccessExpression, + DictionaryAccessExpression. + + + The "." or "!" token. + + + The identifier after the "." or "!" token. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The "@" part of .@ or the second "." of "...". + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The "@" part of .@ or the second "." of "...". + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The "@" part of .@ or the second "." of "...". + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + A representing the specific kind of + XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, + XmlDescendantAccessExpression, XmlAttributeAccessExpression. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The initial dot "." part of the separator. + + + The "@" part of .@ or the second "." of "...". + + + The third "." in a "..." separator. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + A representing the specific kind of + XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, + XmlDescendantAccessExpression, XmlAttributeAccessExpression. + + + The expression on the left-hand-side of the ".", ".@" or "..." . + + + The "@" part of .@ or the second "." of "...". + + + The identifier after the ".", ".@" or "..." + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + A representing the specific kind of + XmlMemberAccessExpressionSyntax. One of XmlElementAccessExpression, + XmlDescendantAccessExpression, XmlAttributeAccessExpression. + + + The identifier after the ".", ".@" or "..." + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + The target of the call or index expression. + + + The argument list. + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type of the object being initialized. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + An optional From or With clause to initialize the new object. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The type of the object being initialized. + + + The argument list, if present. If no argument list was supplied, Nothing is + returned. + + + An optional From or With clause to initialize the new object. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + The type of the object being initialized. + + + + + Represents a New expression that create an object of anonymous type. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The With clause to initialize the new object. + + + + + Represents a New expression that create an object of anonymous type. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The With clause to initialize the new object. + + + + + Represents a New expression that create an object of anonymous type. + + + The With clause to initialize the new object. + + + + + Represents an expression that creates a new array. + + + The "New" keyword. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The element type of the array being created. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + A list of array modifiers such as "()" or "(,)". If no array modifiers were + present, an empty list is returned. + + + The initializer including the braces. + + + + + Represents an expression that creates a new array. + + + A list of all attribute lists on the type. If no attributes were specified, an + empty list is returned. + + + The element type of the array being created. + + + The optional array bounds, such as "(4)" or "(0 to 5, 0 To 6)". + + + The initializer including the braces. + + + + + Represents an expression that creates a new array. + + + The element type of the array being created. + + + The initializer including the braces. + + + + + Represents an expression that creates a new array without naming the element + type. + + + The "{" token. + + + The list of initializers between the braces. + + + The "}" token. + + + + + Represents an expression that creates a new array without naming the element + type. + + + The list of initializers between the braces. + + + + + Represents an expression that creates a new array without naming the element + type. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The expression being cast. + + + The type the expression is being cast to. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The expression being cast. + + + The type the expression is being cast to. + + + + + The "CType", "DirectCast" or "TryCast" keyword. + + + The "(" token. + + + The expression being cast. + + + The "," token. + + + The type the expression is being cast to. + + + The ")" token. + + + + + The expression being cast. + + + The type the expression is being cast to. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + The keyword that was used in the cast operation. + + + The "(" token. + + + The expression being cast. + + + The ")" token. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + The keyword that was used in the cast operation. + + + The expression being cast. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + The left operand. + + + The right operand. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + A representing the specific kind of + BinaryExpressionSyntax. One of AddExpression, SubtractExpression, + MultiplyExpression, DivideExpression, IntegerDivideExpression, + ExponentiateExpression, LeftShiftExpression, RightShiftExpression, + ConcatenateExpression, ModuloExpression, EqualsExpression, NotEqualsExpression, + LessThanExpression, LessThanOrEqualExpression, GreaterThanOrEqualExpression, + GreaterThanExpression, IsExpression, IsNotExpression, LikeExpression, + OrExpression, ExclusiveOrExpression, AndExpression, OrElseExpression, + AndAlsoExpression. + + + The left operand. + + + The right operand. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The token that is the operator. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + The expression being operated on. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + A representing the specific kind of + UnaryExpressionSyntax. One of UnaryPlusExpression, UnaryMinusExpression, + NotExpression, AddressOfExpression. + + + The token that is the operator. + + + The expression being operated on. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The "If" keyword + + + The "(" token + + + The first expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The ")" token + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The first expression inside the parentheses. + + + The second expression inside the parentheses. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The "If" keyword + + + The "(" token + + + The first expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The "," token. + + + The second expression inside the parentheses. + + + The ")" token + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + The first expression inside the parentheses. + + + The second expression inside the parentheses. + + + The second expression inside the parentheses. + + + + + Represents a single line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a single line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a single line lambda expression. + + + A representing the specific kind of + SingleLineLambdaExpressionSyntax. One of SingleLineFunctionLambdaExpression, + SingleLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + Statement (single-line Sub lambda) or Expression (single-line Function). + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + A representing the specific kind of + MultiLineLambdaExpressionSyntax. One of MultiLineFunctionLambdaExpression, + MultiLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + The body of the lambda. Depending on the kind of lambda, this is either a + StatementBody (multi-line lambda), Statement (single-line Sub lambda) or + Expression (single-line Function). This might be an empty list. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents a multi-line lambda expression. + + + A representing the specific kind of + MultiLineLambdaExpressionSyntax. One of MultiLineFunctionLambdaExpression, + MultiLineSubLambdaExpression. + + + The header part of the lambda that includes the "Sub" or "Function" keyword, + the argument list and return type. + + + Returns the "End Sub" or "End Function" statement if this is a multi-line + lambda. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + + + Represents the header part of a lambda expression + + + A representing the specific kind of LambdaHeaderSyntax. + One of SubLambdaHeader, FunctionLambdaHeader. + + + A list of all attribute lists on this declaration. If no attributes were + specified, Nothing is returned. + + + A list of all the modifier tokens that were present on this declaration. If no + modifiers were specified, an empty list is returned. A bitfield version of all + the modifiers ORed together, which is in many cases easier to use, can be + obtained with the Modifiers property. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + The method's parameter list including the parentheses. If no parameter list was + present, Nothing is returned. + + + The "As" clause that describes the return type. If no As clause was present, + Nothing is returned. + + + + + Represents the header part of a lambda expression + + + A representing the specific kind of LambdaHeaderSyntax. + One of SubLambdaHeader, FunctionLambdaHeader. + + + The "Sub" or "Function" keyword that introduces this lambda expression. + + + + + Represents a parenthesized argument list. + + + The "(" token. + + + The list of arguments. This may be empty. Omitted argument are represented by + an OmittedArgumentSyntax node. + + + The ")" token. + + + + + Represents a parenthesized argument list. + + + The list of arguments. This may be empty. Omitted argument are represented by + an OmittedArgumentSyntax node. + + + + + Represents a parenthesized argument list. + + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + An empty token because all non terminals must have a token. + + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + + + Represents an argument that is just an optional argument name and an + expression. + + + The optional name and ":=" prefix of a named argument. + + + The expression that is the argument. + + + + + Represents an argument that is just an optional argument name and an + expression. + + + The expression that is the argument. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + The name used to identify the named argument. + + + The ":=" token. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + The name used to identify the named argument. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + The lower bound of the range. This is typically the integer constant zero. + + + The "To" keyword. + + + The upper bound of the range. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + The lower bound of the range. This is typically the integer constant zero. + + + The upper bound of the range. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + A list of all the query operators in this query expression. This list always + contains at least one operator. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + A list of all the query operators in this query expression. This list always + contains at least one operator. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + The name of the range variable being defined. + + + Describes the type of the variable being defined. + + + The "In" keyword. + + + The expression that serves as the source of items for the range variable. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + The name of the range variable being defined. + + + Describes the type of the variable being defined. + + + The expression that serves as the source of items for the range variable. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + The name of the range variable being defined. + + + The expression that serves as the source of items for the range variable. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the expression. + + + The expression used to initialize the expression variable. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + The expression used to initialize the expression variable. + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + The optional name and type of the expression range variable. If omitted, the + name of the expression range variable is inferred from the aggregation + expression. + + + The name of the aggregation function. The "Group" aggregation function is + represented by the identifier "Group". + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + The name of the aggregation function. The "Group" aggregation function is + represented by the identifier "Group". + + + + + Represents the name and optional type of an expression range variable. + + + The name of the variable being defined. + + + Describes the type of the variable being defined. + + + The "=" token. + + + + + Represents the name and optional type of an expression range variable. + + + The name of the variable being defined. + + + Describes the type of the variable being defined. + + + + + Represents the name and optional type of an expression range variable. + + + The name of the variable being defined. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + The name of the aggregation function. + + + The "(" token if present. + + + The argument to the aggregation function. + + + The ")" token, if present. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + The name of the aggregation function. + + + The argument to the aggregation function. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + The name of the aggregation function. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + The name of the aggregation function. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + The "Group" keyword. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + The "From" keyword. + + + The list of collection variables declared by this From operator. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + The list of collection variables declared by this From operator. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + The list of collection variables declared by this From operator. + + + + + Represents a "Let" query operator. + + + The "Let" keyword. + + + The list of expression range variable being defined by the Let operator. + + + + + Represents a "Let" query operator. + + + The list of expression range variable being defined by the Let operator. + + + + + Represents a "Let" query operator. + + + The list of expression range variable being defined by the Let operator. + + + + + Represents an Aggregate query operator. + + + The "Aggregate" keyword. + + + The list of collection range variables declared by this Aggregate operator. + + + A list of additional query operators. It may be empty. + + + The "Into" keyword. + + + The list of new variables being defined by the aggregation. + + + + + Represents an Aggregate query operator. + + + The list of collection range variables declared by this Aggregate operator. + + + A list of additional query operators. It may be empty. + + + The list of new variables being defined by the aggregation. + + + + + Represents an Aggregate query operator. + + + The list of collection range variables declared by this Aggregate operator. + + + The list of new variables being defined by the aggregation. + + + + + Represents the "Distinct" query operator. + + + The "Distinct" keyword. + + + + + Represents the "Distinct" query operator. + + + + + Represents a "Where" query operator. + + + The "Where" keyword. + + + The boolean expression used for filtering. + + + + + Represents a "Where" query operator. + + + The boolean expression used for filtering. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + A representing the specific kind of + PartitionWhileClauseSyntax. One of SkipWhileClause, TakeWhileClause. + + + The "Skip" or "Take" keyword. + + + The "While" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + A representing the specific kind of + PartitionWhileClauseSyntax. One of SkipWhileClause, TakeWhileClause. + + + The "Skip" or "Take" keyword. + + + The boolean expression used for partitioning. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + Represents the expression with the number of items to take or skip. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + A representing the specific kind of + PartitionClauseSyntax. One of SkipClause, TakeClause. + + + The "Skip" or "Take" keyword. + + + Represents the expression with the number of items to take or skip. + + + + + Represents the "Group By" query operator. + + + The "Group" keyword. + + + The optional list of variables being grouped; the contents of the Group clause. + If none were specified, an empty list is returned. + + + The "By" keyword. + + + The key values being used for grouping. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Group By" query operator. + + + The optional list of variables being grouped; the contents of the Group clause. + If none were specified, an empty list is returned. + + + The key values being used for grouping. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Group By" query operator. + + + The key values being used for grouping. + + + The list of new variables that calculate aggregations. + + + + + Represents the "expression Equals expression" condition in a Join. + + + The left expression in the Join condition. + + + The "Equals" keyword. + + + The right expression in the Join condition. + + + + + Represents the "expression Equals expression" condition in a Join. + + + The left expression in the Join condition. + + + The right expression in the Join condition. + + + + + Represents a Join query operator. + + + The "Join" keyword. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The "On" keyword. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Represents a Join query operator. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Represents a Join query operator. + + + Defines the collection range variables being joined to. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + + + Represents the "Group Join" query operator. + + + The "Group" keyword. + + + The "Join" keyword. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The "On" keyword. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + The "Into" keyword. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Group Join" query operator. + + + Defines the collection range variables being joined to. + + + An additional Join or Group Join query operator. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Group Join" query operator. + + + Defines the collection range variables being joined to. + + + The conditions indicating what expressions to compare during the join. Each + condition is a JoinCondition, and the separators are "And" keywords. + + + The list of new variables that calculate aggregations. + + + + + Represents the "Order By" query operator. + + + The "Order" keyword + + + The "By" keyword. + + + The list of OrderExpression's to sort by. + + + + + Represents the "Order By" query operator. + + + The list of OrderExpression's to sort by. + + + + + Represents the "Order By" query operator. + + + The list of OrderExpression's to sort by. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + The expression to sort by. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + A representing the specific kind of OrderingSyntax. One + of AscendingOrdering, DescendingOrdering. + + + The expression to sort by. + + + The "Ascending" or "Descending" keyword, if present. To determine whether to + sort in ascending or descending order, checking the Kind property is easier. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + A representing the specific kind of OrderingSyntax. One + of AscendingOrdering, DescendingOrdering. + + + The expression to sort by. + + + + + Represents the "Select" query operator. + + + The "Select" keyword. + + + The list of expression range variables being defined by the Select query + operator. + + + + + Represents the "Select" query operator. + + + The list of expression range variables being defined by the Select query + operator. + + + + + Represents the "Select" query operator. + + + The list of expression range variables being defined by the Select query + operator. + + + + + Represents an XML Document literal expression. + + + + + Represents an XML Document literal expression. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + + + Represents an XML element with content in an XML literal expression. + + + + + Represents an XML element with content in an XML literal expression. + + + + + Represents Xml text. + + + A list of all the text tokens in the Xml text. This list always contains at + least one token. + + + + + Represents Xml text. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + Represents an empty XML element of the form <element /> + + + + + Represents an empty XML element of the form <element /> + + + + + Represents an empty XML element of the form <element /> + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + + + Represents an XML CDATA section in an XML literal expression. + + + + + Represents an XML CDATA section in an XML literal expression. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + The type of the elements of the array. + + + Represents the list of "()" or "(,,)" modifiers on the array type. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + The type of the elements of the array. + + + + + A type name that represents a nullable type, such as "Integer?". + + + The kind of type that is this type is a nullable of. Cannot be an array type or + a nullable type. + + + The "?" token. + + + + + A type name that represents a nullable type, such as "Integer?". + + + The kind of type that is this type is a nullable of. Cannot be an array type or + a nullable type. + + + + + Represents an occurrence of a Visual Basic built-in type such as Integer or + String in source code. + + + The keyword that was used to describe the built-in type. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + The identifier in the name. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + The identifier in the name. + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + The identifier in the name. + + + The generic argument list. + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + The identifier in the name. + + + The generic argument list. + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + The part of the name that appears to the left of the dot. This can itself be + any name. + + + The "." token that separates the names. + + + The part of the name that appears to the right of the dot. This must be a + simple identifier. + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + The part of the name that appears to the left of the dot. This can itself be + any name. + + + The part of the name that appears to the right of the dot. This must be a + simple identifier. + + + + + Represents a name in the global namespace. + + + The "Global" keyword. + + + + + Represents a name in the global namespace. + + + + + Represents a parenthesized list of generic type arguments. + + + The "(" token. + + + The "Of" keyword. + + + A list of all the type arguments. + + + The ")" token. + + + + + Represents a parenthesized list of generic type arguments. + + + A list of all the type arguments. + + + + + Represents a parenthesized list of generic type arguments. + + + A list of all the type arguments. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + Represent a Yield statement. + + + The "Yield" keyword. + + + The expression whose value is being yielded. + + + + + Represent a Yield statement. + + + The expression whose value is being yielded. + + + + + Represents an Await expression. + + + The "Await" keyword. + + + The expression being awaited. + + + + + Represents an Await expression. + + + The expression being awaited. + + + + + Represents an Xml NCName per Namespaces in XML 1.0 + + + The actual text of this token. + + + + + Represents an Xml NCName per Namespaces in XML 1.0 + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + A representing the specific kind of XmlTextTokenSyntax. + One of XmlTextLiteralToken, XmlEntityLiteralToken, + DocumentationCommentLineBreakToken. + + + The actual text of this token. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + A representing the specific kind of XmlTextTokenSyntax. + One of XmlTextLiteralToken, XmlEntityLiteralToken, + DocumentationCommentLineBreakToken. + + + The actual text of this token. + + + + + Represents literal character data in interpolated string expression. + + + The actual text of this token. + + + + + Represents literal character data in interpolated string expression. + + + The actual text of this token. + + + + + Represents a Decimal literal token. + + + The actual text of this token. + + + + + Represents a Decimal literal token. + + + The actual text of this token. + + + + + Represents a Date literal token. + + + The actual text of this token. + + + + + Represents a Date literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents a string literal token. + + + The actual text of this token. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + The list of tokens that were skipped by the parser. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in + source. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in + source. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + The expression on the left-hand-side of the "?". + + + "?" token. + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + The expression on the left-hand-side of the "?". + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + ExpressionSyntax node representing the access expression to be executed when + the object is not null." + + + + + Represents a NameOf expression. + + + The "NameOf" keyword. + + + The "(" token. + + + The argument. + + + The ")" token. + + + + + Represents a NameOf expression. + + + The argument. + + + + + Represents an interpolated string expression. + + + The opening '$"', '$“', or '$”' token. + + + The contents of the interpolated string. + + + The closing '"', '”', or '“' token. + + + + + Represents an interpolated string expression. + + + The contents of the interpolated string. + + + + + Represents an interpolated string expression. + + + The contents of the interpolated string. + + + + + Represents literal text content in an interpolated string. + + + The text token. + + + + + Represents literal text content in an interpolated string. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + The opening curly brace '{' token. + + + The expression whose formatted value should be embedded in the resultant + string. + + + Optional. The alignment clause ',alignment' of the embedded expression. + + + Optional. The format string clause ':formatString' of the embedded expression. + + + The closing curly brace '}' token of the embedded expression. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + The expression whose formatted value should be embedded in the resultant + string. + + + Optional. The alignment clause ',alignment' of the embedded expression. + + + + + Represents an interpolation of an expression in an interpolated string + expression e.g. '{expression[,alignment][:formatString]}'. + + + The expression whose formatted value should be embedded in the resultant + string. + + + + + Represents an alignment clause ',alignment' of an interpolated string embedded + expression. + + + The comma ',' token. + + + An expression representing the alignment of the interpolated expression. + + + + + Represents an alignment clause ',alignment' of an interpolated string embedded + expression. + + + An expression representing the alignment of the interpolated expression. + + + + + Represents a format string clause ':formatString' of an interpolated string + embedded expression. + + + The ':' token. + + + The format string. + + + + + Represents a format string clause ':formatString' of an interpolated string + embedded expression. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + The actual text of this token. + + + + + Trivia nodes represents parts of the program text that are not parts of the + syntactic grammar, such as spaces, newlines, comments, preprocessors + directives, and disabled code. + + + A representing the specific kind of SyntaxTrivia. One of + WhitespaceTrivia, EndOfLineTrivia, ColonTrivia, CommentTrivia, + ConflictMarkerTrivia, LineContinuationTrivia, + DocumentationCommentExteriorTrivia, DisabledTextTrivia. + + + The actual text of this token. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + The "#" token in a preprocessor directive. + + + The "Const" keyword. + + + The name of the pre-processing constant being defined. + + + The "=" token. + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + The name of the pre-processing constant being defined. + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + The name of the pre-processing constant being defined. + + + An expression representing the value of the pre-processing constant being + defined. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + A representing the specific kind of + IfDirectiveTriviaSyntax. One of IfDirectiveTrivia, ElseIfDirectiveTrivia. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + A representing the specific kind of + IfDirectiveTriviaSyntax. One of IfDirectiveTrivia, ElseIfDirectiveTrivia. + + + + + Represents an #Else pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #Else pre-processing directive appearing in source. + + + + + Represents an #End If pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #End If pre-processing directive appearing in source. + + + + + Represents the beginning of a #Region directive appearing in source. + + + The "#" token in a preprocessor directive. + + + The "Region" keyword. + + + The label of the code region being defined. + + + + + Represents the beginning of a #Region directive appearing in source. + + + + + Represents an #End Region directive appearing in source. + + + The "#" token in a preprocessor directive. + + + The "End" keyword. + + + The "Region" keyword. + + + + + Represents an #End Region directive appearing in source. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + The "#" token in a preprocessor directive. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + + + Represents an #r directive appearing in scripts. + + + The "#" token in a preprocessor directive. + + + + + Represents an #r directive appearing in scripts. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + The "#" token in a preprocessor directive. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + + + A trivia with kind EndOfLineTrivia containing both the carriage return And line feed characters. + + + + + A trivia with kind EndOfLineTrivia containing a single line feed character. + + + + + A trivia with kind EndOfLineTrivia containing a single carriage return character. + + + + + A trivia with kind WhitespaceTrivia containing a single space character. + + + + + A trivia with kind WhitespaceTrivia containing a single tab character. + + + + + An elastic trivia with kind EndOfLineTrivia containing both the carriage return And line feed characters. + Elastic trivia are used to denote trivia that was Not produced by parsing source text, And are usually Not + preserved during formatting. + + + + + An elastic trivia with kind EndOfLineTrivia containing a single line feed character. Elastic trivia are used + to denote trivia that was Not produced by parsing source text, And are usually Not preserved during + formatting. + + + + + An elastic trivia with kind EndOfLineTrivia containing a single carriage return character. Elastic trivia + are used to denote trivia that was Not produced by parsing source text, And are usually Not preserved during + formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing a single space character. Elastic trivia are used to + denote trivia that was Not produced by parsing source text, And are usually Not preserved during formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing a single tab character. Elastic trivia are used to + denote trivia that was Not produced by parsing source text, And are usually Not preserved during formatting. + + + + + An elastic trivia with kind WhitespaceTrivia containing no characters. Elastic marker trivia are included + automatically by factory methods when trivia Is Not specified. Syntax formatting will replace elastic + markers with appropriate trivia. + + + + + Creates a trivia with kind EndOfLineTrivia containing the specified text. + + The text of the end of line. Any text can be specified here, however only carriage return And + line feed characters are recognized by the parser as end of line. + + + + Creates a trivia with kind EndOfLineTrivia containing the specified text. Elastic trivia are used to + denote trivia that was Not produced by parsing source text, And are usually Not preserved during formatting. + + The text of the end of line. Any text can be specified here, however only carriage return And + line feed characters are recognized by the parser as end of line. + + + + Creates a trivia with kind WhitespaceTrivia containing the specified text. + + The text of the whitespace. Any text can be specified here, however only specific + whitespace characters are recognized by the parser. + + + + Creates a trivia with kind WhitespaceTrivia containing the specified text. Elastic trivia are used to + denote trivia that was Not produced by parsing source text, And are usually Not preserved during formatting. + + The text of the whitespace. Any text can be specified here, however only specific + whitespace characters are recognized by the parser. + + + + Names on the right of qualified names and member access expressions are not stand-alone expressions. + This method returns the appropriate parent of name syntax nodes that are on right of these constructs. + + + + Creates a token with kind IntegerLiteralToken from a 4-byte signed integer value. + The 4-byte signed integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 4-byte signed integer value. + The raw text of the literal. The 4-byte signed integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 4-byte signed integer value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte signed integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind IntegerLiteralToken from a 4-byte unsigned integer + value. + The 4-byte unsigned integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 4-byte unsigned integer value. + The raw text of the literal. + The 4-byte unsigned integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 4-byte unsigned integer value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte unsigned integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind IntegerLiteralToken from an 8-byte signed integer value. + The 8-byte signed integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 8-byte signed integer value. + The raw text of the literal. + The 8-byte signed integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 8-byte signed integer value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte signed integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind IntegerLiteralToken from an 8-byte unsigned integer value. + The 8-byte unsigned integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 8-byte unsigned integer value. + The raw text of the literal. + The 8-byte unsigned integer value to be represented by the returned token. + + + Creates a token with kind IntegerLiteralToken from the text and corresponding 8-byte unsigned integer value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte unsigned integer value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind FloatingLiteralToken from a 4-byte floating point value. + The 4-byte floating point value to be represented by the returned token. + + + Creates a token with kind FloatingLiteralToken from the text and corresponding 4-byte floating point value. + The raw text of the literal. + The 4-byte floating point value to be represented by the returned token. + + + Creates a token with kind FloatingLiteralToken from the text and corresponding 4-byte floating point value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The 4-byte floating point value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind FloatingLiteralToken from an 8-byte floating point value. + The 8-byte floating point value to be represented by the returned token. + + + Creates a token with kind FloatingLiteralToken from the text and corresponding 8-byte floating point value. + The raw text of the literal. + The 8-byte floating point value to be represented by the returned token. + + + Creates a token with kind FloatingLiteralToken from the text and corresponding 8-byte floating point value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The 8-byte floating point value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind DecimalLiteralToken from a decimal value. + The decimal value to be represented by the returned token. + + + Creates a token with kind DecimalLiteralToken from the text and corresponding decimal value. + The raw text of the literal. + The decimal value to be represented by the returned token. + + + Creates a token with kind DecimalLiteralToken from the text and corresponding decimal value. + A list of trivia immediately preceding the token. + The raw text of the literal. + The decimal value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind StringLiteralToken from a string value. + The string value to be represented by the returned token. + + + Creates a token with kind StringLiteralToken from the text and corresponding string value. + The raw text of the literal, including quotes and escape sequences. + The string value to be represented by the returned token. + + + Creates a token with kind StringLiteralToken from the text and corresponding string value. + A list of trivia immediately preceding the token. + The raw text of the literal, including quotes and escape sequences. + The string value to be represented by the returned token. + A list of trivia immediately following the token. + + + Creates a token with kind CharacterLiteralToken from a character value. + The character value to be represented by the returned token. + + + Creates a token with kind CharacterLiteralToken from the text and corresponding character value. + The raw text of the literal, including quotes and escape sequences. + The character value to be represented by the returned token. + + + Creates a token with kind CharacterLiteralToken from the text and corresponding character value. + A list of trivia immediately preceding the token. + The raw text of the literal, including quotes and escape sequences. + The character value to be represented by the returned token. + A list of trivia immediately following the token. + + + + Creates an xml documentation comment that abstracts xml syntax creation. + + + A list of xml node syntax that will be the content within the xml documentation comment + (e.g. a summary element, a returns element, exception element and so on). + + + + + Creates a summary element within an xml documentation comment. + + A list of xml node syntax that will be the content within the summary element. + + + + Creates a summary element within an xml documentation comment. + + A list of xml node syntax that will be the content within the summary element. + + + + Creates a see element within an xml documentation comment. + + A cref syntax node that points to the referenced item (e.g. a class, struct). + + + + Creates a seealso element within an xml documentation comment. + + A cref syntax node that points to the referenced item (e.g. a class, struct). + + + + Creates a seealso element within an xml documentation comment. + + The uri of the referenced item. + A list of xml node syntax that will be used as the link text for the referenced item. + + + + Creates a threadsafety element within an xml documentation comment. + + + + + Creates a threadsafety element within an xml documentation comment. + + Indicates whether static member of this type are safe for multi-threaded operations. + Indicates whether instance members of this type are safe for multi-threaded operations. + + + + + Creates a syntax node for a name attribute in a xml element within a xml documentation comment. + + The value of the name attribute. + + + + Creates a syntax node for a preliminary element within a xml documentation comment. + + + + + Creates a syntax node for a cref attribute within a xml documentation comment. + + The used for the xml cref attribute syntax. + + + + Creates a syntax node for a cref attribute within a xml documentation comment. + + The used for the xml cref attribute syntax. + The kind of the quote for the referenced item in the cref attribute. + + + + Creates a remarks element within an xml documentation comment. + + A list of xml node syntax that will be the content within the remarks element. + + + + Creates a remarks element within an xml documentation comment. + + A list of xml node syntax that will be the content within the remarks element. + + + + Creates a returns element within an xml documentation comment. + + A list of xml node syntax that will be the content within the returns element. + + + + Creates a returns element within an xml documentation comment. + + A list of xml node syntax that will be the content within the returns element. + + + + Creates the syntax representation of an xml value element (e.g. for xml documentation comments). + + A list of xml syntax nodes that represents the content of the value element. + + + + Creates the syntax representation of an xml value element (e.g. for xml documentation comments). + + A list of xml syntax nodes that represents the content of the value element. + + + + Creates the syntax representation of an exception element within xml documentation comments. + + Syntax representation of the reference to the exception type. + A list of syntax nodes that represents the content of the exception element. + + + + Creates the syntax representation of an exception element within xml documentation comments. + + Syntax representation of the reference to the exception type. + A list of syntax nodes that represents the content of the exception element. + + + + Creates the syntax representation of a permission element within xml documentation comments. + + Syntax representation of the reference to the permission type. + A list of syntax nodes that represents the content of the permission element. + + + + Creates the syntax representation of a permission element within xml documentation comments. + + Syntax representation of the reference to the permission type. + A list of syntax nodes that represents the content of the permission element. + + + + Creates the syntax representation of an example element within xml documentation comments. + + A list of syntax nodes that represents the content of the example element. + + + + Creates the syntax representation of an example element within xml documentation comments. + + A list of syntax nodes that represents the content of the example element. + + + + Creates the syntax representation of a para element within xml documentation comments. + + A list of syntax nodes that represents the content of the para element. + + + + Creates the syntax representation of a para element within xml documentation comments. + + A list of syntax nodes that represents the content of the para element. + + + + Creates the syntax representation of a param element within xml documentation comments (e.g. for + documentation of method parameters). + + The name of the parameter. + A list of syntax nodes that represents the content of the param element (e.g. + the description and meaning of the parameter). + + + + Creates the syntax representation of a param element within xml documentation comments (e.g. for + documentation of method parameters). + + The name of the parameter. + A list of syntax nodes that represents the content of the param element (e.g. + the description and meaning of the parameter). + + + + Creates the syntax representation of a paramref element within xml documentation comments (e.g. for + referencing particular parameters of a method). + + The name of the referenced parameter. + + + + Creates the syntax representation of a see element within xml documentation comments, + that points to the 'null' language keyword. + + + + + Creates the syntax representation of a see element within xml documentation comments, + that points to a language keyword. + + The language keyword to which the see element points to. + + + + Creates the syntax representation of a placeholder element within xml documentation comments. + + A list of syntax nodes that represents the content of the placeholder element. + + + + Creates the syntax representation of a placeholder element within xml documentation comments. + + A list of syntax nodes that represents the content of the placeholder element. + + + + Creates the syntax representation of a named empty xml element within xml documentation comments. + + The name of the empty xml element. + + + + Creates the syntax representation of a named xml element within xml documentation comments. + + The name of the empty xml element. + A list of syntax nodes that represents the content of the xml element. + + + + Creates the syntax representation of a named xml element within xml documentation comments. + + The name of the empty xml element. + A list of syntax nodes that represents the content of the xml element. + + + + Creates the syntax representation of an xml element that spans multiple text lines. + + The name of the xml element. + A list of syntax nodes that represents the content of the xml multi line element. + + + + Creates the syntax representation of an xml element that spans multiple text lines. + + The name of the xml element. + A list of syntax nodes that represents the content of the xml multi line element. + + + + Creates the syntax representation of an xml text that contains a newline token with a documentation comment + exterior trivia at the end (continued documentation comment). + + The raw text within the new line. + + + + Creates the syntax representation of an xml newline token with a documentation comment exterior trivia at + the end (continued documentation comment). + + The raw text within the new line. + + + + Creates a token with kind XmlTextLiteralNewLineToken. + + The raw text of the literal. + The xml text new line value. + A list of trivia immediately preceding the token. + A list of trivia immediately following the token. + + + + Creates the syntax representation of an xml newline token for xml documentation comments. + + The raw text within the new line. + + If set to true, a documentation comment exterior token will be added to the trailing trivia + of the new token. + + + + Generates the syntax representation of a xml text node (e.g. for xml documentation comments). + + The string literal used as the text of the xml text node. + + + + Generates the syntax representation of a xml text node (e.g. for xml documentation comments). + + A list of text tokens used as the text of the xml text node. + + + + Generates the syntax representation of an xml text literal. + + The text used within the xml text literal. + + + + Generates the syntax representation of an xml text literal. + + The raw text of the literal. + The text used within the xml text literal. + + + + Helper method that replaces less-than and greater-than characters with brackets. + + The original token that is to be replaced. + The new rewritten token. + Returns the new rewritten token with replaced characters. + + + + Determines if two trees are the same, disregarding trivia differences. + + The original tree. + The new tree. + + True to ignore any differences of nodes inside bodies of methods, operators, constructors and accessors, and field and auto-property initializers, + otherwise all nodes and tokens must be equivalent. + + + + + Determines if two syntax nodes are the same, disregarding trivia differences. + + The old node. + The new node. + + True to ignore any differences of nodes inside bodies of methods, operators, constructors and accessors, and field and auto-property initializers, + otherwise all nodes and tokens must be equivalent. + + + + + Determines if two syntax nodes are the same, disregarding trivia differences. + + The old node. + The new node. + + If specified called for every child syntax node (not token) that is visited during the comparison. + It it returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Determines if two syntax tokens are the same, disregarding trivia differences. + + The old token. + The new token. + + + + Determines if two lists of tokens are the same, disregarding trivia differences. + + The old token list. + The new token list. + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If specified called for every child syntax node (not token) that is visited during the comparison. + It returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Determines if two lists of syntax nodes are the same, disregarding trivia differences. + + The old list. + The new list. + + If specified called for every child syntax node (not token) that is visited during the comparison. + It returns true the child is recursively visited, otherwise the child and its subtree is disregarded. + + + + + Determines if a submission contains a LINQ query not followed by an empty line. + + Examples: + 1. Dim x = 1 returns false since the statement is not a LINQ query + 2. + Dim x = FROM {1, 2, 3} + + return false since the statement is followed by an empty new line. + 3. Dim x = FROM {1, 2, 3} returns true since the LINQ statement is not followed by an empty new line. + + Last expected token of the last statement in a submission. + Top level statement which token is part of. + Token that marks the end of submission. + + + + Determines if a submission is complete. + Returns false if the syntax is valid but incomplete. + Returns true if the syntax is invalid or complete. + Throws in case the tree is null. + Throws in case the tree is not a submission. + + Syntax tree. + + + + Create a new syntax tree from a syntax node. + + + + + Produces a syntax tree by parsing the source text. + + + + + Produces a syntax tree by parsing the source text. + + + + + Produces a syntax tree by parsing the source text. + + + + + Produces a syntax tree by parsing the source text. + + + + +Parse the input for leading trivia. + + The input string + The starting offset in the string + + + + Parse the input for trailing trivia. + + The input string + The starting offset in the string + + + + Parse one token. + + The input string + The starting offset in the string + Scan using rules for the start of a statement + + + + Parse tokens in the input. + Since this API does not create a that owns all produced tokens, + the API may yield surprising results for + the produced tokens and its behavior is generally unspecified. + + The input string + The starting offset in the string + The position of the first token + + + + Parse a name. + + The input string + The starting offset in the string + + + + Parse a type name. + + The input string + The starting offset in the string + + + + Parse a type name. + + The input string + The starting offset in the string + + + + Parse an expression. + + The input string + The starting offset in the string + + + + Parse an executable statement. + + The input string + The starting offset in the string + + + + Parse a compilation unit (a single source file). + + The input string + The starting offset in the string + + + + Parse a parameter list. + + The input string + The starting offset in the string + + + + Parse an argument list. + + The input string + The starting offset in the string + + + + Helper method for wrapping a string and offset in a SourceText. + + + + + Try parse the attribute represented as a stand-alone string like [cref="A.B"] and recognize + 'cref' and 'name' attributes like in documentation-comment mode. This method should only be + used internally from code handling documentation comment includes. + + + + + Create a bracketed identifier. + + + + + Create a bracketed identifier. + + + + + Create a missing identifier. + + + + + Create a missing contextual keyword. + + + + + Create a missing keyword. + + + + + Create a missing punctuation mark. + + + + + Create a missing string literal. + + + + + Create a missing character literal. + + + + + Create a missing integer literal. + + + + + Creates a copy of a token. + + + + The new token + + + + Creates an empty list of syntax nodes. + + The specific type of the element nodes. + + + + Creates a singleton list of syntax nodes. + + The specific type of the element nodes. + The single element node. + + + + Creates a list of syntax nodes. + + The specific type of the element nodes. + A sequence of element nodes. + + + + Creates an empty list of tokens. + + + + + Creates a singleton list of tokens. + + The single token. + + + + Creates a list of tokens. + + An array of tokens. + + + + Creates a list of tokens. + + + + + + Creates an empty list of trivia. + + + + + Creates a singleton list of trivia. + + A single trivia. + + + + Creates a list of trivia. + + An array of trivia. + + + + Creates a list of trivia. + + A sequence of trivia. + + + + Creates an empty separated list. + + The specific type of the element nodes. + + + + Creates a singleton separated list. + + The specific type of the element nodes. + A single node. + + + + Creates a separated list of nodes from a sequence of nodes, synthesizing comma separators in between. + + The specific type of the element nodes. + A sequence of syntax nodes. + + + + Creates a separated list of nodes from a sequence of nodes and a sequence of separator tokens. + + The specific type of the element nodes. + A sequence of syntax nodes. + A sequence of token to be interleaved between the nodes. The number of tokens must + be one less than the number of nodes. + + + + Creates a separated list from a sequence of nodes or tokens. + The sequence must start with a node and alternate between nodes and separator tokens. + + The specific type of the element nodes. + A alternating sequence of nodes and tokens. + + + + Creates a separated list from a . + The must start with a node and alternate between nodes and separator tokens. + + The specific type of the element nodes. + An alternating list of nodes and tokens. + + + + Creates an empty . + + + + + Creates a from a sequence of nodes and tokens. + + A sequence of nodes and tokens. + + + + Creates a from one or more nodes and tokens. + + An array of nodes and tokens. + + + + Provides members for determining Syntax facts about characters and Unicode conversions. + + + + + Return keyword or punctuation text based on SyntaxKind + + + + + Determines if Unicode character represents a whitespace. + + The Unicode character. + A boolean value set to True if character represents whitespace. + + + + Determines if Unicode character represents a XML whitespace. + + The unicode character + A boolean value set to True if character represents XML whitespace. + + + + Determines if the Unicode character is a newline character. + + The Unicode character. + A boolean value set to True if character is a newline character. + + + + Determines if the unicode character is a colon character. + + The unicode character. + A boolean value set to True if character is a colon character. + + + + Determines if the unicode character is a underscore character. + + The unicode character. + A boolean value set to True if character is an underscore character. + + + + Determines if the unicode character is a hash character. + + The unicode character. + A boolean value set to True if character is a hash character. + + + + Determines if the Unicode character can be the starting character of a Visual Basic identifier. + + The Unicode character. + A boolean value set to True if character can be part of a valid start character in an identifier. + + + + Determines if the Unicode character can be a part of a Visual Basic identifier. + + The Unicode character. + A boolean value set to True if character can be part of a valid identifier. + + + + Determines if the name is a valid identifier. + + The identifier name. + A boolean value set to True if name is valid identifier. + + + + Creates a half width form Unicode character string. + + The text representing the original identifier. This can be in full width or half width Unicode form. + A string representing the text in a half width Unicode form. + + + + matches one char or another. + Typical usage is for matching lowercase and uppercase. + + + + + matches one char or another. + it will try normal width and then fullwidth variations. + Typical usage is for matching lowercase and uppercase. + + + + + Determine if the token instance represents a syntax trivia such as comment, whitespace, etc... + + + + + Get all reserved and contextual keywords + + + + + Helper to check whether the token is a predefined type + + True if it is a predefined type + + + + Helper to check whether the token is a predefined type OR Variant keyword + + True if it is a predefined type OR Variant keyword + + + + Returns true if the node is the object of an invocation expression + + + + + Returns true if the node is the operand of an AddressOf expression + + + + + Returns true if the node is the operand of an AddressOf expression, or the object + of an invocation. This is used for special binding rules around the return value variable + inside Functions and Property Get accessors. + + + + + Determines if position is before or within the span of a node, or in the trailing trivia of a node + up to, but not including, a newline or colon trivia (which mark the end of a statement.) + + + + + Determines if position is within the span of a node, or in the trailing trivia of a node + up to, but not including, a newline or colon trivia (which mark the end of a statement.) + + + + + Determines if possibleLambda is a lambda expression and position is in the interior. + + + + + If "node" is a block statement return the Begin statement of "node", otherwise return "node". + + + + + Checks if the SyntaxNode is an attribute name. To be an attribute name, the syntax + must be parented by an Attribute and the node itself must be equal to the Attribute.Name + property. + + + + + Is the node the name of a named argument of an invocation or object creation expression, + but not an attribute. + + + + + Return keyword or punctuation text based on SyntaxKind + + + + + Indicates whether a newline may validly follow the specified SyntaxToken without requiring an explicit line continuation sequence ' _' or terminating the containing statement. + + The token to test. This token must be parented by a SyntaxNode. + True if implicit line continuation is allowed after token. + + Refer to "Statements in Visual Basic", 2010 version, http://msdn.microsoft.com/en-us/library/865x40k4(v=vs.100).aspx + for examples. + Implicit line continuation may be used in Visual Basic: + + After a comma (,). + After a less-than sign (<) or before a greater-than sign (>) when you specify an attribute. + After an open parenthesis (() or before a closing parenthesis ()). + After an open curly brace ({) or before a closing curly brace (}). + After an open embedded expression (<%=) or before the close of an embedded expression (%>) within an XML literal. + + Before and after query operators (Aggregate, Distinct, From, Group By, Group Join, Join, Let, + Order By, Select, Skip, Skip While, Take, Take While, Where, In, Into, On, Ascending, and Descending). + You cannot break a line between the keywords of query operators that are made up of multiple keywords + (Order By, Group Join, Take While, and Skip While). + + After the concatenation operator (&). + After assignment operators (=, &=, :=, +=, -=, *=, /=, \=, ^=, <<=, >>=). + After binary operators (+, -, /, *, Mod, <>, <, >, <=, >=, ^, >>, <<, And, AndAlso, Or, OrElse, Like, Xor) within an expression. + After the Is and IsNot operators. + After a less-than sign (<) or before a greater-than sign (>) when you specify an attribute. + + Also after a greater-than sign (>) when you specify an attribute. + However, you must include a line-continuation character (_) when you specify assembly-level or module-level attributes. + + + After a member qualifier character (.) and before the member name. + However, you must include a line-continuation character (_) following a member qualifier character when you are using the With statement or + supplying values in the initialization list for a type. + + + After an XML axis property qualifier (. or ...). + However, you must include a line-continuation character (_) when you specify a member qualifier when you are using the With keyword. + + After the From keyword in a collection initializer. + After the With keyword in a member initializer. + After the In keyword in a For Each statement. + + + + + + Indicates whether a newline may validly precede the specified SyntaxToken without requiring an explicit line continuation sequence ' _' or terminating the containing statement. + + The token to test. This token must be parented by a SyntaxNode. + True if implicit line continuation is allowed after token. + + Refer to "Statements in Visual Basic", 2010 version, http://msdn.microsoft.com/en-us/library/865x40k4(v=vs.100).aspx + for examples. + Implicit line continuation may be used in Visual Basic: + + After a comma (,). + After a less-than sign (<) or before a greater-than sign (>) when you specify an attribute. + After an open parenthesis (() or before a closing parenthesis ()). + After an open curly brace ({) or before a closing curly brace (}). + After an open embedded expression (<%=) or before the close of an embedded expression (%>) within an XML literal. + + Before and after query operators (Aggregate, Distinct, From, Group By, Group Join, Join, Let, + Order By, Select, Skip, Skip While, Take, Take While, Where, In, Into, On, Ascending, and Descending). + You cannot break a line between the keywords of query operators that are made up of multiple keywords + (Order By, Group Join, Take While, and Skip While). + + After the concatenation operator (&). + After assignment operators (=, &=, :=, +=, -=, *=, /=, \=, ^=, <<=, >>=). + After binary operators (+, -, /, *, Mod, <>, <, >, <=, >=, ^, >>, <<, And, AndAlso, Or, OrElse, Like, Xor) within an expression. + After the Is and IsNot operators. + After a less-than sign (<) or before a greater-than sign (>) when you specify an attribute. + + Also after a greater-than sign (>) when you specify an attribute. + However, you must include a line-continuation character (_) when you specify assembly-level or module-level attributes. + + + After a member qualifier character (.) and before the member name. + However, you must include a line-continuation character (_) following a member qualifier character when you are using the With statement or + supplying values in the initialization list for a type. + + + After an XML axis property qualifier (. or ...). + However, you must include a line-continuation character (_) when you specify a member qualifier when you are using the With keyword. + + After the From keyword in a collection initializer. + After the With keyword in a member initializer. + After the In keyword in a For Each statement. + + + + + + Checks whether the element name is reserved. + + For example: + "Item3" is reserved. + "Rest", "ToString" and other members of System.ValueTuple are reserved. + Names that are not reserved return False. + + + + + A custom equality comparer for + + + PERF: The framework specializes EqualityComparer for enums, but only if the underlying type is System.Int32 + Since SyntaxKind's underlying type is System.UInt16, ObjectEqualityComparer will be chosen instead. + + + + + Determine if the kind represents a reserved keyword + + + + + Determine if the kind represents a contextual keyword + + + + + Determine if the token instance represents 'Me', 'MyBase' or 'MyClass' keywords + + + + + Return correspondent expression syntax for 'Me', 'MyBase' and 'MyClass' + keywords or SyntaxKind.None for other syntax kinds + + + + + Determine if the token instance represents a preprocessor keyword + + + + + Get all reserved keywords + + + + + Get contextual keywords + + + + + Get punctuations + + + + + Get preprocessor keywords + + + + + Return keyword or punctuation text based on SyntaxKind + + + + + Represents a Visual Basic global imports. + + + + + The import clause (a namespace name, an alias, or an XML namespace alias). + + + + + The import name. + + + + + Parses a specified string to create a GlobalImport instance. + + The string containing the text to be parsed. + A GlobalImport instance. + + + + Parses a specified string to create a GlobalImport instance with diagnostics info. + + The string containing the text to be parsed. + An ImmutableArray of diagnostics created during parse. + A GlobalImport instance. + + + + Parses a collection of strings representing imports to create collection of GlobalImports. + + The collection of strings to be parsed. + A collection of GlobalImports + + + + Parses a parameter array of string arrays representing imports to create a collection of GlobalImports. + + The string arrays to be parsed. + A collection of GlobalImports. + + + + Parses a collection of strings representing imports to create a collection of GlobalImport instance and diagnostics + + A collection of strings to be parsed. + A ImmutableArray of diagnostics. + A collection of GlobalImports. + + + + Determines if the current object is equal to another object. + + An object to compare with this object + A boolean value. True if the current object is equal to the other parameter; otherwise, False. + + + + Determines whether the current object is equal to another object of the same type. + + A GlobalImport object to compare with this object + A boolean value. True if the current object is equal to the other parameter; otherwise, False. + + + + Creates a hashcode for this instance. + + A hashcode representing this instance. + + + + Operator for Equality with GlobalImport Objects. + + True if the two items are Equal. + + + + Overloaded Operator for Inequality ith GlobalImport Objects. + + Returns True if the two items are not Equal. + + + + Supported Visual Basic language versions. + + + + + Map a language version (such as Default, Latest, Or VisualBasicN) to a specific version (VisualBasicN). + + + + + Displays the version number in the format understood on the command-line (/langver flag). + For instance, "9", "15", "latest". + + + + + Parse a LanguageVersion from a string input, as the command-line compiler does. + + + + Inference of tuple element names was added in VB 15.3 + + + + A program location in source code. + + + + + A program location in MyTemplate code. + + + + + Represents a VB location in source code or metadata. + + + + + Spill an expression list with a receiver (e.g. array access, method call), + where at least one of the receiver or the arguments contains an await expression. + + + + + Spill a list of expressions (e.g. the arguments of a method call). + + The expressions are processed right-to-left. Once an expression has been found that contains an await + expression, all subsequent expressions are spilled. + + Example: + + (1 + 2, await t1, Goo(), await t2, 3 + 4) + + becomes: + + Spill( + spill1 = 1 + 2, + spill2 = await t1, + spill3 = Goo(), + (spill1, spill2, spill3, await t2, 3 + 4)) + + NOTE: Consider nested array initializers: + + new int[] { + { 1, await t1 }, + { 3, await t2 } + } + + If the arguments of the top-level initializer had already been spilled, we would end up trying to spill + something like this: + + new int[] { + Spill( + spill1 = 1, + { spill1, await t1 }), + Spill( + spill2 = 3, + { spill2, await t2 }) + } + + The normal rewriting would produce: + + Spill( + spill1 = 1, + spill3 = { spill1, await t1 }, + spill2 = 3, + int[] a = new int[] { + spill3, + { spill2, await t2 })) + + Which is invalid, because spill3 does not have a type. + + To solve this problem the expression list spilled descends into nested array initializers. + + + + + + The method being rewritten. + + + + + The field of the generated async class used to store the async method builder: an instance of + AsyncVoidMethodBuilder, AsyncTaskMethodBuilder, or AsyncTaskMethodBuilder(Of T) depending on the + return type of the async method. + + + + + The exprReturnLabel is used to label the return handling code at the end of the async state-machine + method. Return expressions are rewritten as unconditional branches to exprReturnLabel. + + + + + The exitLabel is used to label the final method body return at the end of the async state-machine + method. Is used in rewriting of return statements from Await expressions and a couple of other + places where the return is not accompanied by return of the value. + + + + + The field of the generated async class used in generic task returning async methods to store the value + of rewritten return expressions. The return-handling code then uses SetResult on the async method builder + to make the result available to the caller. + + + + + Generate the body for MoveNext() + + + + + Materialize the capture, e.g. return an expression to be used instead of captured symbol + + + + + Add proxy field(s) if any to the array builder provided + + Note: is used for binding BoundStateMachineScope with + correspondent local/field references + + + + + Create assignment expressions initializing for this capture, is only supposed to be + used for proper handling of reference assignments + + + + + Spill field allocator controls allocation and reuse of the set of fields + used to spilling expressions; current implementation allows reuse of fields + of the same type on high-level statement level + + + + + Rewrite an async method into a state machine class. + + + + + Returns true if any members that we need are missing or have use-site errors. + + + + + Specifies a kind of an Async method + + None is returned for non-Async methods or methods with wrong return type + + + + + Returns method's async kind + + + + + The closure doesn't declare any variables. + Display class Is a singleton And may be shared with other top-level methods. + + + + + The closure only contains a reference to the containing class instance ("Me"). + We don't emit a display class, lambdas are emitted directly to the containing class as its instance methods. + + + + + General closure. + Display class may only contain lambdas defined in the same top-level method. + + + + + Rewrite lambda that are being converted to LINQ expression trees (Expression(Of T)) + + + A lot of code is #If False disabled until it can be tested. + + + + + Rewrite a bound lambda into a bound node that will create the corresponding expression tree at run time. + + + + + Create an Expression Tree Node with the given name and arguments + + + + + Create an Expression node with the given name, type arguments, and arguments. + + + + + Gets the method group for a given method name. Returns Nothing if no methods found. + + + + + The shift count for a left-shift or right-shift operator needs to be masked according to the type + of the left hand side, unless the shift count is an in-range constant. This is similar to what is + done in code gen. + + + + + Given user defined conversion node replace the operand with the coalesce lambda parameter. + + The input bound conversion node must have the following form: + --> BoundConversion [UserDefined] + --> [optional] BoundConversion (OutConversion) + --> BoundCall [shared method, no receiver, one argument] + + The OUTPUT bound conversion node will have the following form: + --> BoundConversion *updated* + --> [optional] BoundConversion *updated* + --> BoundCall [shared method, no receiver, * updated argument *] + --> [optional] BoundConversion (parameter from nullable to value) + --> *parameter* + + + + + + Rewrites a built-in conversion. Doesn't handle user-defined conversions or Nothing literals. + + + + + Get the conversion helper for converting between special types in an expression tree. + These are often different than the ones used in regular code. + + + + + Get the name of the expression tree function for a particular unary operator + + + + + Utility class, provides a convenient way of combining various s in a chain, + allowing each of them to apply specific instrumentations in particular order. + + Default implementation of all APIs delegates to the "previous" passed as a parameter + to the constructor of this class. Usually, derived types are going to let the base (this class) to do its work first + and then operate on the result they get back. + + + + + This type is responsible for adding debugging sequence points for the executable code. + It can be combined with other s. Usually, this class should be + the root of the chain in order to ensure sound debugging experience for the instrumented code. + In other words, sequence points are typically applied after all other changes. + + + + + A singleton object that performs only one type of instrumentation - addition of debugging sequence points. + + + + + This type provides means for instrumenting compiled methods for dynamic analysis. + It can be combined with other s. + + + + + A base class for components that instrument various portions of executable code. + It provides a set of APIs that are called by to instrument + specific portions of the code. These APIs often have two parameters: + - original bound node produced by the for the relevant portion of the code; + - rewritten bound node created by the for the original node. + The APIs are expected to return new state of the rewritten node, after they apply appropriate + modifications, if any. + + The base class provides default implementation for all APIs, which simply returns the rewritten node. + + + + + The singleton NoOp instrumenter, can be used to terminate the chain of s. + + + + + Return a node that is associated with an entry of the block. OK to return Nothing. + + + + + Ok to return Nothing when is Nothing. + + + + + Return a prologue. Ok to return Nothing. + + + + + Return an epilogue. Ok to return Nothing. + + + + + Return an epilogue. Ok to return Nothing. + + + + + Ok to return Nothing when is Nothing. + + + + + Ok to return Nothing when is Nothing. + + + + + Ok to return Nothing when is Nothing. + + + + + Ok to return Nothing when is Nothing. + + + + + Return a node that is associated with an entry of the Else block. Ok to return Nothing. + + + + + Return a node that is associated with an entry of the block. Ok to return Nothing. + Note, this method is only called for a catch block without Filter. + If there is a filter, is called instead. + + + + + Return a node that is associated with an entry of the Finally block. Ok to return Nothing. + + + + + Return a node that is associated with an entry of the Try block. Ok to return Nothing. + + + + + Ok to return Nothing. + + + + + Ok to return Nothing when is Nothing. + If is not Nothing, add to the end, not to the front. + + + + + Ok to return Nothing when is Nothing. + If is not Nothing, add to the end, not to the front. + + + + + Ok to return Nothing. + + + + + Ok to return Nothing. + + + + + Ok to return Nothing. + + + + + Ok to return Nothing. + + + + + The field of the generated iterator class that underlies the Current property. + + + + + Rewrite an iterator method into a state machine class. + + + + + Returns true if any members that we need are missing or have use-site errors. + + + + + A field of a frame class that represents a variable that has been captured in a lambda. + + + + + A class that represents the set of variables in a scope that have been + captured by lambdas within that scope. + + + + + Copy constructor has one parameter of the same type as the enclosing type. + The purpose is to copy all the lifted values from previous version of the + frame if there was any into the new one. + + + + + The rewriter for removing lambda expressions from method bodies and introducing closure classes + as containers for captured variables along the lines of the example in section 6.5.3 of the + C# language specification. + + The entry point is the public method Rewrite. It operates as follows: + + First, an analysis of the whole method body is performed that determines which variables are + captured, what their scopes are, and what the nesting relationship is between scopes that + have captured variables. The result of this analysis is left in LambdaRewriter.analysis. + + Then we make frame, or compiler-generated class, represented by an instance of + LambdaRewriter.Frame for each scope with captured variables. The generated frames are kept + in LambdaRewriter.frames. Each frame is given a single field for each captured + variable in the corresponding scope. These are maintained in LambdaRewriter.proxies. + + Finally, we walk and rewrite the input bound tree, keeping track of the following: + (1) The current set of active frame pointers, in LambdaRewriter.framePointers + (2) The current method being processed (this changes within a lambda's body), in LambdaRewriter.currentMethod + (3) The "this" symbol for the current method in LambdaRewriter.currentFrameThis, and + (4) The symbol that is used to access the innermost frame pointer (it could be a local variable or "this" parameter) + + There are a few key transformations done in the rewriting. + (1) Lambda expressions are turned into delegate creation expressions, and the body of the lambda is + moved into a new, compiler-generated method of a selected frame class. + (2) On entry to a scope with captured variables, we create a frame object and store it in a local variable. + (3) References to captured variables are transformed into references to fields of a frame class. + + In addition, the rewriting deposits into the field LambdaRewriter.generatedMethods a (MethodSymbol, BoundStatement) + pair for each generated method. + + LambdaRewriter.Rewrite produces its output in two forms. First, it returns a new bound statement + for the caller to use for the body of the original method. Second, it returns a collection of + (MethodSymbol, BoundStatement) pairs for additional method that the lambda rewriter produced. + These additional methods contain the bodies of the lambdas moved into ordinary methods of their + respective frame classes, and the caller is responsible for processing them just as it does with + the returned bound node. For example, the caller will typically perform iterator method and + asynchronous method transformations, and emit IL instructions into an assembly. + + + + + Perform a first analysis pass in preparation for removing all lambdas from a method body. The entry point is Analyze. + The results of analysis are placed in the fields seenLambda, blockParent, variableBlock, captured, and captures. + + + + + Set to true of any lambda expressions were seen in the analyzed method body. + + + + + Set to true if method body contains any back branches (loops). + + + + + For each statement with captured variables, identifies the nearest enclosing statement with captured variables. + + + + + For each captured variable, identifies the statement in which it will be moved to a frame class. This is + normally the block where the variable is introduced, but method parameters are moved + to a frame class within the body of the method. + + + + + For a given label, the nearest enclosing block that captures variables + + + + + For a given goto, the nearest enclosing block that captures variables + + + + + Blocks that contain (recursively) a lambda that is lifting. + Such blocks are considered as potentially needing closure initialization when doing jump verification. + + + + + Blocks that are positioned between a block declaring some lifted variables + and a block that contains the lambda that lifts said variables. + If such block itself requires a closure, then it must lift parent frame pointer into the closure + in addition to whatever else needs to be lifted. + + NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. + If someone only needs diagnostics or information about captures, this information is not necessary. + ComputeLambdaScopesAndFrameCaptures needs to be called to compute this. + + + + + Optimized locations of lambdas. + + Lambda does not need to be placed in a frame that corresponds to its lexical scope if lambda does not reference any local state in that scope. + It is advantageous to place lambdas higher in the scope tree, ideally in the innermost scope of all scopes that contain variables captured by a given lambda. + Doing so reduces indirections needed when captured local are accessed. For example locals from the innermost scope can be accessed with no indirection at all. + + NOTE: This information is computed in addition to the regular analysis of the tree and only needed for rewriting. + If someone only needs diagnostics or information about captures, this information is not necessary. + ComputeLambdaScopesAndFrameCaptures needs to be called to compute this. + + + + + The set of captured variables seen in the method body. + + + + + For each lambda in the code, the set of variables that it captures. + + + + + The set of variables that were declared anywhere inside an expression lambda. + + + + + Set to true while we are analyzing the interior of an expression lambda. + + + + + All symbols that should never be captured with a copy constructor of a closure. + + + + + Analyzes method body that belongs to the given method symbol. + + + + + Create the optimized plan for the location of lambda methods and whether scopes need access to parent scopes + + + + + Compute the nesting depth of a given block. + Topmost block (where method locals and parameters are defined) are at the depth 0. + + + + + Once we see a lambda lifting something + We mark all scopes from the current up to the one that declares lifted symbol as + containing a lifting lambda. + This is needed so that we could reject jumps that might jump over frame allocations. + + NOTE: because of optimizations lambda _might_ be placed in a frame higher + than its lexical scope and thus make a jump technically legal. + However, we explicitly do not consider frame optimizations in this analysis. + + + + + This method is called on every variable reference. + It checks for cases where variable is declared outside of the lambda in which it is being accessed + If capture is detected, than it marks variable as capturED and all lambdas involved as capturING + + + + + For performance reason we may not want to check if synthetic gotos are legal. + Those are the majority, but should not be ever illegal (how user would fix them?). + + + + WARNING: used ONLY in DEBUG + + + + Rewrite the given node to eliminate lambda expressions. Also returned are the method symbols and their + bound bodies for the extracted lambda bodies. These would typically be emitted by the caller such as + MethodBodyCompiler. See this class' documentation + for a more thorough explanation of the algorithm and its use by clients. + + The bound node to be rewritten + The containing method of the node to be rewritten + Index of the method symbol in its containing type member list. + The caller's buffer into which we produce additional methods to be emitted by the caller + Set of symbols that should not be captured using a copy constructor + The caller's buffer into which we place any diagnostics for problems encountered + + + + Create the frame types. + + + + + Produces a bound expression representing a pointer to a frame of a particular frame type. + + The syntax to attach to the bound nodes produced + The type of frame to be returned + A bound node that computes the pointer to the required frame + + + + Produce a bound expression representing a pointer to a frame of a particular frame class. + Note that for generic frames, the frameClass parameter is the generic definition, but + the resulting expression will be constructed with the current type parameters. + + The syntax to attach to the bound nodes produced + The class type of frame to be returned + A bound node that computes the pointer to the required frame + + + + Constructs a concrete frame type if needed. + + + + + Introduce a frame around the translation of the given node. + + The node whose translation should be translated to contain a frame + The frame for the translated node + A function that computes the translation of the node. It receives lists of added statements and added symbols + The translated statement, as returned from F + + + + If parameter (or variable in the EE) is lifted, initialize its proxy. + + + + + Rewrites lambda body into a body of a method. + + Method symbol for the rewritten lambda body. + Original lambda node. + Lambda body rewritten as a body of the given method symbol. + + + + It is illegal to jump into blocks that reference lifted variable + as that could leave closure frames of the target block uninitialized. + + The fact that closure could be created as high as the declaration level of the variable + and well above goto block (thus making the jump safe) is considered an optional optimization + and ignored. + For the purpose of this analysis just having lifting lambdas already means + that block may require initialization and cannot be jumped into. + + Note that when you are jumping into a block you are essentially jumping into ALL blocks + on the path from LowestCommonAncestor(goto, label) to the actual label block. + + + + + Optimize the case where we create an instance of a delegate and invoke it right away. + Skip the delegate creation and invoke the method directly. Specifically, we are targeting + lambda relaxation scenario that requires a stub, which invokes original lambda by instantiating + an Anonymous Delegate and calling its Invoke method. That is why this optimization should be done + after lambdas are rewritten. + CONSIDER: Should we expand this optimization to all delegate types and all explicitly written code? + If we decide to do this, we should be careful with extension methods because they have + special treatment of 'this' parameter. + + + + + A method that results from the translation of a single lambda expression. + + + + + Creates a symbol for a synthesized lambda method + + Type that contains lambda method + - it is either Frame or enclosing class in a case if we do not lift anything. + Method that contains lambda expression for which we do the rewrite. + Lambda expression which is represented by this method. + + + + Returns substitution currently used by the rewriter for a placeholder node. + Each occurrence of the placeholder node is replaced with the node returned. + Throws if there is no substitution. + + + + + Sets substitution used by the rewriter for a placeholder node. + Each occurrence of the placeholder node is replaced with the node returned. + Throws if there is already a substitution. + + + + + Replaces substitution currently used by the rewriter for a placeholder node with a different substitution. + Asserts if there isn't already a substitution. + + + + + Removes substitution currently used by the rewriter for a placeholder node. + Asserts if there isn't already a substitution. + + + + + Adds a prologue before stepping on the statement + NOTE: if the statement is a block the prologue will be outside of the scope + + + + + Gets the special type. + + Special Type to get. + + + + Gets the special type member. + + Member of the special type. + + + + Checks for special member and reports diagnostics if the member is Nothing or has UseSiteError. + Returns True in case diagnostics was actually reported + + + + + Checks for special member and reports diagnostics if the member is Nothing or has UseSiteError. + Returns True in case diagnostics was actually reported + + + + + Checks for well known member and reports diagnostics if the member is Nothing or has UseSiteError. + Returns True in case diagnostics was actually reported + + + + + Checks for well known member and reports diagnostics if the member is Nothing or has UseSiteError. + Returns True in case diagnostics was actually reported + + + + + If value is const, returns the value unchanged. + + In a case if value is not a const, a proxy temp is created and added to "locals" + In addition to that, code that evaluates and stores the value is added to "expressions" + The access expression to the proxy temp is returned. + + + + + Helper method to create a bound sequence to represent the idea: + "compute this value, and then compute this side effects while discarding results" + + A Bound sequence is generated for the provided expr and side-effects, say {se1, se2, se3}, as follows: + + If expr is of void type: + BoundSequence { side-effects: { expr, se1, se2, se3 }, valueOpt: Nothing } + + ElseIf expr is a constant: + BoundSequence { side-effects: { se1, se2, se3 }, valueOpt: expr } + + Else + BoundSequence { side-effects: { tmp = expr, se1, se2, se3 }, valueOpt: tmp } + + + NOTE: Supporting cases where side-effects change the value (or to detect such cases) + NOTE: could be complicated. We do not support this currently and instead require + NOTE: value expr to be not LValue. + + + + + Helper function that visits the given expression and returns a BoundExpression. + Please use this instead of DirectCast(Visit(expression), BoundExpression) + + + + + If we have a WinRT type event, we need to encapsulate the adder call + (which returns an EventRegistrationToken) with a call to + WindowsRuntimeMarshal.AddEventHandler or RemoveEventHandler, but these + require us to create a new Func representing the adder and another + Action representing the remover. + + The rewritten call looks something like: + + WindowsRuntimeMarshal.AddEventHandler(Of TEventHandler)( + New Func(Of TEventHandler, EventRegistrationToken)([object].add_T), + New Action(Of EventRegistrationToken)([object].remove_T), + New TEventHandler(Me.OnSuspending)) + + + where [object] is a compiler-generated local temp. + + For a remover, the call looks like: + + WindowsRuntimeMarshal.RemoveEventHandler(Of TEventHandler)( + New Action(Of EventRegistrationToken)([object].remove_T), + New TEventHandler(Me.OnSuspending)) + + + + + Make sure GetObjectValue calls are injected. + + + + + Apply GetObjectValue call if needed. + + + + + Apply GetObjectValue call if needed. + + + + + The goal of optimization is to eliminate the need to deal with instances of Nullable(Of Boolean) type as early as possible, + and, as a result, simplify evaluation of built-in OrElse/AndAlso operators by eliminating the need to use three-valued Boolean logic. + The optimization is possible because when an entire Boolean Expression is evaluated to Null, that has the same effect as if result + of evaluation was False. However, we do want to preserve the original order of evaluation, according to language rules. + This method returns an expression that still has Nullable(Of Boolean) type, but that expression is much simpler and can be + further simplified by the consumer. + + + + + Is this a floating-point operation that results in a whole number, rendering a following rounding operation redundant? + + + + + Is this a floating-point truncation operation that would be redundant if followed by a truncation to an integral type? + + + + + Converts access to a tuple instance into access into the underlying ValueTuple(s). + + For instance, tuple.Item8 + produces fieldAccess(field=Item1, receiver=fieldAccess(field=Rest, receiver=ValueTuple for tuple)) + + + + + Field initializers need to be rewritten multiple times in case of an AsNew declaration with multiple field names because the + initializer may contain references to the current field like in the following example: + Class C1 + Public x, y As New RefType() With {.Field1 = .Field2} + End Class + + in this example .Field2 references the temp that is created for x and y. + + We moved the final rewriting for field initializers to the local + rewriters because here we already have the infrastructure to replace placeholders. + + + + + Rewrites a for each statement. + + The node. + + + + Rewrites a for each over an one dimensional array or a string. + + As an optimization, if c is an array type of rank 1, the form becomes: + + Dim collectionCopy As C = c + Dim collectionIndex As Integer = 0 + Do While collectionIndex < len(collectionCopy) ' len(a) represents the LDLEN opcode + dim controlVariable = DirectCast(collectionCopy(collectionIndex), typeOfControlVariable) + <loop body> + continue: + collectionIndex += 1 + postIncrement: + Loop + + An iteration over a string becomes + Dim collectionCopy As String = c + Dim collectionIndex As Integer = 0 + Dim limit as Integer = s.Length + Do While collectionIndex < limit + dim controlVariable = DirectCast(collectionCopy.Chars(collectionIndex), typeOfControlVariable) + <loop body> + continue: + collectionIndex += 1 + postIncrement: + Loop + + The node. + The statements. + The locals. + if set to true [is array]. + + + + Creates a local and assigns it the given bound expression. + + The syntax node. + The initialization expression. + The bound local. + The locals. + + + + Creates the index increment statement. + + The syntax node. + The bound index expression (bound local). + + + + Creates the while statement for the for each rewrite + + The limit to check the index against. + The index. + The assignment statement of the current value. + The increment statement. + The bound for each node. + The lowered statement list for the while statement. + + + + Rewrite a for each that uses IEnumerable. It's basic form is: + + Dim e As E = c.GetEnumerator() + Do While e.MoveNext() + controlVariable = e.Current + <loop body> + Loop + + To support disposable enumerators, the compiler will generate code to dispose the + enumerator after loop termination. Only when E implements IDisposable can this be done. + The one exception to this rule is when E is specifically IEnumerator, in which case + the compiler will generate code to dynamically query the enumerator to determine + if it implements IDisposable. + + If E is IEnumerator the loop becomes: + + Dim e As IEnumerator = c.GetEnumerator() + Try + Do While e.MoveNext() + dim controlVariable = e.Current + <loop body> + Loop + Finally + If TryCast(e, IDisposable) IsNot Nothing then + CType(e, IDisposable).Dispose() + End If + End Try + + If E is known at compile time to implement IDisposable the loop becomes: + + Dim e As E = c.GetEnumerator() + Try + Do While e.MoveNext() + dim controlVariable = e.Current + <loop body> + Loop + Finally + If Not e Is Nothing Then + CType(e, IDisposable).Dispose() + End If + End Try + + The exception to these forms is the existence of On Error in which case the Try/Finally + block will be eliminated (instead the body of the Finally will immediately follow + the end of the loop). + + + + + + + + Depending on whether the bound local's type is, implements or inherits IDisposable for sure, or might implement it, + this function returns the statements to call Dispose on the bound local. + + If it's known to implement IDisposable, the generated code looks like this for reference types: + If e IsNot Nothing Then + CType(e, IDisposable).Dispose() + End If + or + e.Dispose() + for value types (including type parameters with a value constraint). + Otherwise it looks like the following + If TryCast(e, IDisposable) IsNot Nothing then + CType(e, IDisposable).Dispose() + End If + + This method is used by the for each rewriter and the using rewriter. The latter should only call + this method with both IsOrInheritsFromOrImplementsIDisposable and needToDispose set to true, as using is not + pattern based and must implement IDisposable. + + The syntax node. + The bound local. + The condition used in the if statement around the dispose call + A flag indicating whether the bound local's type is, + inherits or implements IDisposable or not. + Conversion from the local type to IDisposable + + + + Internal helper class to replace local symbols in bound locals of a given bound tree. + + + + + Rewrites ForTo loop. + + + + + Negates the value if step is negative + + + + + Given the control variable, limit and step, produce the loop condition. + The principle is simple - + if step is negative (stepping "Up") then it is "control >= limit" + otherwise it is "control <= limit" + + It gets more complicated when step is not a constant or not a numeric or + involves overloaded comparison/IsTrue operators + + + + + Attempt to retrieve the specified special member, reporting a use-site diagnostic if the member is not found. + + + + + Replaces local declaration with its initializer + Also marks resulting statement with seq point that matches original declaration. + + + + + Splits nullable operand into a hasValueExpression and an expression that represents underlying value (returned). + + Underlying value can be called after calling hasValueExpr without duplicated side-effects. + Note that hasValueExpr is guaranteed to have NO SIDE-EFFECTS, while result value is + expected to be called exactly ONCE. That is the normal pattern in operator lifting. + + All necessary temps and side-effecting initializations are appended to temps and inits + + + + + Returns a NOT-SIDE-EFFECTING expression that represents results of the operand + If such transformation requires a temp, the temp and its initializing expression + are returned in temp/init + + + + + Returns expression that - + a) evaluates the operand if needed + b) produces it's ValueOrDefault. + The helper is familiar with wrapping expressions and will go directly after the value + skipping wrap/unwrap steps. + + + + + Evaluates expr and calls HasValue on it. + + + + + Checks that candidate Null expression is a simple expression that produces Null of the desired type + (not a conversion or anything like that) and returns it. + Otherwise creates "New T?()" expression. + + + + + returns true when expression has NO SIDE-EFFECTS and is known to produce nullable NULL + + + + + Returns true when expression is known to produce nullable NOT-NULL + NOTE: unlike HasNoValue case, HasValue expressions may have side-effects. + + + + + Helper to generate binary expressions. + Performs some trivial constant folding. + TODO: Perhaps belong to a different file + + + + + Simpler helper for binary expressions. + When operand are boolean, the result type is same as operand's and is never checked + so do not need to pass that in. + + + + + Takes two expressions and makes sequence. + + + + + Takes two expressions and makes sequence. + + + + + Takes two expressions and makes sequence. + + + + + Returns an expression that can be used instead of the original one when + we want to run the expression for side-effects only (i.e. we intend to ignore result). + + + + + Rewrites a CollectionInitializerExpression to a list of Add calls and returns the temporary. + E.g. the following code: + Dim x As New CollectionType(param1) From {1, {2, 3}, {4, {5, 6, 7}}} + gets rewritten to + Dim temp as CollectionType + temp = new CollectionType(param1) + temp.Add(1) + temp.Add(2, 3) + temp.Add(4, {5, 6, 7}) + x = temp + where the last assignment is not part of this rewriting, because the BoundCollectionInitializerExpression + only represents the object creation expression with the initialization. + + The BoundCollectionInitializerExpression that should be rewritten. + A bound sequence for the object creation expression containing the invocation expressions. + + + + Rewrites a ObjectInitializerExpression to either a statement list (in case the there is no temporary used) or a bound + sequence expression (in case there is a temporary used). The information whether to use a temporary or not is + stored in the bound object member initializer node itself. + + E.g. the following code: + Dim x = New RefTypeName(param1) With {.FieldName1 = 23, .FieldName2 = .FieldName3, .FieldName4 = x.FieldName1} + gets rewritten to + Dim temp as RefTypeName + temp = new RefTypeName(param1) + temp.FieldName1 = 23 + temp.FieldName2 = temp.FieldName3 + temp.FieldName4 = x.FieldName1 + x = temp + where the last assignment is not part of this rewriting, because the BoundObjectInitializerExpression + only represents the object creation expression with the initialization. + + In a case where no temporary is used the following code: + Dim x As New ValueTypeName(param1) With {.FieldName1 = 23, .FieldName2 = .FieldName3, .FieldName4 = x.FieldName1} + gets rewritten to + x = new ValueTypeName(param1) + x.FieldName1 = 23 + x.FieldName2 = x.FieldName3 + x.FieldName4 = x.FieldName1 + + The BoundObjectInitializerExpression that should be rewritten. + A bound sequence for the object creation expression containing the invocation expressions, or a + bound statement list if no temporary should be used. + + + + Rewrites Return as a GoTo is needed (if not the last statement in a method) + + + + + digs into known concat operators and unwraps their arguments + otherwise returns the expression as-is + + Generally we only need to recognize same node patterns that we create as a result of concatenation rewrite. + We could recognize some other nodes and unwrap to arguments + + + + + folds two concat operands into one expression if possible + otherwise returns null + + + + + folds two concat constants into one if possible + otherwise returns null. + It is generally always possible to concat constants, unless resulting string would be too large. + + + + + Strangely enough there is such a thing as unary concatenation and it must be rewritten. + + + + + Is there any code to execute in the given statement that could have side-effects, + such as throwing an exception? This implementation is conservative, in the sense + that it may return true when the statement actually may have no side effects. + + + + + Converts the expression for creating a tuple instance into an expression creating a ValueTuple (if short) or nested ValueTuples (if longer). + + For instance, for a long tuple we'll generate: + creationExpression(ctor=largestCtor, args=firstArgs+(nested creationExpression for remainder, with smaller ctor and next few args)) + + + + + A using statement of the form: + using Expression + list_of_statements + end using + + will be rewritten into: + + temp = Expression + Try + list_of_statements + Finally + If Temp IsNot Nothing Then + CType(temp, IDisposable).Dispose() + End If + End Try + + when the resource is a using locally declared variable no temporary is generated but the variable is read-only + A using statement of the form: + Using v As New MyDispose() + list_of_statements + End Using + + is rewritten to: + + Dim v As New MyDispose() + Try + list_of_statements + Finally + If v IsNot Nothing Then + CType(v, IDisposable).Dispose() + End If + End Try + + A using with multiple variable resources are equivalent to a nested using statement. + So a using statement of the form: + Using v1 As New MyDispose(), v2 As myDispose = New MyDispose() + list_of_statements + end using + + is rewritten to: + Dim v1 As New MyDispose + Try + Dim v2 As MyDispose = new MyDispose() + Try + list_of_statements + Finally + If v2 IsNot Nothing Then + CType(v2, IDisposable).Dispose() + End If + End Try + Finally + If v1 IsNot Nothing Then + CType(v1, IDisposable).Dispose() + End If + end try + + + + + Creates a TryFinally Statement for the given resource. + + This method creates the following for the arguments: + <localSymbol> = <initializationExpression> + Try + <currentBody> + Finally + If <disposeCondition> Then + <disposeConversion>.Dispose() + End If + End Try + + Note: this is used for both kinds of using statements (resource locals and resource expressions). + + + The new bound block containing the assignment of the initialization and the try/finally statement with + the passed body. + + + + Cache of value types which were already calculated by LocalOrFieldNeedsToBeCleanedUp + in this lowering, serves as an optimization + + + + + Create a temp local of the given type and initial value. + The resulting local is treated as an rvalue, and the + initialization assignment is added to 'sideEffects'. + + + + + Create a BoundExpression representing an array creation initialized with the given items. + If there are zero items, the result is a BoundLiteral Nothing, otherwise, a BoundArrayCreation. + + + + + A bound node rewriter that rewrites types properly (which in some cases the automatically-generated). + This is used in the lambda rewriter, the iterator rewriter, and the async rewriter. + + + + + A method that wraps the call to a method through MyBase/MyClass receiver. + + + + Class A + Protected Overridable Sub F(a As Integer) + End Sub + End Class + + Class B + Inherits A + + Public Sub M() + Dim b As Integer = 1 + Dim f As System.Action = Sub() MyBase.F(b) + End Sub + End Class + + + + + + Creates a symbol for a method that wraps the call to a method through MyBase/MyClass receiver. + + Type that contains wrapper method. + Method to wrap + Wrapper method name + Syntax node. + + + + For each captured variable, the corresponding field of its frame + + + + + A mapping from every local variable to its replacement local variable. Local variables + are replaced when their types change due to being inside of a lambda within a generic method. + + + + + A mapping from every parameter to its replacement parameter. Local variables + are replaced when their types change due to being inside of a lambda. + + + + + The mapping of type parameters for the current lambda body + + + + + The method (e.g. lambda) which is currently being rewritten. If we are + rewriting a lambda, currentMethod is the new generated method. + + + + + A not-null collection of synthesized methods generated for the current source type. + + + + + During rewriting, we ignore locals that have already been rewritten to a proxy (a field on a closure class). + However, in the EE, we need to preserve the original slots for all locals (slots for any new locals must be + appended after the originals). The field is intended to suppress any + rewriter logic that would result in original locals being omitted. + + + + + Rewrites method. + + + + + Rewrites property. + + + + + Rewrites field. + + + + + Represents a synthesized state machine helper field. + + + + + + + Type used by State Machine rewriter to represent symbol proxy. Lambda rewriter as + well as iterator rewriter use simplified form of proxy as they only capture + locals as r-values in fields, async rewriter uses a different structure as a proxy + because it has to capture l-values on stack as well + + + + + The "state" of the state machine that is the translation of the iterator method. + + + + + Cached "state" of the state machine within the MoveNext method. We work with a copy of + the state to avoid shared mutable state between threads. (Two threads can be executing + in a Task's MoveNext method because an awaited task may complete after the awaiter has + tested whether the subtask is complete but before the awaiter has returned) + + + + + For each distinct label, the set of states that need to be dispatched to that label. + Note that there is a dispatch occurring at every try-finally statement, so this + variable takes on a new set of values inside each try block. + + + + + A mapping from each state of the state machine to the new state that will be used to execute + finally blocks in case the state machine is disposed. The Dispose method computes the new + state and then runs MoveNext. + + + + + A try block might have no state (transitions) within it, in which case it does not need + to have a state to represent finalization. This flag tells us whether the current try + block that we are within has a finalizer state. Initially true as we have the (trivial) + finalizer state of -1 at the top level. + + + + + If hasFinalizerState is true, this is the state for finalization from anywhere in this try block. + Initially set to -1, representing the no-op finalization required at the top level. + + + + + The set of local variables and parameters that were hoisted and need a proxy. + + + + + Implementation-specific name for labels to mark state machine resume points. + + + + + Generate return statements from the state machine method body. + + + + + Must remain in sync with . + + + + + Must remain in sync with . + + + + + The try statement is the most complex part of the state machine transformation. + Since the CLR will not allow a 'goto' into the scope of a try statement, we must + generate the dispatch to the state's label stepwise. That is done by translating + the try statements from the inside to the outside. Within a try statement, we + start with an empty dispatch table (representing the mapping from state numbers + to labels). During translation of the try statement's body, the dispatch table + will be filled in with the data necessary to dispatch once we're inside the try + block. We generate that at the head of the translated try statement. Then, we + copy all of the states from that table into the table for the enclosing construct, + but associate them with a label just before the translated try block. That way + the enclosing construct will generate the code necessary to get control into the + try block for all of those states. + + + + + True if the initial values of locals in the rewritten method need to be preserved. (e.g. enumerable iterator methods) + + + + + Type substitution if applicable or Nothing + + + + + Add fields to the state machine class that control the state machine. + + + + + Initialize the state machine class. + + + + + Generate implementation-specific state machine initialization for the kickoff method body. + + + + + Generate implementation-specific state machine member method implementations. + + + + + If any required special/well-known type/member is not found or has use-site errors + we should not continue with transformation because it may have unwanted consequences; + e.g. we do return Nothing if well-known member symbol is not found. This method should + check all required symbols and return False if any of them are missing or have use-site errors. + We will also return True if signature is definitely bad - contains parameters that are ByRef or have error types + + + + + Check that the property and its getter exist and collect any use-site errors. + + + + + This class represents a type symbol for compiler generated implementation methods, + the method being implemented is passed as a parameter and is used to build + implementation method's parameters, return value type, etc... + + + + + Represents a state machine MoveNext method. + Handles special behavior around inheriting some attributes from the original async/iterator method. + + + + + Represents a state machine method other than a MoveNext method. + All such methods are considered non-user code. + + + + + This class represents a symbol for the compiler generated property that owns implemented getter (like IEnumerable.Current), + The getter method being implemented is passed as a parameter and is used to build + implementation property around it with appropriate parameters, return value type, etc... + + + + + Tracks synthesized fields that are needed in a submission being compiled. + + + For every other submission referenced by this submission we add a field, so that we can access members of the target submission. + A field is also needed for the host object, if provided. + + + + + A helper class for synthesizing quantities of code. + + + Code if the #If False out is code ported from C# that isn't currently used, and + hence has no code coverage. It may or may not work correctly, but should be a useful + starting point. + + + + + Assignment expressions in lowered form should always have suppressObjectClone = True + + + + Check for (and assert that there are no) duplicate case labels in the switch. + + + + Synthesizes an expression that evaluates to the index portion of a method's metadata token. + + + + + Synthesizes an expression that evaluates to the maximum value of the index portions of all method definition metadata tokens in current module. + + + + + Synthesizes an expression that evaluates to the current module's MVID. + + + + + Synthesizes an expression that evaluates to a text representation of the current module/s MVID. + + + + + Synthesizes an expression that evaluates to the root of the dynamic analysis payloads for a particular kind of dynamic analysis. + + Uniquely identifies the kind of dynamic analysis. + Type of an analysis payload cell for the particular analysis kind. + + + + Synthesizes an expression that evaluates to the index of a source document in the table of debug source documents. + + + + + Given an expression that produces some result and + has some observable evaluation side effects, return two expressions: + 1) First - produces the same result with the same observable side effects, + 2) Second - produces the same result, but without observable side effects, whenever possible. + + This is used for compound assignment, method call ByRef parameter copy back, etc. + + + + Expression to be used instead of With statement expression placeholder + + + Locals being used + + + Locals initialization expressions + + + + Given an expression specified for With statement produces: + 1) Expression - an expression to be used instead of expression placeholder + 2) Locals - a set of locals used to capture parts of Expression + 3) Initializers - initializers for Locals + + To be used in With statement only! + + + + + Represents the state of Option Strict checking. + + + + + + Option Strict is Off. No Option Strict checks are in effect. + + + + + The Option Strict checks generate warnings. (Note that other + compile options may hide these warnings, or turn them into errors.) + + + + + Option Strict is On. All Option Strict checks are in effect and produce errors. + + + + + This class is used to validate the compiler options. + + + + + Parse the project level imports, adding errors to the errorBag as necessary + + + + + Validate and parse the root namespace. If the root namespace string is a valid namespace name, the parsed + version is returned. Otherwise Nothing is returned. + + + + + Check if a string is a valid component of the root namespace. We use the usual + VB identifier rules, but don't check for keywords (this is the same as previous versions). + + + + + Adds predefined preprocessor symbols VBC_VER and TARGET to given list of preprocessor symbols if not included yet. + + The Output kind to derive the value of TARGET symbol from. + A collection of KeyValue pairs representing existing symbols. + Array of symbols that include VBC_VER and TARGET. + + + + Adds predefined preprocessor symbols VBC_VER and TARGET to given list of preprocessor symbols if not included yet. + + The Output kind to derive the value of TARGET symbol from. + An parameter array of KeyValue pairs representing existing symbols. + Array of symbols that include VBC_VER and TARGET. + + + + Adds predefined preprocessor symbols VBC_VER and TARGET to given list of preprocessor symbols if not included yet. + + The Output kind to derive the value of TARGET symbol from. + An ImmutableArray of KeyValue pairs representing existing symbols. + Array of symbols that include VBC_VER and TARGET. + + + + The possible reasons a symbol may be inaccessible + + + + + + Contains the code for determining VB accessibility rules. + + + + + Checks if 'symbol' is accessible from within assembly 'within'. + + + + + Checks if 'symbol' is accessible from within assembly 'within'. + + + + + Checks if 'symbol' is accessible from within type 'within', with + an optional qualifier of type "throughTypeOpt". + + + + + Checks if 'symbol' is accessible from within type 'within', with + a qualifier of type "throughTypeOpt". Sets "failedThroughTypeCheck" to true + if it failed the "through type" check. + + + + + Checks if 'symbol' is accessible from within 'within', which must be a NamedTypeSymbol or + an AssemblySymbol. If 'symbol' is accessed off + of an expression then 'throughTypeOpt' is the type of that expression. This is needed to + properly do protected access checks. Sets "failedThroughTypeCheck" to true if this protected + check failed. + + + + + Determine if "derivedType" inherits from or implements "baseType", ignoring constructed types, and dealing + only with original types. + + + + + Captures information about illegal access exposure. + + + + + + The exposed type. + + + + + Namespace or type that "gains" access to the type. + + + + + Returns true if there is no illegal access exposure, false otherwise. + + + Type or member exposing the type. + + + The exposed type. + + + If function returns false, it requests an instance of ArrayBuilder from the pool and populates + it with information about illegal exposure. The caller is responsible for returning the ArrayBuilder + to the pool. + + + + + + + Returns true if there is no illegal access exposure, false otherwise. + + + + + Determine if member is the definition of the type, or + is contained (directly or indirectly) in the definition of the type. + + + + + Returns true if there is no illegal access exposure, false otherwise. + + Four cases: + 1: Member is not protected, non of its enclosing scopes are protected + 2: Member is not protected, but some of its enclosing scopes are protected + 3: Member is protected, non of its enclosing scopes are protected + 4: Member is protected, some of its enclosing scopes are also protected + + + + + Can type be accessed through container's inheritance? + + + + + This function finds the inner most enclosing scope whose Access + is lesser than or equal to the given access "StopAtAccess". + + Member - for which the enclosing scope has to be found + the enclosing scope's access has to be lesser than + + + + + Returns false if there were errors reported due to access exposure, true otherwise. + + + + + Narrow a quadword result to a specific integral type, setting Overflow true + if the result value cannot be represented in the result type. + + + + + Summarizes whether a conversion is allowed, and if so, which kind of conversion (and in some cases, the + associated symbol). + + + + + Returns True if the conversion exists, either as a widening or narrowing conversion. + + + If this returns True, exactly one of or will return True. + If this returns False, neither or will return True. + + + + + Returns True if this conversion a narrowing conversion, and not a widening conversion. + + + + + Returns True if this conversion is a widening conversion, and not a narrowing conversion. + + + + + Returns True if this conversion is an identity conversion. + + + Note that identity conversion are also considered widening conversions. + + + + + Returns True if this conversion is a default conversion (a conversion from the "Nothing" literal). + + Note that default conversions are considered widening conversions. + + + + Returns True if this conversion is a widening numeric conversion or a narrowing numeric conversion, as defined in + section 8.3. + + + + + Returns True if this conversion is a narrowing boolean conversion, as defined in section 8.2. + + + + + Returns True if this conversion is a widening reference conversion or narrowing reference conversion, as defined in + section 8.4. + + + + + Returns True if this conversion is a widening anonymous delegate conversion as defined in section 8.8, or a + narrowing anonymous delegate conversion as defined in section 8.9. + + + + + Returns True if this is a lambda conversion. + + + + + Returns True if this conversion is a widening array conversion or a narrowing array conversion, as defined in + section 8.5. + + + + + Returns True if this conversion a widening value type conversion or a narrowing value type conversion as defined in + section 8.6. + + + + + Returns True if this conversion a widening nullable value type conversion or a narrowing nullable value type + conversion as defined in section 8.6.1. + + + + + Returns True if this conversion a widening string conversion or a narrowing string conversion as defined in section + 8.7. + + + + + Returns True if this conversion a widening type parameter or a narrowing type parameter conversion, as defined in + section 8.10. + + + + + Returns True if this conversion a widening user defined or a narrowing user defined conversion, as defined in + section 8.11. + + + If this returns True, the involved conversion method can be obtained with the + property. + + + + + Returns the method that defines the user defined conversion, if any. Otherwise returns Nothing. + + + + + Returns True if two values are equal. + + The left value. + The right value. + + + + Returns True if two values are not equal. + + The left value. + The right value. + + + + Creates a from this Visual Basic conversion. + + The that represents this conversion. + + This is a lossy conversion; it is not possible to recover the original + from the struct. + + + + + Determines whether the specified object is equal to the current object. + + + The object to compare with the current object. + + + + + Determines whether the specified object is equal to the current object. + + + The object to compare with the current object. + + + + + Returns a hash code for the current object. + + + + + Returns a string that represents the current object. + + + + + Because flags can be combined, use the method IsIdentityConversion when testing for ConversionKind.Identity + + + + + + Can be combined with to indicate that the underlying value conversion is a predefined tuple conversion + + + + + Can be combined with to indicate that the underlying value conversion is a predefined tuple conversion + + + + + The purpose of this class is to answer questions about convertibility of one type to another. + It also answers questions about conversions from an expression to a type. + + The code is organized such that each method attempts to implement exactly one section of the + specification. + + + + + + Attempts to fold conversion of a constant expression. + + Returns Nothing if conversion cannot be folded. + + If conversion failed due to non-integer overflow, ConstantValue.Bad is returned. Consumer + is responsible for reporting appropriate diagnostics. + + If integer overflow occurs, integerOverflow is set to True and ConstantValue for overflowed result is returned. + Consumer is responsible for reporting appropriate diagnostics and potentially discarding the result. + + + + + Attempts to fold conversion of a constant expression. + + Returns Nothing if conversion cannot be folded, i.e. unexpected source and destination types. + Returns Bad value (Discriminator = ConstantValueTypeDiscriminator.Bad) if conversion failed due to non-integer overflow. + + If integer overflow occurs, integerOverflow is set to True and the overflowed result is returned. + + + + + This function classifies all intrinsic language conversions and user-defined conversions. + + + + + This function classifies all intrinsic language conversions, such as inheritance, + implementation, array covariance, and conversions between intrinsic types. + + + + + This function classifies all intrinsic language conversions and user-defined conversions. + + + + + Reclassify lambdas, array literals, etc. + + + + + This function classifies user-defined conversions between two types. + + + + + + + + + This function classifies user-defined conversions. + + + + + + + + + This function classifies all intrinsic language conversions, such as inheritance, + implementation, array covariance, and conversions between intrinsic types. + + + + + Helper structure to classify conversions from named types to interfaces + in accumulating fashion. + + + + + Accumulates classification information about conversion to interface. + Returns True when classification gets promoted to Identity, this method should not + be called after that. + + + + + Returns when classification gets promoted to Identity. + + + + + Returns true if and only if baseType is a base class of derivedType. + + + Derived class type. + + + Target base class type. + + + + + + + + Calculate MethodConversionKind based on required return type conversion. + + TODO: It looks like Dev10 MethodConversionKinds for return are badly named because + they appear to give classification in the direction opposite to the data + flow. This is very confusing. However, I am not going to rename them just yet. + Will do this when all parts are ported and working together, otherwise it will + be very hard to port the rest of the feature. + + We are trying to classify conversion between methods + ConvertFrom(...) As returnTypeOfConvertFromMethod -> ConvertTo(...) As returnTypeOfConvertToMethod + + The relaxation stub would look like: + Stub(...) As returnTypeOfConvertToMethod + Return ConvertFrom(...) + End ... + + + + + Returns the methods conversions for the given conversion kind + + We are trying to classify conversion between methods arguments + delegateInvoke(parameterConvertFrom) -> targetMethod(parameterConvertTo) + + The relaxation stub would look like (stub has same signature as delegate invoke): + Stub(parameterConvertFrom) + return targetMethod(parameterConvertTo) + End Method + + The conversion. + The delegate parameter type. + + + + Will set only bits used for delegate relaxation level. + + + + + Determine the relaxation level of a given conversion. This will be used by + overload resolution in case of conflict. This is to prevent applications that compiled in VB8 + to fail in VB9 because there are more matches. And the same for flipping strict On to Off. + + Will set only bits used for delegate relaxation level. + + + + + Determines whether a stub needed for the delegate creations conversion based on the given method conversions. + + The method conversions. + true if a stub needed for conversion; otherwise, false. + + + + + Tells whether the method conversion is considered to be narrowing or not. + + + + + Determines whether the given conversion is CLR supported conversion or not. + + The conversion. + true if the given conversion is a CLR supported conversion; otherwise, false. + + + + + Used by ClassifyUserDefinedConversion to pass an ArrayTypeSymbol that has a link back to the BoundArrayLiteral node. + This allows the ClassifyConversionOperatorInOutConversions to properly classify a conversion from the inferred array + type to the input type of a user defined conversion. + + + + + + Create a new ArrayTypeSymbol. + + + + + A map from Operator name to number of parameters and kind. + + + + + Operator kind and expected number of parameters. + + + + + Returns UnaryOperatorKind.Error in case of error, otherwise adjusted operator kind. + + + + + Returns result type of the operator or SpecialType.None if operator is not supported. + + + + + Attempts to fold unary operator applied to a constant expression. + + Returns Nothing if operator cannot be folded. + + If folding failed due to non-integer overflow, ConstantValue.Bad is returned. Consumer + is responsible for reporting appropriate diagnostics. + + If integer overflow occurs, integerOverflow is set to True and ConstantValue for overflowed result is returned. + Consumer is responsible for reporting appropriate diagnostics and potentially discarding the result. + + + + + Returns UnaryOperatorKind.Error in case of error, otherwise adjusted operator kind. + + For comparison operators, the operator type computed here is not + the result type of the comparison (which is typically boolean), + but is the type to which the operands are to be converted. For + other operators, the type computed here is both the result type + and the common operand type. + + + + + Attempts to fold binary operator applied to constant expressions. + + Returns Nothing if operator cannot be folded. + + If folding failed due to non-integer overflow or divide by zero, + ConstantValue.Bad is returned. Consumer is responsible for reporting appropriate diagnostics. + + If divide by zero occurs, divideByZero is set to True. + + If integer overflow occurs, integerOverflow is set to True and ConstantValue for overflowed result is returned. + Consumer is responsible for reporting appropriate diagnostics and potentially discarding the result. + + + + + Returns ConstantValue.Bad if, and only if, compound string length is out of supported limit. + + + + + Returns result type of the operator or SpecialType.None if operator is not supported. + + + + + Returns True if resolution of user defined conversions is complete, i.e. there were operators + applicable for the "Most Specific Widening Conversion" purposes. + This, however, doesn't mean that resolution is successful. + + + + + Returns false if operator should be ignored. + + + + + Returns True if resolution of user defined conversions is complete, i.e. there was an operator + that converts from the most specific source type to the most specific target type. + This, however, doesn't mean that resolution is successful. + + + + + The most encompassed type in a set of types is the one type that is encompassed + by all other types in the set. If no single type is encompassed by all other types, + then the set has no most encompassed type. In intuitive terms, the most encompassed + type is the "smallest" type in the set—the one type that can be converted from each + of the other types through a narrowing conversion. + + + + + The most encompassing type in a set of types is the one type that encompasses + all other types in the set. If no single type encompasses all other types, then + the set has no most encompassing type. In intuitive terms, the most encompassing + type is the "largest" type in the set—the one type to which each of the other + types can be converted through a widening conversion. + + + + + Returns number of types in the list of {input type, output type} that refer to a generic type parameter. + + + + + A quick check whether given conversion operator is a widening operator. + + + + + Collect user-defined conversion operators. + Operators declared in the same type are grouped together. + Within a group, widening operators are followed by narrowing operators. + + + + + Collect user-defined operators. + Operators declared in the same type are grouped together. + Within a group, name1 operators are followed by name2 operators. + + + + + Returns True if we should stop climbing inheritance hierarchy. + + + + + Given the type of operator's argument, return corresponding type to + look for operator in. Can return Nothing. + + + + + Information about a candidate from a group. + Will have different implementation for methods, extension methods and properties. + + + + + + Whether the method is used as extension method vs. called as a static method. + + + + + Whether the method is used as an operator. + + + + + Whether the method is used in a lifted to nullable form. + + + + + Precedence level for an extension method. + + + + + Extension method type parameters that were fixed during currying, if any. + If none were fixed, BitArray.Null should be returned. + + + + + Receiver type for extension method. Otherwise, containing type. + + + + + For extension methods, the type of the fist parameter in method's definition (i.e. before type parameters are substituted). + Otherwise, same as the ReceiverType. + + + + + Implementation for an ordinary method (based on usage). + + + + + Implementation for an extension method, i.e. it is used as an extension method. + + + + + Implementation for an operator + + + + + Implementation for a lifted operator. + + + + + Implementation for a property. + + + + + Only bits specific to delegate relaxation level are returned. + + + + + This might simplify error reporting. If not, consider getting rid of this property. + + + + + Perform overload resolution on the given method or property group, with the given arguments and names. + The names can be null if no names were supplied to any arguments. + + + + + Perform overload resolution on the given method group, with the given arguments. + + + + + Perform overload resolution on the given method group, with the given arguments and names. + The names can be null if no names were supplied to any arguments. + + + + + Perform overload resolution on the given array of property symbols. + + + + + Given instance method candidates gone through applicability analysis, + figure out if we should consider extension methods, if any. + + + + + §11.8.1 Overloaded Method Resolution + 6. Next, if, given any two members of the set, M and N, M is more applicable than N + to the argument list, eliminate N from the set. If more than one member remains + in the set and the remaining members are not equally applicable to the argument + list, a compile-time error results. + 7. Otherwise, given any two members of the set, M and N, apply the following tie-breaking rules, in order. + + Returns amount of applicable candidates left. + + Note that less applicable candidates are going to be eliminated if and only if there are most applicable + candidates. + + + + + Returns amount of applicable candidates left. + + + + + Returns True if there are most applicable candidates. + + indexesOfMostApplicableCandidates will contain indexes of equally applicable candidates, which are most applicable + by comparison to the other (non-equal) candidates. The indexes will be in ascending order. + + + + + §11.8.1 Overloaded Method Resolution + 7. Otherwise, given any two members of the set, M and N, apply the following tie-breaking rules, in order. + + + + + §11.8.1 Overloaded Method Resolution + 7. Otherwise, given any two members of the set, M and N, apply the following tie-breaking rules, in order. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.10. If the overload resolution is being done to resolve the target of a + delegate-creation expression from an AddressOf expression and M is a + function, while N is a subroutine, eliminate N from the set. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.8. If one or more arguments are AddressOf or lambda expressions, and all of the corresponding + delegate types in M match exactly, but not all do in N, eliminate N from the set. + 7.9. If one or more arguments are AddressOf or lambda expressions, and all of the corresponding + delegate types in M are widening conversions, but not all are in N, eliminate N from the set. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.9. If M did not use any optional parameter defaults in place of explicit + arguments, but N did, then eliminate N from the set. + + !!!WARNING!!! The index (7.9) is based on "VB11 spec [draft 3]" version of documentation rather + than Dev10 documentation. + TODO: Update indexes of other overload method resolution rules + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.7. If M and N both required type inference to produce type arguments, and M did not + require determining the dominant type for any of its type arguments (i.e. each the + type arguments inferred to a single type), but N did, eliminate N from the set. + + + + + §11.8.1.1 Applicability + + + + + §11.8.1.1 Applicability + + + + + This method groups equally applicable (§11.8.1.1 Applicability) candidates into buckets. + + Returns an ArrayBuilder of buckets. Each bucket is represented by an ArrayBuilder(Of Integer), + which contains indexes of equally applicable candidates from input parameter 'candidates'. + + + + + §11.8.1 Overloaded Method Resolution + 3. Next, eliminate all members from the set that require narrowing conversions + to be applicable to the argument list, except for the case where the argument + expression type is Object. + 4. Next, eliminate all remaining members from the set that require narrowing coercions + to be applicable to the argument list. If the set is empty, the type containing the + method group is not an interface, and strict semantics are not being used, the + invocation target expression is reclassified as a late-bound method access. + Otherwise, the normal rules apply. + + Returns amount of applicable candidates left. + + + + + + + §11.8.1 Overloaded Method Resolution + 2. Next, eliminate all members from the set that are inaccessible or not applicable to the argument list. + + Note, similar to Dev10 compiler this process will eliminate candidates requiring narrowing conversions + if strict semantics is used, exception are candidates that require narrowing only from numeric constants. + + Returns amount of applicable candidates left. + + + + + + + Figure out corresponding arguments for parameters §11.8.2 Applicable Methods. + + Note, this function mutates the candidate structure. + + If non-Nothing ArrayBuilders are returned through parameterToArgumentMap and paramArrayItems + parameters, the caller is responsible fo returning them into the pool. + + Assumptions: + 1) This function is never called for a candidate that should be rejected due to parameter count. + 2) Omitted arguments [ Call Goo(a, , b) ] are represented by OmittedArgumentExpression node in the arguments array. + 3) Omitted argument never has name. + 4) argumentNames contains Nothing for all positional arguments. + + !!! Should keep this function in sync with Binder.PassArguments, which uses data this function populates. !!! + !!! Should keep this function in sync with Binder.ReportOverloadResolutionFailureForASingleCandidate. !!! + !!! Everything we flag as an error here, Binder.ReportOverloadResolutionFailureForASingleCandidate should detect as well. !!! + + + + + Match candidate's parameters to arguments §11.8.2 Applicable Methods. + + Note, similar to Dev10 compiler this process will eliminate candidate requiring narrowing conversions + if strict semantics is used, exception are candidates that require narrowing only from numeric constants. + + Assumptions: + 1) This function is never called for a candidate that should be rejected due to parameter count. + 2) Omitted arguments [ Call Goo(a, , b) ] are represented by OmittedArgumentExpression node in the arguments array. + 3) Omitted argument never has name. + 4) argumentNames contains Nothing for all positional arguments. + + !!! Should keep this function in sync with Binder.PassArguments, which uses data this function populates. !!! + !!! Should keep this function in sync with Binder.ReportOverloadResolutionFailureForASingleCandidate. !!! + !!! Should keep this function in sync with InferenceGraph.PopulateGraph. !!! + !!! Everything we flag as an error here, Binder.ReportOverloadResolutionFailureForASingleCandidate should detect as well. !!! + + + + + Should be in sync with Binder.ReportByRefConversionErrors. + + + + + Should be in sync with Binder.ReportByValConversionErrors. + + + + + Performs an initial pass through the group of candidates and does + the following in the process. + 1) Eliminates candidates based on the number of supplied arguments and number of supplied generic type arguments. + 2) Adds additional entries for expanded ParamArray forms when applicable. + 3) Infers method's generic type arguments if needed. + 4) Substitutes method's generic type arguments. + 5) Eliminates candidates based on shadowing by signature. + This partially takes care of §11.8.1 Overloaded Method Resolution, section 7.1. + If M is defined in a more derived type than N, eliminate N from the set. + 6) Eliminates candidates with identical virtual signatures by applying various shadowing and + tie-breaking rules from §11.8.1 Overloaded Method Resolution, section 7.0 + • If M has fewer parameters from an expanded paramarray than N, eliminate N from the set. + 7) Takes care of unsupported overloading within the same type for instance methods/properties. + + Assumptions: + 1) Shadowing by name has been already applied. + 2) group can include extension methods. + 3) group contains original definitions, i.e. method type arguments have not been substituted yet. + Exception are extension methods with type parameters substituted based on receiver type rather + than based on type arguments supplied at the call site. + 4) group contains only accessible candidates. + 5) group doesn't contain members involved into unsupported overloading, i.e. differ by casing or custom modifiers only. + 6) group does not contain duplicates. + 7) All elements of arguments array are Not Nothing, omitted arguments are represented by OmittedArgumentExpression node. + + + This method is destructive to content of the [group] parameter. + + + + + Combine new candidate with the list of existing candidates, applying various shadowing and + tie-breaking rules. New candidate may or may not be added to the result, some + existing candidates may be removed from the result. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.5. If M is not an extension method and N is, eliminate N from the set. + 7.6. If M and N are extension methods and M was found before N, eliminate N from the set. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.4. If M is less generic than N, eliminate N from the set. + + + + + Implements shadowing based on + §11.8.1.3 Depth of genericity + + + + + + + False if node of candidates wins + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.3. If M and N are extension methods and the target type of M has fewer type + parameters than the target type of N, eliminate N from the set. + !!! Note that spec talks about "fewer type parameters", but it is not really about count. + !!! It is about one refers to a type parameter and the other one doesn't. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + 7.1. If M is defined in a more derived type than N, eliminate N from the set. + This rule also applies to the types that extension methods are defined on. + 7.2. If M and N are extension methods and the target type of M is a class or + structure and the target type of N is an interface, eliminate N from the set. + + + + + For a receiver to match an instance, more or less, the type of that instance has to be convertible + to the type of the receiver with the same bit-representation (i.e. identity on value-types + and reference-convertibility on reference types). + Actually, we don't include the reference-convertibilities that seem nonsensical, e.g. enum() to underlyingtype() + We do include inheritance, implements and variance conversions amongst others. + + + + + Implements shadowing based on + §11.8.1 Overloaded Method Resolution. + • If M has fewer parameters from an expanded paramarray than N, eliminate N from the set. + + + + + This class walks all the statements in some syntax, in order, except those statements that are contained + inside expressions (a statement can occur inside an expression if it is inside + a lambda.) + + This is used when collecting the declarations and declaration spaces of a method body. + + Typically the client overrides this class and overrides various Visit methods, being sure to always + delegate back to the base. + + + + + The only public entry point is the Infer method. + + + + + Returns True if the inference algorithm should be restarted. + + + + + Returns False if the search should be cancelled. + + + + + Returns False if the search should be cancelled. + + + + + Returns first Or a modified version Of first With common tuple names from both types. + + + + + This class associates a symbol with particular custom format for display. + It can be passed as an argument for an error message in place where symbol display should go, + which allows to defer building strings and doing many other things (like loading metadata) + associated with that until the error message is actually requested. + + + + + Displays a value in the VisualBasic style. + + + + + + Returns a string representation of an object of primitive type. + + A value to display as a string. + Options used to customize formatting of an Object value. + A string representation of an object of primitive type (or null if the type is not supported). + + Handles , , , + , , , , , + , , , , , + , and Nothing. + + + + + Formats string literal. + + Literal value. + Options used to customize formatting of a literal value. + + + + Displays a symbol in the VisualBasic style. + + + + + + Displays a symbol in the Visual Basic style, based on a . + + The symbol to be displayed. + The formatting options to apply. If Nothing is passed, will be used. + A formatted string that can be displayed to the user. + + The return value is not expected to be syntactically valid Visual Basic. + + + + + Displays a symbol in the Visual Basic style, based on a . + Based on the context, qualify type And member names as little as possible without + introducing ambiguities. + + The symbol to be displayed. + Semantic information about the context in which the symbol is being displayed. + A position within the Or . + The formatting options to apply. If null is passed, will be used. + A formatted string that can be displayed to the user. + + The return value is not expected to be syntactically valid Visual Basic. + + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + The symbol to be displayed. + The formatting options to apply. If Nothing Is passed, will be used. + A list of display parts. + + Parts are not localized until they are converted to strings. + + + + + Convert a symbol to an array of string parts, each of which has a kind. Useful for + colorizing the display string. + + The symbol to be displayed. + Semantic information about the context in which the symbol is being displayed. + A position within the or . + The formatting options to apply. If null is passed, will be used. + A list of display parts. + + Parts are not localized until they are converted to strings. + + + + + Returns a string representation of an object of primitive type. + + A value to display as a string. + Whether or not to quote string literals. + Whether or not to display integral literals in hexadecimal. + A string representation of an object of primitive type (or null if the type is not supported). + + Handles , , , + , , , , , + , , , , , + , and Nothing. + + + + + Returns true if tuple type syntax can be used to refer to the tuple type without loss of information. + For example, it cannot be used when extension tuple is using non-default friendly names. + + + + + + + Return the number of special constraints ('Class', 'Structure', + and 'New') associated with the type parameter. + + + + Append a default argument (i.e. the default argument of an optional parameter). + Assumed to be non-null. + + + + + represents a single item in Handles list. + + + + + Kind of Handles event container. (Me, MyBase, MyClass or a WithEvents variable) + + + + + Symbol for the event handled in current Handles item. + + + + + Kind of a Handles item represented by a HandledEvent + + + + + Handles Me.Event1 + + + + + Handles MyClass.Event1 + + + + + Handles MyBase.Event1 + + + + + Handles SomeWithEventsVariable.Event1 + + + + + Virtual dispatch based on a symbol's particular class. + + Result type + Additional argument type + + + + Call the correct VisitXXX method in this class based on the particular type of symbol that is passed in. + + + + + Returns the System.String that represents the current TypedConstant. + + A System.String that represents the current TypedConstant. + + + + This is a SyntaxReference implementation that lazily finds the beginning of the block (if any) of the original syntax reference + + + + + Returns true if the specified node represents a lambda. + + + + + Given a node that represents a lambda body returns a node that represents the lambda. + + + + + SyntaxNode.GetCorrespondingLambdaBody(SyntaxNode) + + + We need to handle case when an old node that represents a lambda body with multiple nodes + of the same kind is mapped to a new node that belongs to the lambda body but is + different from the one that represents the new body. + + In that case isn't lambda representing node (the first range variable of a clause) + but its equivalent peer (another range variable of the same clause). + + + + + Returns true if the specified represents a body of a lambda. + + + + + Returns true if the specified is part of a lambda body. + Returns the node () that represents the containing lambda body. + + + VB lambda bodies may be non-contiguous sequences of nodes whose ancestor (parent or grandparent) is a lambda node. + Whenever we need to check whether a node is a lambda body node we should use this method. + + + + + If the specified node represents a lambda returns a node (or nodes) that represent its body (bodies). + + + + + If the specified node represents a "simple" lambda returns a node (or nodes) that represent its body (bodies). + Lambda is "simple" if all its body nodes are also its child nodes and vice versa. + + + + + Compares content of two nodes ignoring lambda bodies and trivia. + + + + + Non-user code lambdas are synthesized lambdas that create an instance of an anonymous type representing a pair of values, + or otherwise transform sequences/anonymous types from one form to another without calling user code. + TODO: Could we avoid generating proper lambdas for these? + + + + + Returns true if the specified node can represent a closure scope -- that is a scope of a captured variable. + Doesn't validate whether or not the node actually declares any captured variable. + + + + + this is a SyntaxReference implementation that lazily translates the result (SyntaxNode) of the original syntax reference + to other one. + + + + + Returns the TypeSyntax of the given NewExpressionSyntax if specified. + + + + + Returns the TypeSyntax of the given AsClauseSyntax if specified. + + + + + Returns the AttributeBlockSyntax of the given AsClauseSyntax if specified. + + + + + Updates the given SimpleNameSyntax node with the given identifier token. + This function is a wrapper that calls WithIdentifier on derived syntax nodes. + + + + The given simple name updated with the given identifier. + + + + Given an initializer expression infer the name of anonymous property or tuple element. + Returns Nothing if unsuccessful + + + + + Enumeration with all Visual Basic syntax node kinds. + + + + + A class to represent an empty statement. This can occur when a colon is on a + line without anything else. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an "End XXX" statement, where XXX is a single keyword. + + + + + Represents an entire source file of VB code. + + + + + Represents an Option statement, such as "Option Strict On". + + + + + Represents an Imports statement, which has one or more imports clauses. + + + + + Represents the clause of an Imports statement that imports all members of a type or namespace or aliases a type or namespace. + + + + + Defines a XML namespace for XML expressions. + + + + + Represents a Namespace statement, its contents and the End Namespace statement. + + + + + Represents the beginning statement of a namespace declaration. This node always + appears as the Begin of a BlockStatement with Kind=NamespaceBlock. + + + + + Represents a declaration of Module, its contents and the End statement that + ends it. + + + + + Represents a declaration of a Structure, its contents and the End statement + that ends it. + + + + + Represents a declaration of a Interface, its contents and the End statement + that ends it. + + + + + Represents a declaration of a Class its contents and the End statement that + ends it. + + + + + Represents a declaration of an Enum, its contents and the End Enum statement + that ends it. + + + + + Represents an Inherits statement in a Class, Structure or Interface. + + + + + Represents an Implements statement in a Class or Structure. + + + + + Represents the beginning statement of a Module declaration. This node always + appears as the Begin of a TypeBlock with Kind=ModuleDeclarationBlock. + + + + + Represents the beginning statement of a Structure declaration. This node always + appears as the Begin of a TypeBlock with Kind=StructureDeclarationBlock. + + + + + Represents the beginning statement of a Interface declaration. This node always + appears as the Begin of a TypeBlock with Kind=InterfaceDeclarationBlock. + + + + + Represents the beginning statement of a Class declaration. This node always + appears as the Begin of a TypeBlock with Kind=ClassDeclarationBlock. + + + + + Represents the beginning statement of an Enum declaration. This node always + appears as the Begin of an EnumBlock with Kind=EnumDeclarationBlock. + + + + + Represents the type parameter list in a declaration. + + + + + Represents a type parameter on a generic type declaration. + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As Constraint". + + + + + One of the type parameter constraints clauses. This represents a constraint + clause in the form of "As { Constraints }". + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + + + One of the special type parameter constraints: New, Class or Structure. Which + kind of special constraint it is can be obtained from the Kind property and is + one of: NewConstraint, ReferenceConstraint or ValueConstraint. + + + + + Represents a type parameter constraint that is a type. + + + + + Represents a name and value in an EnumDeclarationBlock. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + + + Represents a Function or Sub block declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + + + Represents a constructor block declaration: A declaration that has a beginning + declaration, a body of executable statements and an end statement. + + + + + Represents an Operator block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + + + Represents an accessor block member declaration: A declaration that has a + beginning declaration, a body of executable statements and an end statement. + Examples include property accessors and custom event accessors. + + + + + Represents a block property declaration: A declaration that has a beginning + declaration, some get or set accessor blocks and an end statement. + + + + + Represents a custom event declaration: A declaration that has a beginning event + declaration, some accessor blocks and an end statement. + + + + + Represents the parameter list in a method declaration. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + + + The statement that declares a Sub or Function. If this method has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + + + A statement that declares a constructor. This statement will be the Begin of a + BlockStatement with Kind=MethodDeclarationBlock, and the body of the method + will be the Body of that BlockStatement. + + + + + A Declare statement that declares an external DLL method. + + + + + A Declare statement that declares an external DLL method. + + + + + A statement that declares a delegate type. + + + + + A statement that declares a delegate type. + + + + + A statement that declares an event. If the event being declared is a custom + event, this statement will be the Begin of a PropertyOrEventBlock, and the + accessors will be part of the Accessors of that node. + + + + + A statement that declares an operator. If this operator has a body, this + statement will be the Begin of a BlockStatement with + Kind=MethodDeclarationBlock, and the body of the method will be the Body of + that BlockStatement. + + + + + Statement that declares a property. If this property has accessors declared, + this statement will be the Begin of a BlockNode, and the accessors will be the + Body of that node. Auto properties are property declarations without a + PropertyBlock. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents a Get or Set accessor on a property declaration or an AddHandler, + RemoveHandler or RaiseEvent accessor on a custom event declaration. The Kind of + the node determines what kind of accessor this is. This statement is always the + Begin of a BlockNode, and the body of the accessor is the Body of that node. + + + + + Represents the "Implements ..." clause on a type member, which describes which + interface members this member implements. + + + + + Represents the "Handles ..." clause on a method declaration that describes + which events this method handles. + + + + + Represents event container specified through special keywords "Me", "MyBase" or + "MyClass".. + + + + + Represents event container that refers to a WithEvents member. + + + + + Represents event container that refers to a WithEvents member's property. + + + + + Represents a single handled event in a "Handles ..." clause. + + + + + Represents the beginning of a declaration. However, not enough syntax is + detected to classify this as a field, method, property or event. This is node + always represents a syntax error. + + + + + Represents the declaration of one or more variables or constants, either as + local variables or as class/structure members. In the case of a constant, it is + represented by having "Const" in the Modifiers (although technically "Const" is + not a modifier, it is represented as one in the parse trees.) + + + + + Represents the part of a variable or constant declaration statement that + associated one or more variable names with a type. + + + + + Represents an "As {type-name}" clause that does not have an initializer or + "New". The type has optional attributes associated with it, although attributes + are not permitted in all possible places where this node occurs. + + + + + Represents an "As New {type-name} [arguments] [initializers]" clause in a + declaration. The type has optional attributes associated with it, although + attributes are not permitted in many places where this node occurs (they are + permitted, for example, on automatically implemented properties.) + + + + + Represents a "With {...} clause used to initialize a new object's members. + + + + + Represents a "From {...} clause used to initialize a new collection object's + elements. + + + + + Represent a field initializer in a With {...} initializer where the field name + is inferred from the initializer expression. + + + + + Represent a named field initializer in a With {...} initializer, such as ".x = + expr". + + + + + Represents an "= initializer" clause in a declaration for a variable, + parameter or automatic property. + + + + + Represent a parameter to a method, property, constructor, etc. + + + + + Represents an identifier with optional "?" or "()" or "(,,,)" modifiers, as + used in parameter declarations and variable declarations. + + + + + Represents a modifier that describes an array type, without bounds, such as + "()" or "(,)". + + + + + Represents a group of attributes within "<" and ">" brackets. + + + + + Represents a single attribute declaration within an attribute list. + + + + + Represents a single attribute declaration within an attribute list. + + + + + Represents a file-level attribute, in which the attributes have no other + syntactic element they are attached to. + + + + + Represent an expression in a statement context. This may only be a invocation + or await expression in standard code but may be any expression in VB + Interactive code. + + + + + Represent a "? expression" "Print" statement in VB Interactive code. + + + + + Represents a While...End While statement, including the While, body and End + While. + + + + + Represents an entire Using...End Using statement, including the Using, body and + End Using statements. + + + + + Represents a entire SyncLock...End SyncLock block, including the SyncLock + statement, the enclosed statements, and the End SyncLock statement. + + + + + Represents a With...End With block, include the With statement, the body of the + block and the End With statement. + + + + + Represents the declaration of one or more local variables or constants. + + + + + Represents a label statement. + + + + + Represents a "GoTo" statement. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + + + A label for a GoTo, Resume, or On Error statement. An identifier, line number, + or next keyword. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + + + Represents a "Stop" or "End" statement. The Kind can be used to determine which + kind of statement this is. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + An exit statement. The kind of block being exited can be found by examining the + Kind. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + Represents a "Continue (block)" statement. THe kind of block referenced can be + determined by examining the Kind. + + + + + Represents a "Return" statement. + + + + + Represents a line If-Then-Else statement. + + + + + Represents part of a single line If statement, consisting of a beginning + if-statement, followed by a body of statement controlled by that beginning + statement. The Kind property returns if this is a SingleLineIf. + + + + + Represents the Else part of an If statement, consisting of a Else statement, + followed by a body of statement controlled by that Else. + + + + + Represents a block If...Then...Else...EndIf Statement. The Kind property can be + used to determine if it is a block or line If. + + + + + Represents part of an If statement, consisting of a beginning statement (If or + ElseIf), followed by a body of statement controlled by that beginning + statement. The Kind property returns if this is an If or ElseIf. + + + + + Represents the Else part of an If statement, consisting of a Else statement, + followed by a body of statement controlled by that Else. + + + + + Represents the If part or ElseIf part of a If...End If block (or line If). This + statement is always the Begin of a IfPart. The Kind can be examined to + determine if this is an If or an ElseIf statement. + + + + + Represents the If part or ElseIf part of a If...End If block (or line If). This + statement is always the Begin of a IfPart. The Kind can be examined to + determine if this is an If or an ElseIf statement. + + + + + Represents the Else part of a If...End If block (or line If). This statement is + always the Begin of a ElsePart. + + + + + Represents an entire Try...Catch...Finally...End Try statement. + + + + + Represents a Catch part of a Try...Catch...Finally...End Try statement, + consisting of a Catch statement, followed by a body of statements controlled by + that Catch statement. The Kind property returns which kind of part this is. + + + + + Represents the Finally part of a Try...Catch...Finally...End Try statement, + consisting of a Finally statement, followed by a body of statements controlled + by the Finally. + + + + + Represents the Try part of a Try...Catch...Finally...End Try. This + statement is always the Begin of a TryPart. + + + + + Represents the Catch part of a Try...Catch...Finally...End Try. This + statement is always the Begin of a CatchPart. + + + + + Represents the When/Filter clause of a Catch statement + + + + + Represents the Finally part of a Try...Catch...Finally...End Try. This + statement is always the Begin of a FinallyPart. + + + + + Represents the "Error" statement. + + + + + Represents an OnError Goto statement. + + + + + Represents an OnError Goto statement. + + + + + Represents an OnError Goto statement. + + + + + Represents an OnError Resume Next statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + Represents a "Resume" statement. The Kind property can be used to determine if + this is a "Resume", "Resume Next" or "Resume label" statement. + + + + + Represents a Select Case block, including the Select Case that begins it, the + contains Case blocks and the End Select. + + + + + Represents a Select Case statement. This statement always occurs as the Begin + of a SelectBlock. + + + + + Represents a case statement and its subsequent block. + + + + + Represents a case statement and its subsequent block. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + + + Represents a Case or Case Else statement. This statement is always the Begin of + a CaseBlock. If this is a Case Else statement, the Kind=CaseElse, otherwise the + Kind=Case. + + + + + The "Else" part in a Case Else statement. + + + + + Represents a single value in a Case. + + + + + Represents a range "expression To expression" in a Case. + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + Represents a relation clause in a Case statement, such as "Is > expression". + + + + + Represents the "SyncLock" statement. This statement always occurs as the Begin + of a SyncLockBlock. + + + + + Represents a For or For Each block, including the introducing statement, the + body and the "Next" (which can be omitted if a containing For has a Next with + multiple variables). + + + + + Represents a For or For Each block, including the introducing statement, the + body and the "Next" (which can be omitted if a containing For has a Next with + multiple variables). + + + + + The For statement that begins a For-Next block. This statement always occurs as + the Begin of a ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + + + The Step clause in a For Statement. + + + + + The For Each statement that begins a For Each-Next block. This statement always + occurs as the Begin of a ForBlock, and the body of the For Each-Next is the + Body of that ForBlock. Most of the time, the End of that ForBlock is the + corresponding Next statement. However, multiple nested For statements are ended + by a single Next statement with multiple variables, then the inner For + statements will have End set to Nothing, and the Next statement is the End of + the outermost For statement that is being ended. + + + + + The Next statement that ends a For-Next or For Each-Next block. This statement + always occurs as the End of a ForBlock (with Kind=ForBlock or ForEachBlock), + and the body of the For-Next is the Body of that ForBlock. The Begin of that + ForBlock has the corresponding For or For Each statement. + + + + + The Using statement that begins a Using block. This statement always occurs as + the Begin of a UsingBlock, and the body of the Using is the Body of that + UsingBlock. + + + + + Represents a Throw statement. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a simple, compound, or Mid assignment statement. Which one can be + determined by checking the Kind. + + + + + Represents a left-hand side of a MidAssignment statement. + + + + + Represent a call statement (also known as a invocation statement). + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + + + Represents an AddHandler or RemoveHandler statement. The Kind property + determines which one. + + + + + Represent a RaiseEvent statement. + + + + + Represents a "With" statement. This statement always occurs as the + BeginStatement of a WithBlock, and the body of the With is the Body of that + WithBlock. + + + + + Represents a ReDim statement. + + + + + Represents a ReDim statement. + + + + + Represents a ReDim statement clause. + + + + + Represents an "Erase" statement. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a literal. The kind of literal is determined by the Kind property: + IntegerLiteral, CharacterLiteral, BooleanLiteral, DecimalLiteral, + FloatingLiteral, DateLiteral or StringLiteral. The value of the literal can be + determined by casting the associated Token to the correct type and getting the + value from the token. + + + + + Represents a parenthesized expression. + + + + + Identifies the special instance "Me" + + + + + Identifies the special instance "MyBase" + + + + + Identifies the special instance "MyClass" + + + + + Represents a GetType expression. + + + + + Represents a TypeOf...Is or IsNot expression. + + + + + Represents a TypeOf...Is or IsNot expression. + + + + + Represents a GetXmlNamespace expression. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + + + Represents member access (.name) or dictionary access (!name). The Kind + property determines which kind of access. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + + + Represents an XML member element access (node.<Element>), attribute + access (node.@Attribute) or descendants access (node...<Descendant>). The + Kind property determines which kind of access. + + + + + Represents an invocation expression consisting of an invocation target and an + optional argument list or an array, parameterized property or object default + property index. + + + + + Represents a New expression that creates a new non-array object, possibly with + a "With" or "From" clause. + + + + + Represents a New expression that create an object of anonymous type. + + + + + Represents an expression that creates a new array. + + + + + Represents an expression that creates a new array without naming the element + type. + + + + + Represents a cast to a pre-defined type using a pre-defined cast expression, + such as CInt or CLng. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Represents a binary operator. The Kind property classifies the operators into + similar kind of operators (arithmetic, relational, logical or string); the + exact operation being performed is determined by the Operator property. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + + + Describes a unary operator: Plus, Negate, Not or AddressOf. + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + + + Represents a conditional expression, If(condition, true-expr, false-expr) or + If(expr, nothing-expr). + + + + + Represents a single line lambda expression. + + + + + Represents a single line lambda expression. + + + + + Represents a multi-line lambda expression. + + + + + Represents a multi-line lambda expression. + + + + + Represents the header part of a lambda expression + + + + + Represents the header part of a lambda expression + + + + + Represents a parenthesized argument list. + + + + + Represents an omitted argument in an argument list. An omitted argument is not + considered a syntax error but a valid case when no argument is required. + + + + + Represents an argument that is just an optional argument name and an expression. + + + + + Represents a range argument, such as "0 to 5", used in array bounds. The + "Value" property represents the upper bound of the range. + + + + + This class represents a query expression. A query expression is composed of one + or more query operators in a row. The first query operator must be a From or + Aggregate. + + + + + Describes a single variable of the form "x [As Type] In expression" for use in + query expressions. + + + + + Describes a single variable of the form "[x [As Type] =] expression" for use in + query expressions. + + + + + Describes a single variable of the form "[x [As Type] =] aggregation-function" + for use in the Into clause of Aggregate or Group By or Group Join query + operators. + + + + + Represents the name and optional type of an expression range variable. + + + + + Represents an invocation of an Aggregation function in the aggregation range + variable declaration of a Group By, Group Join or Aggregate query operator. + + + + + Represents the use of "Group" as the aggregation function in the in the + aggregation range variable declaration of a Group By or Group Join query + operator. + + + + + Represents a "From" query operator. If this is the beginning of a query, the + Source will be Nothing. Otherwise, the Source will be the part of the query to + the left of the From. + + + + + Represents a "Let" query operator. + + + + + Represents an Aggregate query operator. + + + + + Represents the "Distinct" query operator. + + + + + Represents a "Where" query operator. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + + + Represents a "Skip While" or "Take While" query operator. The Kind property + tells which. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + + + Represents a "Skip" or "Take" query operator. The Kind property tells which. + + + + + Represents the "Group By" query operator. + + + + + Represents the "expression Equals expression" condition in a Join. + + + + + Represents a Join query operator. + + + + + Represents the "Group Join" query operator. + + + + + Represents the "Order By" query operator. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + + + An expression to order by, plus an optional ordering. The Kind indicates + whether to order in ascending or descending order. + + + + + Represents the "Select" query operator. + + + + + Represents an XML Document literal expression. + + + + + Represents the XML declaration prologue in an XML literal expression. + + + + + Represents an XML document prologue option - version, encoding, standalone or + whitespace in an XML literal expression. + + + + + Represents an XML element with content in an XML literal expression. + + + + + Represents Xml text. + + + + + Represents the start tag of an XML element of the form <element>. + + + + + Represents the end tag of an XML element of the form </element>. + + + + + Represents an empty XML element of the form <element /> + + + + + Represents an XML attribute in an XML literal expression. + + + + + Represents a string of XML characters embedded as the content of an XML + element. + + + + + Represents an XML name of the form 'name' appearing in GetXmlNamespace(). + + + + + Represents an XML name of the form 'name' or 'namespace:name' appearing in + source as part of an XML literal or member access expression or an XML + namespace import clause. + + + + + Represents an XML name of the form <xml-name> appearing in source as part + of an XML literal or member access expression or an XML namespace import + clause. + + + + + Represents an XML namespace prefix of the form 'prefix:' as in xml:ns="". + + + + + Represents an XML comment of the form <!-- Comment --> appearing in an + XML literal expression. + + + + + Represents an XML processing instruction of the form '<? XMLProcessingTarget + XMLProcessingValue ?>'. + + + + + Represents an XML CDATA section in an XML literal expression. + + + + + Represents an embedded expression in an XML literal e.g. '<name><%= + obj.Name =%></name>'. + + + + + Represents an array type, such as "A() or "A(,)", without bounds specified for + the array. + + + + + A type name that represents a nullable type, such as "Integer?". + + + + + Represents an occurrence of a Visual Basic built-in type such as Integer or + String in source code. + + + + + Represents a type name consisting of a single identifier (which might include + brackets or a type character). + + + + + Represents a simple type name with one or more generic arguments, such as "X(Of + Y, Z). + + + + + Represents a qualified type name, for example X.Y or X(Of Z).Y. + + + + + Represents a name in the global namespace. + + + + + Represents a parenthesized list of generic type arguments. + + + + + Syntax node class that represents a value of 'cref' attribute inside + documentation comment trivia. + + + + + Represents a parenthesized list of argument types for a signature inside + CrefReferenceSyntax syntax. + + + + + Represent a Yield statement. + + + + + Represent a Await expression. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a single punctuation mark or operator in a VB program. Which one can + be determined from the Kind property. + + + + + Represents a sequence of characters appearing in source with no possible + meaning in the Visual Basic language (e.g. the semicolon ';'). This token + should only appear in SkippedTokenTrivia as an artifact of parsing error + recovery. + + + + + Represents an Xml NCName per Namespaces in XML 1.0 + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + + + Represents character data in Xml content also known as PCData or in an Xml + attribute value. All text is here for now even text that does not need + normalization such as comment, pi and cdata text. + + + + + Represents an identifier token. This might include brackets around the name and + a type character. + + + + + Represents an integer literal token. + + + + + Represents a floating literal token. + + + + + Represents a Decimal literal token. + + + + + Represents a Date literal token. + + + + + Represents a string literal token. + + + + + Represents a string literal token. + + + + + Represents tokens that were skipped by the parser as part of error recovery, + and thus are not part of any syntactic structure. + + + + + Represents a documentation comment e.g. ''' <Summary> appearing in source. + + + + + A symbol referenced by a cref attribute (e.g. in a <see> or + <seealso> documentation comment tag). For example, the M in <see + cref="M" />. + + + + + A param or type param symbol referenced by a name attribute (e.g. in a + <param> or <typeparam> documentation comment tag). For example, the + M in <param name="M" />. + + + + + ExpressionSyntax node representing the object conditionally accessed. + + + + + Represents true whitespace: spaces, tabs, newlines and the like. + + + + + Represents line breaks that are syntactically insignificant. + + + + + Represents colons that are syntactically insignificant. + + + + + Represents a comment. + + + + + Represents an explicit line continuation character at the end of a line, i.e., + _ + + + + + Represents a ''' prefix for an XML Documentation Comment. + + + + + Represents text in a false preprocessor block + + + + + Represents a #Const pre-processing constant declaration appearing in source. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + + + Represents the beginning of an #If pre-processing directive appearing in + source. + + + + + Represents an #Else pre-processing directive appearing in source. + + + + + Represents an #End If pre-processing directive appearing in source. + + + + + Represents the beginning of a #Region directive appearing in source. + + + + + Represents an #End Region directive appearing in source. + + + + + Represents the beginning of a #ExternalSource pre-processing directive + appearing in source. + + + + + Represents an #End ExternalSource pre-processing directive appearing in source. + + + + + Represents an #ExternalChecksum pre-processing directive appearing in source. + + + + + Represents #Enable Warning pre-processing directive appearing in source. + + + + + Represents #Disable Warning pre-processing directive appearing in source. + + + + + Represents an #r directive appearing in scripts. + + + + + Represents an unrecognized pre-processing directive. This occurs when the + parser encounters a hash '#' token at the beginning of a physical line but does + recognize the text that follows as a valid Visual Basic pre-processing + directive. + + + + + Represents an alias identifier followed by an "=" token in an Imports clause. + + + + + Represents an identifier name followed by a ":=" token in a named argument. + + + + + Represents a "Do ... Loop" block. + + + + + Represents a "Do ... Loop" block. + + + + + Represents a "Do ... Loop" block. + + + + + Represents a "Do ... Loop" block. + + + + + Represents a "Do ... Loop" block. + + + + + Represents a simple "Do" statement that begins a "Do ... Loop" block. + + + + + Represents a "Do While" statement that begins a "Do ... Loop" block. + + + + + Represents a "Do Until" statement that begins a "Do ... Loop" block. + + + + + Represents a simple "Loop" statement that end a "Do ... Loop" block. + + + + + Represents a "Loop While" statement that end a "Do ... Loop" block. + + + + + Represents a "Loop Until" statement that end a "Do ... Loop" block. + + + + + Represents a "While ..." clause of a "Do" or "Loop" statement. + + + + + Represents an "Until ..." clause of a "Do" or "Loop" statement. + + + + + Represents a single keyword in a VB program. Which keyword can be determined + from the Kind property. + + + + + Represents a NameOf expression. + + + + + Represents an interpolated string expression. + + + + + Represents literal text content in an interpolated string. + + + + + Represents an embedded expression in an interpolated string expression e.g. '{expression[,alignment][:formatString]}'. + + + + + Represents an alignment clause ', alignment' of an interpolated string embedded expression. + + + + + Represents a format string clause ':formatString' of an interpolated string embedded expression. + + + + + Represents a '$"' token in an interpolated string expression. + + + + + Represents literal character data in interpolated string expression. + + + + + Represents the end of interpolated string when parsing. + + + + + Represents tuple literal expression. + + + + + Represents tuple type. + + + + + Represents an element of a tuple type supplying only the type + + + + + Represents an element of a tuple type supplying element name and optionally a type. + + + + + Trivia created when merge conflict markers (like "<<<<<<<") are detected in source code + + + + + Determine if the given array contains the given kind. + + Array to search + Sought value + True if contains the value . + PERF: Not using Array.IndexOf here because it results in a call to IndexOf on the default EqualityComparer for SyntaxKind. The default comparer for SyntaxKind is + the ObjectEqualityComparer which results in boxing allocations. + + + + Find enclosing WithStatement if it exists. + + + + + + + + Simplified version of ExtractAnonymousTypeMemberName implemented on inner tokens. + + + + + Returns true if all arguments are of the specified kind and they are also missing. + + + + + Returns true if all arguments are missing. + + + + + + Given a syntax node of query clause returns its leading keyword + + + + + The base class for all nodes in the VB syntax tree. + + + + + Used by structured trivia which has no parent node, so need to know syntax tree explicitly + + + + + Returns a non-null SyntaxTree that owns this node. + If this node was created with an explicit non-null SyntaxTree, returns that tree. + Otherwise, if this node has a non-null parent, then returns the parent's SyntaxTree. + Otherwise, returns a newly created SyntaxTree rooted at this node, preserving this node's reference identity. + + + + + Returns the of the node. + + + + + The language name this node is syntax of. + + + + + The parent of this node. + + The parent node of this node, or Nothing if this node is the root. + + + + Deserialize a syntax node from a byte stream. + + + + + Returns True if this node represents a directive. + + + + + Same as accessing on . + + + Slight performance improvement. + + + + + Get the preceding trivia nodes of this node. If this node is a token, returns the preceding trivia + associated with this node. If this is a non-terminal, returns the preceding trivia of the first token + of this node. + + A list of the preceding trivia. + If this node is a non-terminal, the parents of the trivia will be the first token of this + non-terminal; NOT this node. + + + + Get the following trivia nodes of this node. If this node is a token, returns the following trivia + associated with this node. If this is a non-terminal, returns the following trivia of the last token + of this node. + + A list of the following trivia. + If this node is a non-terminal, the parents of the trivia will be the first token of this + non-terminal; NOT this node. + + + + Get all syntax errors associated with this node, or any child nodes, grand-child nodes, etc. The errors + are not in order. + + + + + Push any nodes that have errors in the given collection onto a stack + + + + + Given a error info from this node, create the corresponding syntax error with the right span. + + + + + Add an error to the given node, creating a new node that is the same except it has no parent, + and has the given error attached to it. The error span is the entire span of this node. + + The error to attach to this node + A new node, with no parent, that has this error added to it. + Since nodes are immutable, the only way to create nodes with errors attached is to create a node without an error, + then add an error with this method to create another node. + + + + Gets the location of this node. + + + + + Gets a SyntaxReference for this syntax node. SyntaxReferences can be used to regain access to a + syntax node without keeping the entire tree and source text in memory. + + + + + Gets a list of all the diagnostics in the sub tree that has this node as its root. + This method does not filter diagnostics based on compiler options like nowarn, warnaserror etc. + + + + + Finds a token according to the following rules: + 1) If position matches the End of the node's Span, then its last token is returned. + + 2) If node.FullSpan.Contains(position) then the token that contains given position is returned. + + 3) Otherwise an IndexOutOfRange is thrown + + + + + The parsed representation of a Visual Basic source document. + + + + + Map containing information about all conditional symbol definitions in the source file corresponding to a parsed syntax tree. + + + + + Conditional symbols map, where each key-value pair indicates: + Key: Conditional symbol name. + Value: Stack of all active conditional symbol definitions, i.e. #Const directives, in the source file corresponding to a parsed syntax tree. + All the defining #Const directives for a conditional symbol are pushed onto this stack in source code order. + Each stack entry is a tuple {InternalSyntax.CConst, Integer} where: + InternalSyntax.CConst: Constant value of the symbol. + Integer: Source position of the defining #Const directive. + + + + + Used to create new tree incrementally. + + + + + Get a reference to the given node. + + + + + A SyntaxTree is a tree of nodes that represents an entire file of VB + code, and is parsed by the parser. + + + + + Used to create new tree incrementally. + + + + + Get a reference to the given node. + + + + + The options used by the parser to produce the syntax tree. + + + + + Returns True for MyTemplate automatically added by compiler. + + + + + Produces a clone of a which will have current syntax tree as its parent. + + Caller must guarantee that if the same instance of makes multiple calls + to this function, only one result is observable. + + Type of the syntax node. + The original syntax node. + A clone of the original syntax node that has current as its parent. + + + + Gets the root node of the syntax tree. + + + + + Gets the root node of the syntax tree asynchronously. + + + By default, the work associated with this method will be executed immediately on the current thread. + Implementations that wish to schedule this work differently should override . + + + + + Gets the root node of the syntax tree if it is already available. + + + + + Gets the root of the syntax tree statically typed as . + + + Ensure that is true for this tree prior to invoking this method. + + Throws this exception if is false. + + + + Creates a new syntax based off this tree using a new source text. + + + If the new source text is a minor change from the current source text an incremental parse will occur + reusing most of the current syntax tree internal data. Otherwise, a full parse will occur using the new + source text. + + + + + Applies a text change to this syntax tree, returning a new syntax tree with the changes applied to it. + + + + + Creates a new syntax tree from a syntax node. + + An obsolete parameter. Diagnostic options should now be passed with + + + + + Internal helper for class to create a new syntax tree rooted at the given root node. + This method does not create a clone of the given root, but instead preserves its reference identity. + + NOTE: This method is only intended to be used from property. + NOTE: Do not use this method elsewhere, instead use method for creating a syntax tree. + + + + An obsolete parameter. Diagnostic options should now be passed with + + + + Creates a syntax tree by parsing the source text. + + + + + Gets a list of all the diagnostics in the sub tree that has the specified node as its root. + + + This method does not filter diagnostics based on compiler options like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the token and any related trivia. + + + This method does not filter diagnostics based on compiler options like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics associated with the trivia. + + + This method does not filter diagnostics based on compiler options like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics in either the sub tree that has the specified node as its root or + associated with the token and its related trivia. + + + This method does not filter diagnostics based on compiler options like /nowarn, /warnaserror etc. + + + + + Gets a list of all the diagnostics in the syntax tree. + + + This method does not filter diagnostics based on compiler options like /nowarn, /warnaserror etc. + + + + + Gets the location in terms of path, line and column for a given . + + Span within the tree. + Cancellation token. + + that contains path, line and column information. + + + The values are not affected by line mapping directives (#ExternalSource). + + + + + Gets the location in terms of path, line and column after applying source line mapping directives (#ExternalSource). + + Span within the tree. + Cancellation token. + + A valid that contains path, line and column information. + + If the location path is not mapped the resulting path is . + + + + + + + + + + + Gets a location for the specified text . + + + + + Determines if two trees are the same, disregarding trivia differences. + + The tree to compare against. + + If true then the trees are equivalent if the contained nodes and tokens declaring metadata visible symbolic information are equivalent, + ignoring any differences of nodes inside method bodies or initializer expressions, otherwise all nodes and tokens must be equivalent. + + + + + Produces a pessimistic list of spans that denote the regions of text in this tree that + are changed from the text of the old tree. + + The old tree. Cannot be Nothing. + The list is pessimistic because it may claim more or larger regions than actually changed. + + + + Gets a list of text changes that when applied to the old tree produce this tree. + + The old tree. Cannot be Nothing. + The list of changes may be different than the original changes that produced this tree. + + + + Represents a that descends an entire tree + visiting each SyntaxNode and its child s and s in depth-first order. + + + + + Determine whether there is any substitution of type parameters that will + make two types identical. + + + + + Determine whether there is any substitution of type parameters that will + make two types identical. + + The generic containing type. + LHS + RHS + + Substitutions performed so far (or null for none). + Keys are type parameters, values are types (possibly type parameters). + Will be updated with new substitutions by the callee. + Irrelevant if false is returned. + + True if there exists a type map such that Map(LHS) == Map(RHS). + + Derived from C# Dev10's BSYMMGR::UnifyTypes. + Two types will not unify if they have different custom modifiers. + + + + + Add a type parameter -> type argument substitution to a TypeSubstitution object, returning a new TypeSubstitution object + ByRef. + + + + + Return true if the given type contains the specified type parameter. + + + + + Utility functions to check if two implemented interfaces have variance ambiguity. + + What is "Variance Ambiguity"? Here's an example: + Class ReflectionType + Implements IEnumerable(Of Field) + Implements IEnumerable(Of Method) + Public Sub GetEnumeratorF() As IEnumerator(Of Field) Implements IEnumerable(Of Field).GetEnumerator ... + Public Sub GetEnumeratorM() As IEnumerator(Of Method) Implements IEnumerable(Of Method).GetEnumerator ... + End Class + Dim x as new ReflectionType + Dim y as IEnumerable(Of Member) = x + Dim z = y.GetEnumerator() + + Note that, through variance, both IEnumerable(Of Field) and IEnumerable(Of Method) have widening + conversions to IEnumerable(Of Member). So it's ambiguous whether the initialization of "z" would + invoke GetEnumeratorF or GetEnumeratorM. This function avoids such ambiguity at the declaration + level, i.e. it reports a warning on the two implements classes inside ReflectionType that they + may lead to ambiguity. + + + + + Determine if two interfaces that were constructed from the same original definition + have variance ambiguity. + + We have something like left=ICocon(Of Mammal, int32[]), right=ICocon(Of Fish, int32[]) + for some interface ICocon(Of Out T, In U). And we have to decide if left and right + might lead to ambiguous member-lookup later on in execution. + + To do this: go through each type parameter T, U... + * For "Out T", judge whether the arguments Mammal/Fish cause ambiguity or prevent it. + * For "In T", judge whether the arguments int32[]/int32[] cause ambiguity or prevent it. + + "Causing/preventing ambiguity" is described further below. + + Given all that, ambiguity was prevented in any positions, then left/right are fine. + Otherwise, if ambiguity wasn't caused in any positions, then left/right are fine. + Otherwise, left/right have an ambiguity. + + + + + Check two corresponding type arguments T1 and T2 and determine if the cause or prevent variable ambiguity. + + Identical types never cause or prevent ambiguity. + + If there could exist a **distinct** third type T3, such that T1 and T2 both convert via the variance + conversion to T3, then ambiguity is caused. This boils down to: + * Invariant parameters never cause ambiguity + * Covariant parameters "Out T": ambiguity is caused when the two type arguments + are non-object types not known to be values (T3=Object) + * Contravariant parameters "In U": ambiguity is caused when both: + - Neither T1 or T2 is a value type or a sealed (NotInheritable) reference type + - If T1 and T2 are both class types, one derives from the other. + (T3 is some type deriving or implementing both T1 and T2) + + Ambiguity is prevented when there T1 and T2 cannot unify to the same type, and there + cannot be a (not necessarily distinct) third type T3 that both T1 and T2 convert to via + the variance conversion. + + This boils down to: + * Invariant parameters: Ambiguity is prevented when: + - they are non-unifying + * Covariant parameters "Out T": Ambiguity is prevented when both: + - they are non-unifying + - at least one is a value type + * Contravariant parameters "In U": Ambiguity is prevented when: + - they are non-unifying AND + - at least one is known to be a value type OR + - both are known to be class types and neither derives from the other. + + + + + A class representing Visual Basic compilation Options. + + + + + Initializes a new instance of the VisualBasicCompilationOptions type with various options. + + The compilation output kind. + An optional parameter to specify the name of the assembly that this module will be a part of. + An optional parameter to specify the class or module that contains the Sub Main procedure. + An optional parameter to specify an alternate DefaultScriptClassName object to be used. + An optional collection of GlobalImports . + An optional parameter to specify the name of the default root namespace. + An optional parameter to specify the default Option Strict behavior. + An optional parameter to specify default Option Infer behavior. + An optional parameter to specify the default Option Explicit behavior. + An optional parameter to specify the default Option Compare Text behavior. + An optional parameter to specify the embedded Visual Basic Core Runtime behavior. + An optional parameter to specify enabling/disabling overflow checking. + An optional parameter to specify enabling/disabling concurrent build. + An optional parameter to specify a key container name for a key pair to give an assembly a strong name. + An optional parameter to specify a file containing a key or key pair to give an assembly a strong name. + An optional parameter to specify a public key used to give an assembly a strong name. + An optional parameter to specify whether the assembly will be fully or partially signed. + An optional parameter to specify which platform version of common language runtime (CLR) can run compilation. + An optional parameter to specify the general warning level. + An optional collection representing specific warnings that differ from general warning behavior. + An optional parameter to enabled/disable optimizations. + An optional parameter to specify the parse options. + An optional parameter to specify the XML file resolver. + An optional parameter to specify the source file resolver. + An optional parameter to specify . + An optional parameter to specify . + An optional parameter to specify . + An optional parameter to specify whether the assembly will be public signed. + An optional parameter to specify whether or not suppressed diagnostics should be reported. + An optional parameter to specify metadata import options. + + + + Gets the global imports collection. + + The global imports. + + + + Gets the default namespace for all source code in the project. Corresponds to the + "RootNamespace" project option or the "/rootnamespace" command line option. + + The default namespace. + + + + Gets the Option Strict Setting. + + The Option Strict setting. + + + + Gets the Option Infer setting. + + The Option Infer setting. True if Option Infer On is in effect by default. False if Option Infer Off is on effect by default. + + + + Gets the Option Explicit setting. + + The Option Explicit setting. True if Option Explicit On is in effect by default. False if Option Explicit Off is on by default. + + + + Gets the Option Compare Text setting. + + + The Option Compare Text Setting, True if Option Compare Text is in effect by default. False if Option Compare Binary is + in effect by default. + + + + + Gets the Embed Visual Basic Core Runtime setting. + + + The EmbedVbCoreRuntime setting, True if VB core runtime should be embedded in the compilation. Equal to '/vbruntime*' + + + + + Gets the embedded declaration suppression setting. + + + The embedded declaration suppression setting. + + + + + Gets the setting to ignore corlib types when duplicates are found. + + + + + Gets the Parse Options setting. + Compilation level parse options. Used when compiling synthetic embedded code such as My template + + The Parse Options Setting. + + + + Creates a new VisualBasicCompilationOptions instance with a different OutputKind specified. + + The Output Kind. + A new instance of VisualBasicCompilationOptions, if the output kind is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance With a different ModuleName specified. + + The moduleName. + A new instance of VisualBasicCompilationOptions, if the module name is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a Script Class Name specified. + + The name for the ScriptClassName. + A new instance of VisualBasicCompilationOptions, if the script class name is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different Main Type name specified. + + The name for the MainType . + A new instance of VisualBasicCompilationOptions, if the main type name is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different global imports specified. + + A collection of Global Imports . + A new instance of VisualBasicCompilationOptions. + + + + Creates a new VisualBasicCompilationOptions instance with a different global imports specified. + + A collection of Global Imports . + A new instance of VisualBasicCompilationOptions. + + + + Creates a new VisualBasicCompilationOptions instance with a different global imports specified. + + A collection of Global Imports . + A new instance of VisualBasicCompilationOptions. + + + + Creates a new VisualBasicCompilationOptions instance with a different root namespace specified. + + The root namespace. + A new instance of VisualBasicCompilationOptions, if the root namespace is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different option strict specified. + + The Option Strict setting. + A new instance of VisualBasicCompilationOptions, if the option strict is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different option infer specified. + + The Option infer setting. + A new instance of VisualBasicCompilationOptions, if the option infer is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different option explicit specified. + + The Option Explicit setting. + A new instance of VisualBasicCompilationOptions, if the option explicit is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different Option Compare Text specified. + + The Option Compare Text setting. + A new instance of VisualBasicCompilationOptions, if the option compare text is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different Embed VB Core Runtime specified. + + The Embed VB Core Runtime setting. + A new instance of VisualBasicCompilationOptions, if the embed vb core runtime is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different Overflow checks specified. + + The overflow check setting. + A new instance of VisualBasicCompilationOptions, if the overflow check is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different concurrent build specified. + + The concurrent build setting. + A new instance of VisualBasicCompilationOptions, if the concurrent build is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different deterministic mode specified. + The deterministic mode. + A new instance of VisualBasicCompilationOptions, if the deterministic mode is different; otherwise the current instance. + + + + + Creates a new VisualBasicCompilationOptions instance with a different extended custom debug information specified. + + The extended custom debug information setting. + A new instance of VisualBasicCompilationOptions, if the extended custom debug information is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with different embedded declaration suppression setting specified. + + The embedded declaration suppression setting. + A new instance of VisualBasicCompilationOptions, if the embedded declaration suppression setting is different; otherwise current instance. + Only expected to be called from the expression compiler. + + + + Creates a new VisualBasicCompilationOptions instance with different ignoreCorLibraryDuplicatedTypes setting specified. + + The ignoreCorLibraryDuplicatedTypes setting. + Only expected to be called from the expression compiler and interactive. + + + + Creates a new VisualBasicCompilationOptions instance with a different cryptography key container specified + + The name of the cryptography key container. + A new instance of VisualBasicCompilationOptions, if the cryptography key container name is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different cryptography key file path specified. + + The cryptography key file path. + A new instance of VisualBasicCompilationOptions, if the cryptography key path is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different public key. + + The cryptography key file path. + A new instance of VisualBasicCompilationOptions, if the public key is different; otherwise current instance. + + + + Creates a new VisualBasicCompilationOptions instance with a different delay signing specified. + + The delay signing setting. + A new instance of VisualBasicCompilationOptions, if the delay sign is different; otherwise current instance. + + + + Creates a new instance with a different platform specified. + + The platform setting. + A new instance of VisualBasicCompilationOptions, if the platform is different; otherwise current instance. + + + + Creates a new instance with a different report warning specified. + + The Report Warning setting. + A new instance of VisualBasicCompilationOptions, if the report warning is different; otherwise current instance. + + + + Creates a new instance with different specific warnings specified. + + Specific report warnings. + A new instance of VisualBasicCompilationOptions, if the dictionary of report warning is different; otherwise current instance. + + + + Creates a new instance with different specific warnings specified. + + Specific report warnings. + A new instance of VisualBasicCompilationOptions, if the dictionary of report warning is different; otherwise current instance. + + + + Creates a new instance with specified suppress diagnostics reporting option. + + Report suppressed diagnostics setting. + A new instance of VisualBasicCompilationOptions, if the value is different from the current value; otherwise current instance. + + + + Creates a new instance with a specified . + + A new instance of , if the value is different; otherwise the current instance. + + + + Creates a new instance with a specified . + + A new instance of , if the value is different; otherwise the current instance. + + + + Creates a new instance with a different parse option specified. + + The parse option setting. + A new instance of VisualBasicCompilationOptions, if the parse options is different; otherwise current instance. + + + + Determines whether the current object is equal to another object of the same type. + + A VisualBasicCompilationOptions to compare with this object + A boolean value. True if the current object is equal to the other parameter; otherwise, False. + + + + Indicates whether the current object is equal to another object. + + A object to compare with this object + A boolean value. True if the current object is equal to the other parameter; otherwise, False. + + + + Creates a hashcode for this instance. + + A hashcode representing this instance. + + + + Determines if the given raw kind value belongs to the Visual Basic enumeration. + + The raw value to test. + when the raw value belongs to the Visual Basic syntax kind; otherwise, . + + + + Returns for from property. + + + + + Returns for from property. + + + + + Returns for from property. + + + + + Returns for from property. + + + + + Checks to see if SyntaxToken is a bracketed identifier. + + The source SyntaxToken. + A boolean value, True if token represents a bracketed Identifier. + + + + Returns the Type character for a given syntax token. This returns type character for Identifiers or Integer, Floating Point or Decimal Literals. + Examples: Dim a$ or Dim l1 = 1L + + The source SyntaxToken. + A type character used for the specific Internal Syntax Token Types. + + + + The source token base for Integer literals. Base can be Decimal, Hex or Octal. + + The source SyntaxToken. + An instance representing the integer literal base. + + + + Determines if the token represents a reserved or contextual keyword + + The source SyntaxToken. + A boolean value True if token is a keyword. + + + + Determines if the token represents a reserved keyword + + The source SyntaxToken. + A boolean value True if token is a reserved keyword. + + + + Determines if the token represents a contextual keyword + + A boolean value True if token is a contextual keyword. + + + + Determines if the token represents a preprocessor keyword + + The source SyntaxToken. + A boolean value True if token is a pre processor keyword. + + + + Returns the Identifiertext for a specified SyntaxToken. + + + + + Insert one or more tokens in the list at the specified index. + + A new list with the tokens inserted. + + + + Add one or more tokens to the end of the list. + + A new list with the tokens added. + + + + Replaces trivia on a specified SyntaxToken. + + The source SyntaxToken to change trivia on. + The original Trivia. + The updated Trivia. + The updated SyntaxToken with replaced trivia. + + + + Replaces trivia on a specified SyntaxToken. + + + + + Gets the DirectiveTriviaSyntax items for a specified SyntaxNode with optional filtering. + + The source SyntaxNode. + The optional DirectiveTrivia Syntax filter predicate. + A list of DirectiveTriviaSyntax items + + + + Gets the first DirectiveTriviaSyntax item for a specified SyntaxNode. + + The source SyntaxNode. + The optional DirectiveTriviaSyntax filter predicate. + The first DirectiveSyntaxTrivia item. + + + + Gets the last DirectiveTriviaSyntax item for a specified SyntaxNode. + + The source node + The optional DirectiveTriviaSyntax filter predicate. + The last DirectiveSyntaxTrivia item. + + + + Gets the root CompilationUnitSyntax for a specified SyntaxTree. + + The source SyntaxTree. + A CompilationUnitSyntax. + + + + Gets the reporting state for a warning at a given source location based on warning directives. + + + + + Determines if symbol is Shared. + + The source symbol. + A boolean value, True if symbol is Shared; otherwise False. + + + + Gets all module members in a namespace. + + The source namespace symbol. + An ImmutableArray of NamedTypeSymbol for all module members in namespace. + + + + Gets all module members in a specified namespace. + + The source namespace symbol. + The name of the namespace. + An ImmutableArray of NamedTypeSymbol for all module members in namespace. + + + + Gets the Semantic Model OptionStrict property. + + A source Semantic model object. + The OptionStrict object for the semantic model instance OptionStrict property, otherwise Null if semantic model is Null. + + + + Gets the Semantic Model OptionInfer property. + + A source Semantic model object. + A boolean values, for the semantic model instance OptionInfer property. otherwise Null if semantic model is Null. + + + + Gets the Semantic Model OptionExplicit property. + + A source Semantic model object. + A boolean values, for the semantic model instance OptionExplicit property. otherwise Null if semantic model is Null. + + + + Gets the Semantic Model OptionCompareText property. + + A source Semantic model object. + A boolean values, for the semantic model instance OptionCompareText property. otherwise Null if semantic model is Null. + + + + Gets the compilation RootNamespace property. + + A source Compilation object. + A NamespaceSymbol instance, for the compilation instance RootNamespace property. otherwise Null if compilation instance is Null. + + + + Gets the compilation AliasImports property. + + A source Compilation object. + An ImmutableArray of AliasSymbol, from the compilation instance AliasImports property; otherwise an empty ImmutableArray if compilation instance is Null. + + + + Gets the compilation MemberImports property. + + A source Compilation object. + An ImmutableArray of NamespaceOrTypeSymbol, from the compilation instance MemberImports property; otherwise an empty ImmutableArray if compilation instance is Null. + + + + Determines what kind of conversion there is between the specified types. + + A source Compilation object. + A source Typesymbol + A destination Typesymbol + A Conversion instance, representing the kind of conversion between the two type symbols; otherwise Null if compilation instance is Null. + + + + Gets the special type symbol in current compilation. + + A source Compilation object. + The SpecialType to get. + A NamedTypeSymbol for the specified type in compilation; Null if compilation is Null. + + + + Determines what kind of conversion there is between the expression syntax and a specified type. + + A source semantic model. + A source expression syntax. + A destination TypeSymbol. + A Conversion instance, representing the kind of conversion between the expression and type symbol; otherwise Null if semantic model instance is Null. + + + + Determines what kind of conversion there is between the expression syntax and a specified type. + + A source semantic model. + A position within the expression syntax. + A source expression syntax. + A destination TypeSymbol. + A Conversion instance, representing the kind of conversion between the expression and type symbol; otherwise Null if semantic model instance is Null. + + + + Gets the corresponding symbol for a specified identifier. + + A source semantic model. + A IdentifierSyntax object. + A cancellation token. + A symbol, for the specified identifier; otherwise Null if semantic model is Null. + + + + Gets the corresponding symbol for a specified tuple element. + + A source semantic model. + A TupleElementSyntax object. + A cancellation token. + A symbol, for the specified element; otherwise Nothing. + + + + Gets the corresponding PropertySymbol for a specified FieldInitializerSyntax. + + A source semantic model. + A FieldInitializerSyntax object. + A cancellation token. + A PropertySymbol. Null if semantic model is null. + + + + Gets the corresponding NamedTypeSymbol for a specified AnonymousObjectCreationExpressionSyntax. + + + + + Gets the corresponding RangeVariableSymbol for a specified ExpressionRangeVariableSyntax. + + + + + Gets the corresponding RangeVariableSymbol for a specified CollectionRangeVariableSyntax. + + + + + Gets the corresponding RangeVariableSymbol for a specified AggregationRangeVariableSyntax. + + + + + Gets the corresponding LabelSymbol for a specified LabelStatementSyntax. + + + + + Gets the corresponding FieldSymbol for a specified EnumMemberDeclarationSyntax. + + + + + Gets the corresponding NamedTypeSymbol for a specified TypeStatementSyntax. + + + + + Gets the corresponding NamedTypeSymbol for a specified TypeBlockSyntax. + + + + + Gets the corresponding NamedTypeSymbol for a specified EnumStatementSyntax. + + + + + Gets the corresponding NamedTypeSymbol for a specified EnumBlockSyntax. + + + + + Gets the corresponding NamespaceSymbol for a specified NamespaceStatementSyntax. + + + + + Gets the corresponding NamespaceSymbol for a specified NamespaceBlockSyntax. + + + + + Gets the corresponding ParameterSymbol for a specified ParameterSyntax. + + + + + Gets the corresponding TypeParameterSymbol Symbol for a specified TypeParameterSyntax. + + + + + Gets the corresponding NamedTypeSymbol for a specified DelegateStatementSyntax. + + + + + Gets the corresponding MethodSymbol for a specified SubNewStatementSyntax. + + + + + Gets the corresponding MethodSymbol for a specified MethodStatementSyntax. + + + + + Gets the corresponding symbol for a specified DeclareStatementSyntax. + + + + + Gets the corresponding MethodSymbol for a specified OperatorStatementSyntax. + + + + + Gets the corresponding MethodSymbol for a specified MethodBlockBaseSyntax. + + + + + Gets the corresponding PropertySymbol for a specified PropertyStatementSyntax. + + + + + Gets the corresponding EventSymbol for a specified EventStatementSyntax. + + + + + Gets the corresponding PropertySymbol for a specified PropertyBlockSyntax. + + + + + Gets the corresponding EventSymbol for a specified EventBlockSyntax. + + + + + Gets the corresponding LocalSymbol for a specified CatchStatementSyntax. + + + + + Gets the corresponding MethodSymbol for a specified AccessorStatementSyntax. + + + + + Gets the corresponding AliasSymbol for a specified AliasImportsClauseSyntax. + + + + + Gets the corresponding ForEachStatementInfo containing semantic info for a specified ForEachStatementSyntax. + + + + + Gets the corresponding ForEachStatementInfo containing semantic info for a specified ForBlockSyntax. + + + + + Gets the corresponding AwaitExpressionInfo containing semantic info for a specified AwaitExpressionSyntax. + + + + + If the given node is within a preprocessing directive, gets the preprocessing symbol info for it. + + + + + Gets the corresponding SymbolInfo containing semantic info for a specified ExpressionSyntax. + + + + + Returns what 'Add' method symbol(s), if any, corresponds to the given expression syntax + within . + + + + + Gets the corresponding SymbolInfo containing semantic info for a specified CrefReferenceSyntax. + + + + + Gets the corresponding SymbolInfo containing semantic info for a specified AttributeSyntax. + + + + + Gets the corresponding SymbolInfo containing semantic info for a specified AttributeSyntax. + + + + + Gets the corresponding SymbolInfo containing semantic info for specified AttributeSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the corresponding TypeInfo containing semantic info for a specified ExpressionSyntax. + + + + + Gets the underlying information from an that was created from Visual Basic code. + + The conversion expression to get original info from. + The underlying . + If the was not created from Visual Basic code. + + + + Gets the underlying information for InConversion of that was created from Visual Basic code. + + The argument to get original info from. + The underlying of the InConversion. + If the was not created from Visual Basic code. + + + + Gets the underlying information for OutConversion of that was created from Visual Basic code. + + The argument to get original info from. + The underlying of the OutConversion. + If the was not created from Visual Basic code. + + + + Gets the underlying information from this . This + conversion is applied before the operator is applied to the result of this conversion and . + + + This compound assignment must have been created from Visual Basic code. + + + + + Gets the underlying information from this . This + conversion is applied after the operator is applied, before the result is assigned to . + + + This compound assignment must have been created from Visual Basic code. + + + + + Gets the corresponding TypeInfo containing semantic info for a speculating an ExpressionSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the corresponding TypeInfo containing semantic info for a specified AttributeSyntax. + + + + + Gets the corresponding ImmutableArray of Symbols for a specified ExpressionSyntax. + + + + + Gets the corresponding ImmutableArray of Symbols for a speculating an ExpressionSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the corresponding ImmutableArray of Symbols for a specified AttributeSyntax. + + + + + If "nameSyntax" resolves to an alias name, return the AliasSymbol corresponding + to A. Otherwise return null. + + + + + Binds the name in the context of the specified location and sees if it resolves to an + alias name. If it does, return the AliasSymbol corresponding to it. Otherwise, return null. + + + + + Returns information about methods associated with CollectionRangeVariableSyntax. + + + + + Returns information about methods associated with AggregateClauseSyntax. + + + + + Returns symbol information for a query clause. + + + + + Syntax node type + Symbol information returned + + + + Returns Distinct method associated with . + + + + Returns Where method associated with . + + + + Returns TakeWhile/SkipWhile method associated with . + + + + Returns Take/Skip method associated with . + + + + Returns GroupBy method associated with . + + + + Returns Join/GroupJoin method associated with . + + + + Returns Select method associated with , or if none is. + + + + + Returns Select method associated with , which has only one + and is the only query clause within + . otherwise. + The method call is injected by the compiler to make sure that query is translated to at + least one method call. + + + + + + + + + + + + + + . + Use instead. + + + + + + + + Returns Select method associated with within a , + or otherwise if none is. + + + + + Returns aggregate function associated with . + + + + + Returns OrderBy/OrderByDescending/ThenBy/ThenByDescending method associated with . + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze control-flow within a part of a method body. + + + + + Analyze data-flow within an expression. + + + + + Analyze data-flow within a set of contiguous statements. + + + + + Analyze data-flow within a statement. + + + + + Gets the SemanticModel for a MethodBlockBaseSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the SemanticModel for a RangeArgumentSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the SemanticModel for a ExecutableStatementSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the SemanticModel for a EqualsValueSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the SemanticModel for a AttributeSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Gets the SemanticModel for a TypeSyntax at a given position, used in Semantic Info for items not appearing in source code. + + + + + Emit the IL for the compilation into the specified stream. + + Compilation. + Path of the file to which the compilation will be written. + + Path of the file to which the compilation's debug info will be written. + Also embedded in the output file. Nothing to forego PDB generation. + + Path of the file to which the compilation's XML documentation will be written. Nothing to forego XML generation. + Path of the file from which the compilation's Win32 resources will be read (in RES format). + Null to indicate that there are none. + List of the compilation's managed resources. Nothing to indicate that there are none. + To cancel the emit process. + Compilation or path is null. + Path is empty or invalid. + An error occurred while reading or writing a file. + + + + Represents Visual Basic parse options. + + + + + Creates an instance of VisualBasicParseOptions. + + The parser language version. + The documentation mode. + The kind of source code. + An enumerable sequence of KeyValuePair representing preprocessor symbols. + + + + Returns the specified language version, which is the value that was specified in the call to the + constructor, or modified using the method, or provided on the command line. + + + + + Returns the effective language version, which the compiler uses to select the + language rules to apply to the program. + + + + + The preprocessor symbols to parse with. + + + May contain duplicate keys. The last one wins. + + + + + Returns a collection of preprocessor symbol names. + + + + + Returns a VisualBasicParseOptions instance for a specified language version. + + The parser language version. + A new instance of VisualBasicParseOptions if different language version is different; otherwise current instance. + + + + Returns a VisualBasicParseOptions instance for a specified source code kind. + + The parser source code kind. + A new instance of VisualBasicParseOptions if source code kind is different; otherwise current instance. + + + + Returns a VisualBasicParseOptions instance for a specified documentation mode. + + + A new instance of VisualBasicParseOptions if documentation mode is different; otherwise current instance. + + + + Returns a VisualBasicParseOptions instance for a specified collection of KeyValuePairs representing pre-processor symbols. + + A collection representing pre-processor symbols + A new instance of VisualBasicParseOptions. + + + + Returns a VisualBasicParseOptions instance for a specified collection of KeyValuePairs representing pre-processor symbols. + + An parameter array of KeyValuePair representing pre-processor symbols. + A new instance of VisualBasicParseOptions. + + + + Returns a VisualBasicParseOptions instance for a specified collection of KeyValuePairs representing pre-processor symbols. + + An ImmutableArray of KeyValuePair representing pre-processor symbols. + A new instance of VisualBasicParseOptions. + + + + Returns a ParseOptions instance for a specified Source Code Kind. + + The parser source code kind. + A new instance of ParseOptions. + + + + Returns a ParseOptions instance for a specified Documentation Mode. + + The documentation mode. + A new instance of ParseOptions. + + + + Enable some experimental language features for testing. + + + + + Determines whether the current object is equal to another object of the same type. + + An VisualBasicParseOptions object to compare with this object + A boolean value. True if the current object is equal to the other parameter; otherwise, False. + + + + Indicates whether the current object is equal to another object. + + An object to compare with this object + A boolean value. True if the current object is equal to the other parameter; otherwise, False. + + + + Returns a hashcode for this instance. + + A hashcode representing this instance. + + + trees({0}) + + + trees({0}) must have root node with SyntaxKind.CompilationUnit. + + + Cannot add compiler special tree + + + Syntax tree already present + + + Submission can have at most one syntax tree. + + + Cannot remove compiler special tree + + + SyntaxTree '{0}' not found to remove + + + Tree must have a root node with SyntaxKind.CompilationUnit + + + Compilation (Visual Basic): + + + Node is not within syntax tree + + + Can't reference compilation of type '{0}' from {1} compilation. + + + position of type parameter too large + + + Associated type does not have type parameters + + + function return type + + + Type argument cannot be Nothing + + + Wrong number of type arguments + + + file '{0}' could not be found + + + unable to open response file '{0}' + + + option '{0}' requires '{1}' + + + option '{0}' can be followed only by '+' or '-' + + + the value '{1}' is invalid for option '{0}' + + + Compilation options '{0}' and '{1}' can't both be specified at the same time. + + + The language name '{0}' is invalid. + + + The language name for /preferreduilang is invalid + + + The options /vbruntime* and /target:module cannot be combined. + + + Command-line syntax error: Invalid Guid format '{0}' for option '{1}' + + + Command-line syntax error: Missing Guid for option '{1}' + + + Algorithm '{0}' is not supported + + + unrecognized option '{0}'; ignored + + + Unrecognized command-line option + + + no input sources specified + + + source file '{0}' specified multiple times + + + Source file specified multiple times + + + can't open '{0}' for writing: {1} + + + code page '{0}' is invalid or not installed + + + the file '{0}' is not a text file + + + could not find library '{0}' + + + Metadata references not supported. + + + cannot specify both /win32icon and /win32resource + + + ignoring /noconfig option because it was specified in a response file + + + Ignoring /noconfig option because it was specified in a response file + + + warning number '{0}' for the option '{1}' is either not configurable or not valid + + + Warning number is either not configurable or not valid + + + cannot infer an output file name from resource only input files; provide the '/out' option + + + the /moduleassemblyname option may only be specified when building a target of type 'module' + + + '{0}' is not a valid value for /moduleassemblyname + + + Error embedding Win32 manifest: Option /win32manifest conflicts with /nowin32manifest. + + + Option /win32manifest ignored. It can be specified only when the target is an assembly. + + + Option /win32manifest ignored + + + File name '{0}' is empty, contains invalid characters, has a drive specification without an absolute path, or is too long + + + Statement is not valid in a namespace. + + + Type '{0}' is not defined. + + + 'Next' expected. + + + Character constant must contain exactly one character. + + + Reference required to assembly '{0}' containing the definition for event '{1}'. Add one to your project. + + + Reference required to module '{0}' containing the definition for event '{1}'. Add one to your project. + + + '#If' block must end with a matching '#End If'. + + + '#ElseIf', '#Else', or '#End If' must be preceded by a matching '#If'. + + + '#ElseIf' must be preceded by a matching '#If' or '#ElseIf'. + + + Inheriting from '{0}' is not valid. + + + Labels are not valid outside methods. + + + Delegates cannot implement interface methods. + + + Delegates cannot handle events. + + + 'Is' operator does not accept operands of type '{0}'. Operands must be reference or nullable types. + + + 'TypeOf ... Is' requires its left operand to have a reference type, but this operand has the value type '{0}'. + + + Properties declared 'ReadOnly' cannot have a 'Set'. + + + Properties declared 'WriteOnly' cannot have a 'Get'. + + + Statement is not valid inside a method. + + + Statement is not valid inside '{0}' block. + + + Expression statement is only allowed at the end of an interactive submission. + + + Property missing 'End Property'. + + + 'End Sub' expected. + + + 'End Function' expected. + + + '#Else' must be preceded by a matching '#If' or '#ElseIf'. + + + Derived classes cannot raise base class events. + + + Try must have at least one 'Catch' or a 'Finally'. + + + Events cannot have a return type. + + + Bracketed identifier is missing closing ']'. + + + Syntax error. + + + Overflow. + + + Character is not valid. + + + Option Strict On prohibits operands of type Object for operator '{0}'. + + + Loop control variable cannot be a property or a late-bound indexed array. + + + First statement of a method body cannot be on the same line as the method declaration. + + + Maximum number of errors has been exceeded. + + + '{0}' is valid only within an instance method. + + + '{0}' is not valid within a structure. + + + Attribute constructor has a parameter of type '{0}', which is not an integral, floating-point or Enum type or one of Object, Char, String, Boolean, System.Type or 1-dimensional array of these types. + + + Method cannot have both a ParamArray and Optional parameters. + + + '{0}' statement requires an array. + + + ParamArray parameter must be an array. + + + ParamArray parameter must be a one-dimensional array. + + + Array exceeds the limit of 32 dimensions. + + + Arrays cannot be declared with 'New'. + + + Too many arguments to '{0}'. + + + Statements and labels are not valid between 'Select Case' and first 'Case'. + + + Constant expression is required. + + + Conversion from '{0}' to '{1}' cannot occur in a constant expression. + + + 'Me' cannot be the target of an assignment. + + + 'ReadOnly' variable cannot be the target of an assignment. + + + 'Exit Sub' is not valid in a Function or Property. + + + 'Exit Property' is not valid in a Function or Sub. + + + 'Exit Function' is not valid in a Sub or Property. + + + Expression is a value and therefore cannot be the target of an assignment. + + + For loop control variable '{0}' already in use by an enclosing For loop. + + + Next control variable does not match For loop control variable '{0}'. + + + 'Case Else' can only appear inside a 'Select Case' statement. + + + 'Case' can only appear inside a 'Select Case' statement. + + + Constant cannot be the target of an assignment. + + + Named arguments are not valid as array subscripts. + + + 'If' must end with a matching 'End If'. + + + 'While' must end with a matching 'End While'. + + + 'Do' must end with a matching 'Loop'. + + + 'For' must end with a matching 'Next'. + + + 'With' must end with a matching 'End With'. + + + 'Else' must be preceded by a matching 'If' or 'ElseIf'. + + + 'End If' must be preceded by a matching 'If'. + + + 'End Select' must be preceded by a matching 'Select Case'. + + + 'Exit Do' can only appear inside a 'Do' statement. + + + 'End While' must be preceded by a matching 'While'. + + + 'Loop' must be preceded by a matching 'Do'. + + + 'Next' must be preceded by a matching 'For'. + + + 'End With' must be preceded by a matching 'With'. + + + Label '{0}' is already defined in the current method. + + + 'Select Case' must end with a matching 'End Select'. + + + 'Exit For' can only appear inside a 'For' statement. + + + 'Exit While' can only appear inside a 'While' statement. + + + 'ReadOnly' property '{0}' cannot be the target of an assignment. + + + 'Exit Select' can only appear inside a 'Select' statement. + + + Branching out of a 'Finally' is not valid. + + + '!' requires its left operand to have a type parameter, class or interface type, but this operand has the type '{0}'. + + + Number of indices is less than the number of dimensions of the indexed array. + + + Number of indices exceeds the number of dimensions of the indexed array. + + + '{0}' is an Enum type and cannot be used as an expression. + + + '{0}' is a type and cannot be used as an expression. + + + '{0}' is a class type and cannot be used as an expression. + + + '{0}' is a structure type and cannot be used as an expression. + + + '{0}' is an interface type and cannot be used as an expression. + + + '{0}' is a namespace and cannot be used as an expression. + + + '{0}' is not a valid name and cannot be used as the root namespace name. + + + '{0}' is an XML prefix and cannot be used as an expression. Use the GetXmlNamespace operator to create a namespace object. + + + 'Inherits' can appear only once within a 'Class' statement and can only specify one class. + + + Property without a 'ReadOnly' or 'WriteOnly' specifier must provide both a 'Get' and a 'Set'. + + + 'WriteOnly' property must provide a 'Set'. + + + 'ReadOnly' property must provide a 'Get'. + + + Attribute '{0}' is not valid: Incorrect argument value. + + + Label '{0}' is not defined. + + + Error creating Win32 resources: {0} + + + Cannot create temporary file: {0} + + + First statement of this 'Sub New' must be a call to 'MyBase.New' or 'MyClass.New' because base class '{0}' of '{1}' does not have an accessible 'Sub New' that can be called with no arguments. + + + {0} '{1}' must implement '{2}' for interface '{3}'. + + + Leading '.' or '!' can only appear inside a 'With' statement. + + + Only one of 'Public', 'Private', 'Protected', 'Friend', 'Protected Friend', or 'Private Protected' can be specified. + + + Only one of 'NotOverridable', 'MustOverride', or 'Overridable' can be specified. + + + Specifier is duplicated. + + + {0} '{1}' and {2} '{3}' conflict in {4} '{5}'. + + + Keyword does not name a type. + + + Specifiers valid only at the beginning of a declaration. + + + Type expected. + + + Keyword is not valid as an identifier. + + + 'End Enum' must be preceded by a matching 'Enum'. + + + 'Enum' must end with a matching 'End Enum'. + + + Declaration expected. + + + End of parameter list expected. Cannot define parameters after a paramarray parameter. + + + Specifiers and attributes are not valid on this statement. + + + Expected one of 'Dim', 'Const', 'Public', 'Private', 'Protected', 'Friend', 'Shadows', 'ReadOnly' or 'Shared'. + + + Comma expected. + + + 'As' expected. + + + ')' expected. + + + '(' expected. + + + 'New' is not valid in this context. + + + Expression expected. + + + 'Optional' expected. + + + Identifier expected. + + + Integer constant expected. + + + End of statement expected. + + + 'Option' must be followed by 'Compare', 'Explicit', 'Infer', or 'Strict'. + + + 'Option Compare' must be followed by 'Text' or 'Binary'. + + + 'Compare' expected. + + + Option Strict On requires all variable declarations to have an 'As' clause. + + + Option Strict On requires all Function, Property, and Operator declarations to have an 'As' clause. + + + Option Strict On requires that all method parameters have an 'As' clause. + + + Comma or ')' expected. + + + 'Sub' or 'Function' expected. + + + String constant expected. + + + 'Lib' expected. + + + Delegate class '{0}' has no Invoke method, so an expression of this type cannot be the target of a method call. + + + 'Is' expected. + + + 'Option {0}' statement can only appear once per file. + + + 'Inherits' not valid in Modules. + + + 'Implements' not valid in Modules. + + + Implemented type must be an interface. + + + '{0}' is not valid on a constant declaration. + + + '{0}' is not valid on a WithEvents declaration. + + + '{0}' is not valid on a member variable declaration. + + + Parameter already declared with name '{0}'. + + + 'Loop' cannot have a condition if matching 'Do' has one. + + + Relational operator expected. + + + 'Exit' must be followed by 'Sub', 'Function', 'Property', 'Do', 'For', 'While', 'Select', or 'Try'. + + + Named argument expected. + + + Named argument specifications must appear after all fixed arguments have been specified in a late bound invocation. + + + Named argument expected. Please use language version {0} or greater to use non-trailing named arguments. + + + '{0}' is not valid on a method declaration. + + + '{0}' is not valid on an event declaration. + + + '{0}' is not valid on a Declare. + + + '{0}' is not valid on a local constant declaration. + + + '{0}' is not valid on a local variable declaration. + + + 'If', 'ElseIf', 'Else', 'Const', 'Region', 'ExternalSource', 'ExternalChecksum', 'Enable', 'Disable', 'End' or 'R' expected. + + + '=' expected. + + + Type '{0}' has no constructors. + + + 'End Interface' must be preceded by a matching 'Interface'. + + + 'Interface' must end with a matching 'End Interface'. + + + '{0}' inherits from '{1}'. + + + '{0}' is nested in '{1}'. + + + Class '{0}' cannot inherit from itself: {1} + + + Classes can inherit only from other classes. + + + '{0}' is already declared as '{1}' in this {2}. + + + '{0}' cannot override '{1}' because they have different access levels. + + + '{0}' cannot override '{1}' because it is declared 'NotOverridable'. + + + '{0}' has multiple definitions with identical signatures. + + + '{0}' has multiple definitions with identical signatures with different tuple element names, including '{1}'. + + + '{0}' is not valid on an interface method declaration. + + + '{0}' is not a parameter of '{1}'. + + + '{0}' is not valid on an interface property declaration. + + + Parameter '{0}' of '{1}' already has a matching argument. + + + '{0}' is not valid on an interface event declaration. + + + Type character '{0}' does not match declared data type '{1}'. + + + 'Sub' or 'Function' expected after 'Delegate'. + + + Enum '{0}' must contain at least one member. + + + Constructor call is valid only as the first statement in an instance constructor. + + + 'Sub New' cannot be declared 'Overrides'. + + + 'Sub New' cannot be declared 'Partial'. + + + Failed to emit module '{0}': {1} + + + Cannot update '{0}'; attribute '{1}' is missing. + + + {0} '{1}' cannot be declared 'Overrides' because it does not override a {0} in a base class. + + + '.' expected. + + + Local variable '{0}' is already declared in the current block. + + + Statement cannot appear within a method body. End of method assumed. + + + Local variable cannot have the same name as the function containing it. + + + '{0}' contains '{1}' (variable '{2}'). + + + Structure '{0}' cannot contain an instance of itself: {1} + + + Interface '{0}' cannot inherit from itself: {1} + + + '{0}' calls '{1}'. + + + Constructor '{0}' cannot call itself: {1} + + + '{0}' cannot inherit from {2} '{1}' because '{1}' is declared 'NotInheritable'. + + + '{0}' and '{1}' cannot overload each other because they differ only by optional parameters. + + + '{0}' and '{1}' cannot overload each other because they differ only by return types. + + + Type character '{0}' cannot be used in a declaration with an explicit type. + + + Type character cannot be used in a 'Sub' declaration because a 'Sub' doesn't return a value. + + + '{0}' and '{1}' cannot overload each other because they differ only by the default values of optional parameters. + + + Array subscript expression missing. + + + '{0}' cannot override '{1}' because they differ by the default values of optional parameters. + + + '{0}' cannot override '{1}' because they differ by optional parameters. + + + Cannot refer to '{0}' because it is a member of the value-typed field '{1}' of class '{2}' which has 'System.MarshalByRefObject' as a base class. + + + Value of type '{0}' cannot be converted to '{1}'. + + + 'Case' cannot follow a 'Case Else' in the same 'Select' statement. + + + Value of type '{0}' cannot be converted to '{1}' because '{2}' is not derived from '{3}'. + + + Value of type '{0}' cannot be converted to '{1}' because '{2}' is not a reference type. + + + 'For' loop control variable cannot be of type '{0}' because the type does not support the required operators. + + + '{0}' and '{1}' cannot overload each other because they differ only by parameters declared 'ByRef' or 'ByVal'. + + + Interface can inherit only from another interface. + + + 'Inherits' statements must precede all declarations in an interface. + + + 'Default' can be applied to only one property name in a {0}. + + + '{0}' and '{1}' cannot overload each other because only one is declared 'Default'. + + + '{0}' cannot override '{1}' because they differ by 'ReadOnly' or 'WriteOnly'. + + + 'Sub New' cannot be declared in an interface. + + + 'Sub New' cannot be declared '{0}'. + + + '{0}' and '{1}' cannot overload each other because they differ only by 'ReadOnly' or 'WriteOnly'. + + + Class '{0}' cannot be indexed because it has no default property. + + + '{0}' and '{1}' cannot overload each other because they differ only by parameters declared 'ParamArray'. + + + Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class. + + + '}' expected. + + + Module '{0}' cannot be used as a type. + + + 'New' cannot be used on an interface. + + + 'Catch' cannot appear after 'Finally' within a 'Try' statement. + + + 'Catch' cannot appear outside a 'Try' statement. + + + 'Finally' can only appear once in a 'Try' statement. + + + 'Finally' cannot appear outside a 'Try' statement. + + + 'End Try' must be preceded by a matching 'Try'. + + + 'Try' must end with a matching 'End Try'. + + + '{0}' is not valid on a Delegate declaration. + + + Class '{0}' must declare a 'Sub New' because its base class '{1}' does not have an accessible 'Sub New' that can be called with no arguments. + + + '{0}' is not accessible in this context because it is '{1}'. + + + '{0}.{1}' is not accessible in this context because it is '{2}'. + + + 'Catch' cannot catch type '{0}' because it is not 'System.Exception' or a class that inherits from 'System.Exception'. + + + 'Exit Try' can only appear inside a 'Try' statement. + + + '{0}' is not valid on a Structure declaration. + + + '{0}' is not valid on an Enum declaration. + + + '{0}' is not valid on an Interface declaration. + + + '{0}' cannot override '{1}' because they differ by a parameter that is marked as 'ByRef' versus 'ByVal'. + + + 'MyBase' cannot be used with method '{0}' because it is declared 'MustOverride'. + + + '{0}' cannot implement '{1}' because there is no matching {2} on interface '{3}'. + + + '{0}' cannot implement {1} '{2}' on interface '{3}' because the tuple element names in '{4}' do not match those in '{5}'. + + + 'WithEvents' variables must have an 'As' clause. + + + 'WithEvents' variables can only be typed as classes, interfaces or type parameters with class constraints. + + + Value of type '{0}' cannot be converted to '{1}' because the array types have different numbers of dimensions. + + + 'ReDim' cannot change the number of dimensions of an array. + + + 'Sub Main' was not found in '{0}'. + + + Constants must be of an intrinsic or enumerated type, not a class, structure, type parameter, or array type. + + + 'End Sub' must be preceded by a matching 'Sub'. + + + 'End Function' must be preceded by a matching 'Function'. + + + 'End Property' must be preceded by a matching 'Property'. + + + Methods in a Module cannot be declared '{0}'. + + + Events in a Module cannot be declared '{0}'. + + + Members in a Structure cannot be declared '{0}'. + + + '{0}' cannot override '{1}' because they differ by their return types. + + + '{0}' cannot override '{1}' because they differ by their tuple element names. + + + Member cannot override because it differs by its tuple element names. + + + Constants must have a value. + + + Constant expression not representable in type '{0}'. + + + 'Get' is already declared. + + + 'Set' is already declared. + + + '{0}' is not declared. It may be inaccessible due to its protection level. + + + Operator '{0}' is not defined for types '{1}' and '{2}'. + + + Expression is not a method. + + + Argument not specified for parameter '{0}' of '{1}'. + + + '{0}' is not a member of '{1}'. + + + 'End Class' must be preceded by a matching 'Class'. + + + Classes cannot be declared '{0}'. + + + 'Imports' statements must precede any declarations. + + + '{1}' for the Imports '{0}' does not refer to a Namespace, Class, Structure, Enum or Module. + + + Type declaration characters are not valid in this context. + + + Reference to a non-shared member requires an object reference. + + + 'MyClass' cannot be used outside of a class. + + + Expression is not an array or a method, and cannot have an argument list. + + + 'WithEvents' variables cannot be typed as arrays. + + + Shared 'Sub New' cannot have any parameters. + + + Shared 'Sub New' cannot be declared '{0}'. + + + 'Class' statement must end with a matching 'End Class'. + + + Operator '{0}' is not defined for type '{1}'. + + + 'Default' cannot be combined with '{0}'. + + + Expression does not produce a value. + + + Constructor must be declared as a Sub, not as a Function. + + + Exponent is not valid. + + + 'Sub New' cannot handle events. + + + Constant '{0}' cannot depend on its own value. + + + 'Shared' cannot be combined with '{0}' on a method declaration. + + + 'Shared' cannot be combined with '{0}' on a property declaration. + + + Properties in a Module cannot be declared '{0}'. + + + Methods or events that implement interface members cannot be declared 'Shared'. + + + Handles clause requires a WithEvents variable defined in the containing type or one of its base types. + + + '{0}' cannot inherit from {1} '{2}' because it expands the access of the base {1} to {3} '{4}'. + + + Option Strict On disallows implicit conversions from '{0}' to '{1}'. + + + Overload resolution failed because no accessible '{0}' accepts this number of arguments. + + + Overload resolution failed because no '{0}' is accessible. + + + Overload resolution failed because no accessible '{0}' can be called with these arguments:{1} + + + Overload resolution failed because no accessible '{0}' can be called:{1} + + + Overload resolution failed because no accessible '{0}' can be called without a narrowing conversion:{1} + + + Argument matching parameter '{0}' narrows from '{1}' to '{2}'. + + + Overload resolution failed because no accessible '{0}' is most specific for these arguments:{1} + + + Not most specific. + + + '{0}': {1} + + + Property '{0}' is 'WriteOnly'. + + + Property '{0}' is 'ReadOnly'. + + + All parameters must be explicitly typed if any of them are explicitly typed. + + + Parameter cannot have the same name as its defining function. + + + Conversion from 'Date' to 'Double' requires calling the 'Date.ToOADate' method. + + + Conversion from 'Double' to 'Date' requires calling the 'Date.FromOADate' method. + + + Division by zero occurred while evaluating this expression. + + + Method cannot contain both a 'Try' statement and an 'On Error' or 'Resume' statement. + + + Property access must assign to the property or use its value. + + + '{0}' cannot be indexed because it has no default property. + + + Attribute '{0}' cannot be applied to an assembly. + + + Attribute '{0}' cannot be applied to a module. + + + '{0}' is ambiguous. + + + Default member of '{0}' is not a property. + + + '{0}' is ambiguous in the namespace '{1}'. + + + '{0}' is ambiguous, imported from the namespaces or types '{1}'. + + + '{0}' is ambiguous between declarations in Modules '{1}'. + + + '{0}' is ambiguous between declarations in namespaces '{1}'. + + + Array initializer has too few dimensions. + + + Array initializer has too many dimensions. + + + Array initializer is missing {0} elements. + + + Array initializer has {0} too many elements. + + + 'New' cannot be used on a class that is declared 'MustInherit'. + + + Alias '{0}' is already declared. + + + XML namespace prefix '{0}' is already declared. + + + stdin argument '-' is specified, but input has not been redirected from the standard input stream. + + + Option Strict On disallows late binding. + + + 'AddressOf' operand must be the name of a method (without parentheses). + + + '#End ExternalSource' must be preceded by a matching '#ExternalSource'. + + + '#ExternalSource' statement must end with a matching '#End ExternalSource'. + + + '#ExternalSource' directives cannot be nested. + + + 'AddressOf' expression cannot be converted to '{0}' because '{0}' is not a delegate type. + + + 'SyncLock' operand cannot be of type '{0}' because '{0}' is not a reference type. + + + '{0}.{1}' cannot be implemented more than once. + + + '{0}' cannot be inherited more than once. + + + Named argument cannot match a ParamArray parameter. + + + Omitted argument cannot match a ParamArray parameter. + + + Argument cannot match a ParamArray parameter. + + + Event '{0}' cannot be found. + + + Variables in Modules cannot be declared '{0}'. + + + Events of shared WithEvents variables cannot be handled by non-shared methods. + + + Events of shared WithEvents variables cannot be handled by methods in a different type. + + + '-' expected. + + + Interface members must be methods, properties, events, or type definitions. + + + Statement cannot appear within an interface body. + + + Statement cannot appear within an interface body. End of interface assumed. + + + 'NotInheritable' classes cannot have members declared '{0}'. + + + Class '{0}' must either be declared 'MustInherit' or override the following inherited 'MustOverride' member(s): {1}. + + + '{0}' is a MustOverride event in the base class '{1}'. Visual Basic does not support event overriding. You must either provide an implementation for the event in the base class, or make class '{2}' MustInherit. + + + Array dimensions cannot have a negative size. + + + 'MustOverride' method '{0}' cannot be called with 'MyClass'. + + + 'End' statement cannot be used in class library projects. + + + Variable '{0}' hides a variable in an enclosing block. + + + 'Module' statements can occur only at file or namespace level. + + + 'Namespace' statements can occur only at file or namespace level. + + + Statement cannot appear within an Enum body. + + + Statement cannot appear within an Enum body. End of Enum assumed. + + + 'Option Strict' can be followed only by 'On' or 'Off'. + + + 'End Structure' must be preceded by a matching 'Structure'. + + + 'End Module' must be preceded by a matching 'Module'. + + + 'End Namespace' must be preceded by a matching 'Namespace'. + + + 'Structure' statement must end with a matching 'End Structure'. + + + 'Module' statement must end with a matching 'End Module'. + + + 'Namespace' statement must end with a matching 'End Namespace'. + + + 'Option' statements must precede any declarations or 'Imports' statements. + + + Structures cannot have 'Inherits' statements. + + + Structures cannot declare a non-shared 'Sub New' with no parameters. + + + 'End Get' must be preceded by a matching 'Get'. + + + 'Get' statement must end with a matching 'End Get'. + + + 'End Set' must be preceded by a matching 'Set'. + + + 'Set' statement must end with a matching 'End Set'. + + + Statement cannot appear within a property body. End of property assumed. + + + 'ReadOnly' and 'WriteOnly' cannot be combined. + + + '>' expected. + + + Assembly or Module attribute statements must precede any declarations in a file. + + + Array bounds cannot appear in type specifiers. + + + Properties cannot be declared '{0}'. + + + 'Option Explicit' can be followed only by 'On' or 'Off'. + + + 'ByVal' and 'ByRef' cannot be combined. + + + 'Optional' and 'ParamArray' cannot be combined. + + + Property '{0}' is of an unsupported type. + + + Attribute '{0}' cannot be applied to a method with optional parameters. + + + 'Return' statement in a Sub or a Set cannot return a value. + + + String constants must end with a double quote. + + + '{0}' is an unsupported type. + + + Enums must be declared as an integral type. + + + {0} parameters cannot be declared 'ByRef'. + + + Reference required to assembly '{0}' containing the type '{1}'. Add one to your project. + + + Reference required to module '{0}' containing the type '{1}'. Add one to your project. + + + 'Return' statement in a Function, Get, or Operator must return a value. + + + Field '{0}' is of an unsupported type. + + + '{0}' has a return type that is not supported or parameter types that are not supported. + + + Property '{0}' with no parameters cannot be found. + + + Property or field '{0}' does not have a valid attribute type. + + + Attributes cannot be applied to local variables. + + + Field or property '{0}' is not found. + + + Attribute '{0}' cannot be applied to '{1}' because the attribute is not valid on this declaration type. + + + Attribute '{0}' cannot be applied to '{1}' of '{2}' because the attribute is not valid on this declaration type. + + + Class '{0}' cannot reference its nested type '{1}' in Inherits clause. + + + Class '{0}' cannot reference itself in Inherits clause. + + + Base type of '{0}' needs '{1}' to be resolved. + + + Inherits clause of {0} '{1}' causes cyclic dependency: {2} + + + Attribute '{0}' cannot be applied multiple times. + + + Attribute '{0}' in '{1}' cannot be applied multiple times. + + + 'Throw' operand must derive from 'System.Exception'. + + + 'Throw' statement cannot omit operand outside a 'Catch' statement or inside a 'Finally' statement. + + + ParamArray parameters must be declared 'ByVal'. + + + '{0}' is obsolete: '{1}'. + + + 'ReDim' statements require a parenthesized list of the new bounds of each dimension of the array. + + + Explicit initialization is not permitted with multiple variables declared with a single type specifier. + + + Explicit initialization is not permitted for arrays declared with explicit bounds. + + + 'End SyncLock' must be preceded by a matching 'SyncLock'. + + + 'SyncLock' statement must end with a matching 'End SyncLock'. + + + '{0}' is not an event of '{1}'. + + + 'AddHandler' or 'RemoveHandler' statement event operand must be a dot-qualified expression or a simple name. + + + 'End' statement not valid. + + + Array initializers are valid only for arrays, but the type of '{0}' is '{1}'. + + + '#End Region' must be preceded by a matching '#Region'. + + + '#Region' statement must end with a matching '#End Region'. + + + 'Inherits' statement must precede all declarations in a class. + + + '{0}' is ambiguous across the inherited interfaces '{1}' and '{2}'. + + + Default property access is ambiguous between the inherited interface members '{0}' of interface '{1}' and '{2}' of interface '{3}'. + + + Events in interfaces cannot be declared '{0}'. + + + Statement cannot appear outside of a method body. + + + Structure '{0}' cannot be indexed because it has no default property. + + + {0} '{1}' must be declared 'Shadows' because another member with this name is declared 'Shadows'. + + + '{0}' cannot override '{1}' because they differ by the types of optional parameters. + + + End of expression expected. + + + Methods declared in structures cannot have 'Handles' clauses. + + + Methods declared 'Overrides' cannot be declared 'Overridable' because they are implicitly overridable. + + + '{0}' is already declared as a parameter of this method. + + + Variable '{0}' is already declared as a parameter of this or an enclosing lambda expression. + + + Type in a Module cannot be declared '{0}'. + + + No accessible 'Main' method with an appropriate signature was found in '{0}'. + + + 'Sub Main' is declared more than once in '{0}': {1} + + + Value '{0}' cannot be converted to '{1}'. + + + 'On Error' statements are not valid within 'SyncLock' statements. + + + Option Strict On disallows implicit conversions from '{0}' to '{1}'; the Visual Basic 6.0 collection type is not compatible with the .NET Framework collection type. + + + 'GoTo {0}' is not valid because '{0}' is inside a 'Try', 'Catch' or 'Finally' statement that does not contain this statement. + + + 'GoTo {0}' is not valid because '{0}' is inside a 'SyncLock' statement that does not contain this statement. + + + 'GoTo {0}' is not valid because '{0}' is inside a 'With' statement that does not contain this statement. + + + 'GoTo {0}' is not valid because '{0}' is inside a 'For' or 'For Each' statement that does not contain this statement. + + + Attribute cannot be used because it does not have a Public constructor. + + + Event '{0}' specified by the 'DefaultEvent' attribute is not a publicly accessible event for this class. + + + 'NonSerialized' attribute will not have any effect on this member because its containing class is not exposed as 'Serializable'. + + + 'Continue' must be followed by 'Do', 'For' or 'While'. + + + 'Continue Do' can only appear inside a 'Do' statement. + + + 'Continue For' can only appear inside a 'For' statement. + + + 'Continue While' can only appear inside a 'While' statement. + + + Parameter specifier is duplicated. + + + 'Declare' statements in a Module cannot be declared '{0}'. + + + 'Declare' statements in a structure cannot be declared '{0}'. + + + 'TryCast' operand must be reference type, but '{0}' is a value type. + + + 'TryCast' operands must be class-constrained type parameter, but '{0}' has no class constraint. + + + No accessible '{0}' is most specific: {1} + + + Non-shared members in a Structure cannot be declared 'New'. + + + None of the accessible 'Main' methods with the appropriate signatures found in '{0}' can be the startup method since they are all either generic or nested in generic types. + + + Error in project-level import '{0}' at '{1}' : {2} + + + '{1}' for the Imports alias to '{0}' does not refer to a Namespace, Class, Structure, Interface, Enum or Module. + + + Field '{0}.{1}' has an invalid constant value. + + + Method arguments must be enclosed in parentheses. + + + Labels that are numbers must be followed by colons. + + + 'Type' statements are no longer supported; use 'Structure' statements instead. + + + 'Variant' is no longer a supported type; use the 'Object' type instead. + + + 'Let' and 'Set' assignment statements are no longer supported. + + + Property Get/Let/Set are no longer supported; use the new Property declaration syntax. + + + 'Wend' statements are no longer supported; use 'End While' statements instead. + + + 'ReDim' statements can no longer be used to declare array variables. + + + Optional parameters must specify a default value. + + + 'GoSub' statements are no longer supported. + + + 'On GoTo' and 'On GoSub' statements are no longer supported. + + + 'EndIf' statements are no longer supported; use 'End If' instead. + + + 'D' can no longer be used to indicate an exponent, use 'E' instead. + + + 'As Any' is not supported in 'Declare' statements. + + + 'Get' statements are no longer supported. File I/O functionality is available in the 'Microsoft.VisualBasic' namespace. + + + '{0}' cannot override '{1}' because they differ by parameters declared 'ParamArray'. + + + This inheritance causes circular dependencies between {0} '{1}' and its nested or base type '{2}'. + + + {0} '{1}' cannot inherit from a type nested within it. + + + '{0}' cannot expose type '{1}' outside the project through {2} '{3}'. + + + '{0}' cannot inherit from {1} '{2}' because it expands the access of the base {1} outside the assembly. + + + '{0}' accessor of '{1}' is obsolete: '{2}'. + + + '{0}' accessor of '{1}' is obsolete. + + + '{0}' cannot expose the underlying delegate type '{1}' of the event it is implementing to {2} '{3}' through {4} '{5}'. + + + '{0}' cannot expose the underlying delegate type '{1}' of the event it is implementing outside the project through {2} '{3}'. + + + Type '{0}' is not supported because it either directly or indirectly inherits from itself. + + + Class '{0}' must declare a 'Sub New' because the '{1}' in its base class '{2}' is marked obsolete. + + + Class '{0}' must declare a 'Sub New' because the '{1}' in its base class '{2}' is marked obsolete: '{3}'. + + + First statement of this 'Sub New' must be an explicit call to 'MyBase.New' or 'MyClass.New' because the '{0}' in the base class '{1}' of '{2}' is marked obsolete. + + + First statement of this 'Sub New' must be an explicit call to 'MyBase.New' or 'MyClass.New' because the '{0}' in the base class '{1}' of '{2}' is marked obsolete: '{3}'. + + + '{0}' cannot inherit from {1} '{2}' because it expands the access of type '{3}' to {4} '{5}'. + + + '{0}' cannot inherit from {1} '{2}' because it expands the access of type '{3}' outside the assembly. + + + Specified access '{0}' for '{1}' does not match the access '{2}' specified on one of its other partial types. + + + 'MustInherit' cannot be specified for partial type '{0}' because it cannot be combined with 'NotInheritable' specified for one of its other partial types. + + + 'MustOverride' cannot be specified on this member because it is in a partial type that is declared 'NotInheritable' in another partial definition. + + + Base class '{0}' specified for class '{1}' cannot be different from the base class '{2}' of one of its other partial types. + + + Type parameter name '{0}' does not match the name '{1}' of the corresponding type parameter defined on one of the other partial types of '{2}'. + + + Constraints for this type parameter do not match the constraints on the corresponding type parameter defined on one of the other partial types of '{0}'. + + + Late bound overload resolution cannot be applied to '{0}' because the accessing instance is an interface type. + + + Conversion from '{0}' to '{1}' cannot occur in a constant expression used as an argument to an attribute. + + + Member '{0}' that matches this signature cannot be overridden because the class '{1}' contains multiple members with this same name and signature: {2} + + + '{0}' + + + Member '{0}.{1}' that matches this signature cannot be implemented because the interface '{2}' contains multiple members with this same name and signature: + '{3}' + '{4}' + + + 'AddressOf' expression cannot be converted to '{0}' because type '{0}' is declared 'MustInherit' and cannot be created. + + + Generic methods cannot be exposed to COM. + + + Syntax error in cast operator; two arguments separated by comma are required. + + + Array initializer cannot be specified for a non constant dimension; use the empty initializer '{}'. + + + No accessible method '{0}' has a signature compatible with delegate '{1}':{2} + + + Attribute 'StructLayout' cannot be applied to a generic type. + + + Range variable '{0}' hides a variable in an enclosing block or a range variable previously defined in the query expression. + + + 'Option Infer' can be followed only by 'On' or 'Off'. + + + Type of '{0}' cannot be inferred from an expression containing '{0}'. + + + '{0}' in class '{1}' cannot override '{2}' in class '{3}' because an intermediate class '{4}' overrides '{2}' in class '{3}' but is not accessible. + + + Type of '{0}' cannot be inferred because the loop bounds and the step clause do not convert to the same type. + + + Type of '{0}' is ambiguous because the loop bounds and the step clause do not convert to the same type. + + + '=' expected (object initializer). + + + Name of field or property being initialized in an object initializer must start with '.'. + + + '{' expected. + + + Type or 'With' expected. + + + Multiple initializations of '{0}'. Fields and properties can be initialized only once in an object initializer expression. + + + Member '{0}' cannot be initialized in an object initializer expression because it is not a field or property. + + + Member '{0}' cannot be initialized in an object initializer expression because it is shared. + + + Property '{0}' cannot be initialized in an object initializer expression because it requires arguments. + + + Property '{0}' cannot be initialized in an object initializer expression because all accessible overloads require arguments. + + + Object initializer syntax cannot be used to initialize an instance of 'System.Object'. + + + Initializer expected. + + + The line continuation character '_' must be preceded by at least one white space and it must be followed by a comment or the '_' must be the last character on the line. + + + Please use language version {0} or greater to use comments after line continuation character. + + + Unable to load module file '{0}': {1} + + + Unable to load referenced library '{0}': {1} + + + Method '{0}' cannot handle event '{1}' because they do not have a compatible signature. + + + Conditional compilation constant '{1}' is not valid: {0} + + + Interface '{0}' can be implemented only once by this type. + + + Interface '{0}' can be implemented only once by this type, but already appears with different tuple element names, as '{1}'. + + + Interface '{0}' can be implemented only once by this type, but already appears with different tuple element names, as '{1}' (via '{2}'). + + + Interface '{0}' (via '{1}') can be implemented only once by this type, but already appears with different tuple element names, as '{2}'. + + + Interface '{0}' (via '{1}') can be implemented only once by this type, but already appears with different tuple element names, as '{2}' (via '{3}'). + + + Interface '{0}' can be inherited only once by this interface, but already appears with different tuple element names, as '{1}'. + + + Interface '{0}' can be inherited only once by this interface, but already appears with different tuple element names, as '{1}' (via '{2}'). + + + Interface '{0}' (via '{1}') can be inherited only once by this interface, but already appears with different tuple element names, as '{2}'. + + + Interface '{0}' (via '{1}') can be inherited only once by this interface, but already appears with different tuple element names, as '{2}' (via '{3}'). + + + Interface '{0}' is not implemented by this class. + + + '{0}' exists in multiple base interfaces. Use the name of the interface that declares '{0}' in the 'Implements' clause instead of the name of the derived interface. + + + 'Sub New' cannot implement interface members. + + + Arrays declared as structure members cannot be declared with an initial size. + + + Events declared with an 'As' clause must have a delegate type. + + + Protected types can only be declared inside of a class. + + + Properties with no required parameters cannot be declared 'Default'. + + + Initializers on structure members are valid only for 'Shared' members and constants. + + + Namespace or type '{0}' has already been imported. + + + Modules cannot be declared '{0}'. + + + 'Implements' statements must follow any 'Inherits' statement and precede all declarations in a class. + + + {0} '{1}' implicitly defines '{2}', which conflicts with a member implicitly declared for {3} '{4}' in {5} '{6}'. + + + {0} '{1}' implicitly defines '{2}', which conflicts with a member of the same name in {3} '{4}'. + + + {0} '{1}' conflicts with a member implicitly declared for {2} '{3}' in {4} '{5}'. + + + {0} '{1}' conflicts with a Visual Basic Runtime {2} '{3}'. + + + First argument to a security attribute must be a valid SecurityAction. + + + Security attribute '{0}' has an invalid SecurityAction value '{1}'. + + + SecurityAction value '{0}' is invalid for security attributes applied to an assembly. + + + SecurityAction value '{0}' is invalid for security attributes applied to a type or a method. + + + SecurityAction value '{0}' is invalid for PrincipalPermission attribute. + + + Unable to resolve file path '{0}' specified for the named argument '{1}' for PermissionSet attribute. + + + Error reading file '{0}' specified for the named argument '{1}' for PermissionSet attribute: '{2}'. + + + 'Set' method cannot have more than one parameter. + + + 'Set' parameter must have the same type as the containing property. + + + 'Set' parameter cannot be declared '{0}'. + + + Method in a structure cannot be declared 'Protected', 'Protected Friend', or 'Private Protected'. + + + Delegate in an interface cannot be declared '{0}'. + + + Enum in an interface cannot be declared '{0}'. + + + Class in an interface cannot be declared '{0}'. + + + Structure in an interface cannot be declared '{0}'. + + + Interface in an interface cannot be declared '{0}'. + + + '{0}' is obsolete. + + + '{0}' is a module and cannot be referenced as an assembly. + + + '{0}' is an assembly and cannot be referenced as a module. + + + Operator '{0}' is not defined for types '{1}' and '{2}'. Use 'Is' operator to compare two reference types. + + + '{0}' is not a local variable or parameter, and so cannot be used as a 'Catch' variable. + + + Members in a Module cannot implement interface members. + + + Events cannot be declared with a delegate type that has a return type. + + + Date constant is not valid. + + + '{0}' cannot override '{1}' because it is not declared 'Overridable'. + + + Array modifiers cannot be specified on both a variable and its type. + + + 'NotOverridable' cannot be specified for methods that do not override another method. + + + Types declared 'Private' must be inside another type. + + + Import of type '{0}' from assembly or module '{1}' failed. + + + Predefined type '{0}' is not defined or imported. + + + ParamArray parameters must have an array type. + + + Implementing class '{0}' for interface '{1}' cannot be found. + + + Type '{0}' cannot be used as an implementing class. + + + Reference to object under construction is not valid when calling another constructor. + + + Implicit reference to object under construction is not valid when calling another constructor. + + + Member '{0}' cannot be found in class '{1}'. This condition is usually the result of a mismatched 'Microsoft.VisualBasic.dll'. + + + Property accessors cannot be declared '{0}'. + + + Access modifier '{0}' is not valid. The access modifier of 'Get' and 'Set' should be more restrictive than the property access level. + + + Access modifier can only be applied to either 'Get' or 'Set', but not both. + + + 'Set' accessor of property '{0}' is not accessible. + + + 'Get' accessor of property '{0}' is not accessible. + + + 'WriteOnly' properties cannot have an access modifier on 'Set'. + + + 'ReadOnly' properties cannot have an access modifier on 'Get'. + + + Property accessors cannot be declared '{0}' in a 'NotOverridable' property. + + + Property accessors cannot be declared '{0}' in a 'Default' property. + + + Property cannot be declared '{0}' because it contains a 'Private' accessor. + + + Implementing class '{0}' for interface '{1}' is not accessible in this context because it is '{2}'. + + + Arrays used as attribute arguments are required to explicitly specify values for all elements. + + + 'Exit AddHandler', 'Exit RemoveHandler' and 'Exit RaiseEvent' are not valid. Use 'Return' to exit from event members. + + + Statement cannot appear within an event body. End of event assumed. + + + 'Custom Event' must end with a matching 'End Event'. + + + 'AddHandler' declaration must end with a matching 'End AddHandler'. + + + 'RemoveHandler' declaration must end with a matching 'End RemoveHandler'. + + + 'RaiseEvent' declaration must end with a matching 'End RaiseEvent'. + + + 'Custom' modifier is not valid on events declared in interfaces. + + + 'Custom' modifier is not valid on events declared without explicit delegate types. + + + 'End Event' must be preceded by a matching 'Custom Event'. + + + 'End AddHandler' must be preceded by a matching 'AddHandler' declaration. + + + 'End RemoveHandler' must be preceded by a matching 'RemoveHandler' declaration. + + + 'End RaiseEvent' must be preceded by a matching 'RaiseEvent' declaration. + + + 'AddHandler' is already declared. + + + 'RemoveHandler' is already declared. + + + 'RaiseEvent' is already declared. + + + 'AddHandler' definition missing for event '{0}'. + + + 'RemoveHandler' definition missing for event '{0}'. + + + 'RaiseEvent' definition missing for event '{0}'. + + + 'AddHandler' and 'RemoveHandler' methods must have exactly one parameter. + + + 'AddHandler' and 'RemoveHandler' method parameters cannot be declared 'ByRef'. + + + Specifiers are not valid on 'AddHandler', 'RemoveHandler' and 'RaiseEvent' methods. + + + 'AddHandler' and 'RemoveHandler' method parameters must have the same delegate type as the containing event. + + + 'RaiseEvent' method must have the same signature as the containing event's delegate type '{0}'. + + + 'AddHandler', 'RemoveHandler' and 'RaiseEvent' method parameters cannot be declared '{0}'. + + + '{0}' cannot refer to itself through its default instance; use 'Me' instead. + + + 'Custom' modifier can only be used immediately before an 'Event' declaration. + + + Option Strict Custom can only be used as an option to the command-line compiler (vbc.exe). + + + '{0}' cannot be applied to the 'AddHandler', 'RemoveHandler', or 'RaiseEvent' definitions. If required, apply the attribute directly to the event. + + + Method '{0}' does not have a signature compatible with delegate '{1}'. + + + XML name expected. + + + XML namespace prefix '{0}' is not defined. + + + Duplicate XML attribute '{0}'. + + + End tag </{0}{1}{2}> expected. + + + Element is missing an end tag. + + + XML namespace prefix '{0}' is reserved for use by XML and the namespace URI cannot be changed. + + + Required attribute 'version' missing from XML declaration. + + + XML declaration does not allow attribute '{0}{1}{2}'. + + + Embedded expression cannot appear inside a quoted attribute value. Try removing quotes. + + + XML attribute 'version' must be the first attribute in XML declaration. + + + XML attribute '{0}' must appear before XML attribute '{1}'. + + + Expected closing '%>' for embedded expression. + + + Expected closing '?>' for XML processor instruction. + + + Expected closing '-->' for XML comment. + + + Expected closing ']]>' for XML CDATA section. + + + Expected matching closing single quote for XML attribute value. + + + Expected matching closing double quote for XML attribute value. + + + Expected beginning '<' for an XML tag. + + + Expected quoted XML attribute value or embedded expression. + + + Expected '/' for XML end tag. + + + XML axis properties do not support late binding. + + + Character '{0}' ({1}) is not allowed at the beginning of an XML name. + + + Character '{0}' ({1}) is not allowed in an XML name. + + + Character sequence '--' is not allowed in an XML comment. + + + An embedded expression cannot be used here. + + + Missing required white space. + + + XML processing instruction name '{0}' is not valid. + + + XML DTDs are not supported. + + + White space cannot appear here. + + + Expected closing ';' for XML entity. + + + Expected '%=' at start of an embedded expression. + + + XML entity references are not supported. + + + Attribute value is not valid; expecting '{0}'. + + + Attribute value is not valid; expecting '{0}' or '{1}'. + + + Prefix '{0}' cannot be bound to namespace name reserved for '{1}'. + + + Namespace declaration with prefix cannot have an empty value inside an XML literal. + + + ':' is not allowed. XML qualified names cannot be used in this context. + + + Namespace declaration must start with 'xmlns'. + + + Element names cannot use the 'xmlns' prefix. + + + XML literals and XML axis properties are not available. Add references to System.Xml, System.Xml.Linq, and System.Core or other assemblies declaring System.Linq.Enumerable, System.Xml.Linq.XElement, System.Xml.Linq.XName, System.Xml.Linq.XAttribute and Sys ... + + + Unable to open Win32 manifest file '{0}' : {1} + + + Cannot convert '{0}' to '{1}'. You can use the 'Value' property to get the string value of the first element of '{2}'. + + + Cannot convert IEnumerable(Of XElement) to String + + + Value of type '{0}' cannot be converted to '{1}'. You can use the 'Value' property to get the string value of the first element of '{2}'. + + + Operator '{0}' is not defined for types '{1}' and '{2}'. You can use the 'Value' property to get the string value of the first element of '{3}'. + + + Full width characters are not valid as XML delimiters. + + + The value '{0}' is not a valid subsystem version. The version must be 6.02 or greater for ARM or AppContainerExe, and 4.00 or greater otherwise. + + + Invalid file section alignment '{0}' + + + Invalid output name: {0} + + + Invalid debug information format: {0} + + + /platform:anycpu32bitpreferred can only be used with /t:exe, /t:winexe and /t:appcontainerexe. + + + Expression has the type '{0}' which is a restricted type and cannot be used to access members inherited from 'Object' or 'ValueType'. + + + Expression of type '{0}' cannot be converted to 'Object' or 'ValueType'. + + + Type characters are not allowed in label identifiers. + + + '{0}' cannot be made nullable, and cannot be used as the data type of an array element, field, anonymous type member, type argument, 'ByRef' parameter, or return statement. + + + Type characters are not allowed on Imports aliases. + + + Class '{0}' has no accessible 'Sub New' and cannot be inherited. + + + Local variables within methods of structures cannot be declared 'Static'. + + + Static local variable '{0}' is already declared. + + + Imports alias '{0}' conflicts with '{1}' declared in the root namespace. + + + '{0}' cannot shadow a method declared 'MustOverride'. + + + Event '{0}' cannot implement event '{2}.{1}' because its delegate type does not match the delegate type of another event implemented by '{0}'. + + + '{0}' and '{1}' cannot be combined. + + + {0} '{1}' must be declared 'Overloads' because another '{1}' is declared 'Overloads' or 'Overrides'. + + + '{0}' must be declared 'MustInherit' because it contains methods declared 'MustOverride'. + + + 'Handles' in classes must specify a 'WithEvents' variable, 'MyBase', 'MyClass' or 'Me' qualified with a single identifier. + + + '{0}', implicitly declared for {1} '{2}', cannot shadow a 'MustOverride' method in the base {3} '{4}'. + + + '{0}' cannot override '{1}' because it is not accessible in this context. + + + 'Handles' in modules must specify a 'WithEvents' variable qualified with a single identifier. + + + 'IsNot' requires operands that have reference types, but this operand has the value type '{0}'. + + + '{0}' conflicts with the reserved member by this name that is implicitly declared in all enums. + + + '{0}' is already declared in this {1}. + + + 'System.Void' can only be used in a GetType expression. + + + Event '{0}' cannot implement event '{1}' on interface '{2}' because their delegate types '{3}' and '{4}' do not match. + + + Type '{0}' in assembly '{1}' has been forwarded to assembly '{2}'. Either a reference to '{2}' is missing from your project or the type '{0}' is missing from assembly '{2}'. + + + '{0}' in assembly '{1}' has been forwarded to itself and so is an unsupported type. + + + Non-intrinsic type names are not allowed in conditional compilation expressions. + + + Syntax error in conditional compilation expression. + + + Arrays of type 'System.Void' are not allowed in this expression. + + + '{0}' is ambiguous because multiple kinds of members with this name exist in {1} '{2}'. + + + Expression of type '{0}' can never be of type '{1}'. + + + Partial methods must be declared 'Private' instead of '{0}'. + + + Partial methods must be declared 'Private'. + + + Method '{0}' cannot be declared 'Partial' because only one method '{1}' can be marked 'Partial'. + + + Method '{0}' cannot implement partial method '{1}' because '{2}' already implements it. Only one method can implement a partial method. + + + Partial methods must have empty method bodies. + + + '{0}' cannot be declared 'Partial' because partial methods must be Subs. + + + Method '{0}' does not have the same generic constraints as the partial method '{1}'. + + + Partial method '{0}' cannot use the 'Implements' keyword. + + + 'AddressOf' cannot be applied to '{0}' because '{0}' is a partial method without an implementation. + + + Method '{0}' must be declared 'Private' in order to implement partial method '{1}'. + + + Parameter name '{0}' does not match the name of the corresponding parameter, '{1}', defined on the partial method declaration '{2}'. + + + Name of type parameter '{0}' does not match '{1}', the corresponding type parameter defined on the partial method declaration '{2}'. + + + 'Shared' attribute property '{0}' cannot be the target of an assignment. + + + 'ReadOnly' attribute property '{0}' cannot be the target of an assignment. + + + Resource name '{0}' cannot be used more than once. + + + Each linked resource and module must have a unique filename. Filename '{0}' is specified more than once in this assembly. + + + '{0}' cannot be used as an attribute because it is not a class. + + + '{0}' cannot be used as an attribute because it does not inherit from 'System.Attribute'. + + + '{0}' cannot be used as an attribute because it is declared 'MustInherit'. + + + Unable to open resource file '{0}': {1} + + + Attribute member '{0}' cannot be the target of an assignment because it is not declared 'Public'. + + + 'System.STAThreadAttribute' and 'System.MTAThreadAttribute' cannot both be applied to the same method. + + + Project '{0}' makes an indirect reference to assembly '{1}', which contains '{2}'. Add a file reference to '{3}' to your project. + + + Type '{0}' cannot be used in an attribute because it is not declared 'Public'. + + + Type '{0}' cannot be used in an attribute because its container '{1}' is not declared 'Public'. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to a Sub, Function, or Operator with a non-empty body. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to a Declare. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to a Get or Set. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to a method that is generic or contained in a generic type. + + + 'Microsoft.VisualBasic.ComClassAttribute' cannot be applied to a class that is generic or contained inside a generic type. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to instance method. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to interface methods. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to 'AddHandler', 'RemoveHandler' or 'RaiseEvent' method. + + + Friend assembly reference '{0}' is invalid. InternalsVisibleTo declarations cannot have a version, culture, public key token, or processor architecture specified. + + + Friend assembly reference '{0}' is invalid. Strong-name signed assemblies must specify a public key in their InternalsVisibleTo declarations. + + + Friend declaration '{0}' is invalid and cannot be resolved. + + + Member '{0}' cannot override member '{1}' defined in another assembly/project because the access modifier 'Protected Friend' expands accessibility. Use 'Protected' instead. + + + Local variable '{0}' cannot be referred to before it is declared. + + + '{0}' is not valid within a Module. + + + Statement cannot end a block outside of a line 'If' statement. + + + 'Char' values cannot be converted to '{0}'. Use 'Microsoft.VisualBasic.AscW' to interpret a character as a Unicode value or 'Microsoft.VisualBasic.Val' to interpret it as a digit. + + + '{0}' values cannot be converted to 'Char'. Use 'Microsoft.VisualBasic.ChrW' to interpret a numeric value as a Unicode character or first convert it to 'String' to produce a digit. + + + Delegate '{0}' requires an 'AddressOf' expression or lambda expression as the only argument to its constructor. + + + Method declaration statements must be the first statement on a logical line. + + + '{0}' cannot be named as a parameter in an attribute specifier because it is not a field or property. + + + Option Strict On disallows operands of type Object for operator '{0}'. Use the 'Is' operator to test for object identity. + + + Bounds can be specified only for the top-level array when initializing an array of arrays. + + + 'Assembly' or 'Module' expected. + + + '{0}' has no parameters and its return type cannot be indexed. + + + Comma, ')', or a valid expression continuation expected. + + + 'Resume' or 'GoTo' expected. + + + '=' expected. + + + Parameter '{0}' in '{1}' already has a matching omitted argument. + + + '{0}' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event. + + + Expression is of type '{0}', which is not a collection type. + + + Default values cannot be supplied for parameters that are not declared 'Optional'. + + + 'MyBase' must be followed by '.' and an identifier. + + + 'MyClass' must be followed by '.' and an identifier. + + + Option Strict On disallows narrowing from type '{1}' to type '{2}' in copying the value of 'ByRef' parameter '{0}' back to the matching argument. + + + '#ElseIf' cannot follow '#Else' as part of a '#If' block. + + + Attribute specifier is not a complete statement. Use a line continuation to apply the attribute to the following statement. + + + Class '{0}' must declare a 'Sub New' because its base class '{1}' has more than one accessible 'Sub New' that can be called with no arguments. + + + 'Next' statement names more variables than there are matching 'For' statements. + + + First statement of this 'Sub New' must be a call to 'MyBase.New' or 'MyClass.New' because base class '{0}' of '{1}' has more than one accessible 'Sub New' that can be called with no arguments. + + + Array declared as for loop control variable cannot be declared with an initial size. + + + The '{0}' keyword is used to overload inherited members; do not use the '{0}' keyword when overloading 'Sub New'. + + + Type character cannot be used in a type parameter declaration. + + + Too few type arguments to '{0}'. + + + Too many type arguments to '{0}'. + + + Type argument '{0}' does not inherit from or implement the constraint type '{1}'. + + + '{0}' has no type parameters and so cannot have type arguments. + + + 'New' cannot be used on a type parameter that does not have a 'New' constraint. + + + Type parameter '{0}' can only have one constraint that is a class. + + + Type constraint '{0}' must be either a class, interface or type parameter. + + + Type parameter already declared with name '{0}'. + + + Type parameter '{0}' for '{1}' cannot be inferred. + + + 'Is' operand of type '{0}' can be compared only to 'Nothing' because '{0}' is a type parameter with no class constraint. + + + Copying the value of 'ByRef' parameter '{0}' back to the matching argument narrows from type '{1}' to type '{2}'. + + + '{0}' has the same name as a type parameter. + + + {0} '{1}' cannot inherit from a type parameter. + + + Type parameter not allowed in 'Implements' clause. + + + Array lower bounds can be only '0'. + + + Type constraint cannot be a 'NotInheritable' class. + + + '{0}' cannot be used as a type constraint. + + + Type parameters cannot be specified on this declaration. + + + Type arguments are not valid because attributes cannot be generic. + + + Type parameters, generic types or types contained in generic types cannot be used as attributes. + + + Local variables within generic methods cannot be declared 'Static'. + + + {0} '{1}' implicitly defines a member '{2}' which has the same name as a type parameter. + + + Constraint type '{0}' already specified for this type parameter. + + + Cannot implement interface '{0}' because its implementation could conflict with the implementation of another implemented interface '{1}' for some type arguments. + + + Modules cannot be generic. + + + Classes that are generic or contained in a generic type cannot inherit from an attribute class. + + + 'Declare' statements are not allowed in generic types or types contained in generic types. + + + '{0}' cannot override '{1}' because they differ by type parameter constraints. + + + '{0}' cannot implement '{1}.{2}' because they differ by type parameter constraints. + + + Type parameters or types constructed with type parameters are not allowed in attribute arguments. + + + Generic methods cannot use 'Handles' clause. + + + 'New' constraint cannot be specified multiple times for the same type parameter. + + + Type argument '{0}' is declared 'MustInherit' and does not satisfy the 'New' constraint for type parameter '{1}'. + + + Type argument '{0}' must have a public parameterless instance constructor to satisfy the 'New' constraint for type parameter '{1}'. + + + Type parameter '{0}' must have either a 'New' constraint or a 'Structure' constraint to satisfy the 'New' constraint for type parameter '{1}'. + + + Arguments cannot be passed to a 'New' used on a type parameter. + + + Generic type '{0}' cannot be imported more than once. + + + Overload resolution failed because no accessible '{0}' accepts this number of type arguments. + + + Type arguments unexpected. + + + '{0}' is already declared as a type parameter of this method. + + + Type parameter cannot have the same name as its defining function. + + + Type or 'New' expected. + + + 'Of' required when specifying type arguments for a generic type or method. + + + '(' unexpected. Arrays of uninstantiated generic types are not allowed. + + + 'For Each' on type '{0}' is ambiguous because the type implements multiple instantiations of 'System.Collections.Generic.IEnumerable(Of T)'. + + + 'IsNot' operand of type '{0}' can be compared only to 'Nothing' because '{0}' is a type parameter with no class constraint. + + + Type parameters cannot be used as qualifiers. + + + Comma or ')' expected. + + + 'As', comma or ')' expected. + + + 'Class' constraint cannot be specified multiple times for the same type parameter. + + + 'Structure' constraint cannot be specified multiple times for the same type parameter. + + + 'New' constraint and 'Structure' constraint cannot be combined. + + + 'Class' constraint and 'Structure' constraint cannot be combined. + + + Type argument '{0}' does not satisfy the 'Structure' constraint for type parameter '{1}'. + + + Type argument '{0}' does not satisfy the 'Class' constraint for type parameter '{1}'. + + + 'Class' constraint and a specific class type constraint cannot be combined. + + + 'Structure' constraint and a specific class type constraint cannot be combined. + + + Indirect constraint '{0}' obtained from the type parameter constraint '{1}' conflicts with the indirect constraint '{2}' obtained from the type parameter constraint '{3}'. + + + Constraint '{0}' conflicts with the indirect constraint '{1}' obtained from the type parameter constraint '{2}'. + + + Indirect constraint '{0}' obtained from the type parameter constraint '{1}' conflicts with the constraint '{2}'. + + + '{0}' is constrained to '{1}'. + + + Type parameter '{0}' cannot be constrained to itself: {1} + + + Type parameter with a 'Structure' constraint cannot be used as a constraint. + + + 'System.Nullable' does not satisfy the 'Structure' constraint for type parameter '{0}'. Only non-nullable 'Structure' types are allowed. + + + Constraint '{0}' conflicts with the constraint '{1}' already specified for type parameter '{2}'. + + + Cannot inherit interface '{0}' because it could be identical to interface '{1}' for some type arguments. + + + Cannot inherit interface '{0}' because the interface '{1}' from which it inherits could be identical to interface '{2}' for some type arguments. + + + Cannot inherit interface '{0}' because the interface '{1}' from which it inherits could be identical to interface '{2}' from which the interface '{3}' inherits for some type arguments. + + + Cannot inherit interface '{0}' because it could be identical to interface '{1}' from which the interface '{2}' inherits for some type arguments. + + + Cannot implement interface '{0}' because the interface '{1}' from which it inherits could be identical to implemented interface '{2}' for some type arguments. + + + Cannot implement interface '{0}' because the interface '{1}' from which it inherits could be identical to interface '{2}' from which the implemented interface '{3}' inherits for some type arguments. + + + Cannot implement interface '{0}' because it could be identical to interface '{1}' from which the implemented interface '{2}' inherits for some type arguments. + + + Generic parameters used as optional parameter types must be class constrained. + + + Methods of 'System.Nullable(Of T)' cannot be used as operands of the 'AddressOf' operator. + + + 'Is' operand of type '{0}' can be compared only to 'Nothing' because '{0}' is a nullable type. + + + 'IsNot' operand of type '{0}' can be compared only to 'Nothing' because '{0}' is a nullable type. + + + '{0}' cannot be declared 'Shadows' outside of a class, structure, or interface. + + + Property parameters cannot have the name 'Value'. + + + The project currently contains references to more than one version of '{0}', a direct reference to version {2} and an indirect reference to version {1}. Change the direct reference to use version {1} (or higher) of {0}. + + + Multiple assemblies with equivalent identity have been imported: '{0}' and '{1}'. Remove one of the duplicate references. + + + Project already has a reference to assembly '{0}'. A second reference to '{1}' cannot be added. + + + Illegal call expression or index expression. + + + Conflict between the default property and the 'DefaultMemberAttribute' defined on '{0}'. + + + '{0}' cannot be applied because the format of the GUID '{1}' is not correct. + + + 'Microsoft.VisualBasic.ComClassAttribute' and '{0}' cannot both be applied to the same class. + + + 'Microsoft.VisualBasic.ComClassAttribute' cannot be applied to '{0}' because its container '{1}' is not declared 'Public'. + + + 'System.Runtime.InteropServices.DispIdAttribute' cannot be applied to '{0}' because 'Microsoft.VisualBasic.ComClassAttribute' reserves zero for the default property. + + + 'System.Runtime.InteropServices.DispIdAttribute' cannot be applied to '{0}' because 'Microsoft.VisualBasic.ComClassAttribute' reserves values less than zero. + + + 'InterfaceId' and 'EventsId' parameters for 'Microsoft.VisualBasic.ComClassAttribute' on '{0}' cannot have the same value. + + + 'Microsoft.VisualBasic.ComClassAttribute' cannot be applied to a class that is declared 'MustInherit'. + + + 'Microsoft.VisualBasic.ComClassAttribute' cannot be applied to '{0}' because it is not declared 'Public'. + + + Operator declaration must be one of: +, -, *, \, /, ^, &, Like, Mod, And, Or, Xor, Not, <<, >>, =, <>, <, <=, >, >=, CType, IsTrue, IsFalse. + + + 'Widening' and 'Narrowing' cannot be combined. + + + Operator is not overloadable. Operator declaration must be one of: +, -, *, \, /, ^, &, Like, Mod, And, Or, Xor, Not, <<, >>, =, <>, <, <=, >, >=, CType, IsTrue, IsFalse. + + + 'Handles' is not valid on operator declarations. + + + 'Implements' is not valid on operator declarations. + + + 'End Operator' expected. + + + 'End Operator' must be the first statement on a line. + + + 'End Operator' must be preceded by a matching 'Operator'. + + + 'Exit Operator' is not valid. Use 'Return' to exit an operator. + + + '{0}' parameters cannot be declared 'ParamArray'. + + + '{0}' parameters cannot be declared 'Optional'. + + + Operators must be declared 'Public'. + + + Operators must be declared 'Shared'. + + + Operators cannot be declared '{0}'. + + + Operator '{0}' must have one parameter. + + + Operator '{0}' must have two parameters. + + + Operator '{0}' must have either one or two parameters. + + + Conversion operators must be declared either 'Widening' or 'Narrowing'. + + + Operators cannot be declared in modules. + + + Only conversion operators can be declared '{0}'. + + + Parameter of this unary operator must be of the containing type '{0}'. + + + At least one parameter of this binary operator must be of the containing type '{0}'. + + + Either the parameter type or the return type of this conversion operator must be of the containing type '{0}'. + + + Operator '{0}' must have a return type of Boolean. + + + Conversion operators cannot convert from a type to the same type. + + + Conversion operators cannot convert to an interface type. + + + Conversion operators cannot convert from a type to its base type. + + + Conversion operators cannot convert from a type to its derived type. + + + Conversion operators cannot convert to Object. + + + Conversion operators cannot convert from an interface type. + + + Conversion operators cannot convert from a base type. + + + Conversion operators cannot convert from a derived type. + + + Conversion operators cannot convert from Object. + + + Matching '{0}' operator is required for '{1}'. + + + Return and parameter types of '{0}' must be '{1}' to be used in a '{2}' expression. + + + Type '{0}' must define operator '{1}' to be used in a '{2}' expression. + + + Cannot copy the value of 'ByRef' parameter '{0}' back to the matching argument because type '{1}' cannot be converted to type '{2}'. + + + Type '{0}' must define operator '{1}' to be used in a 'For' statement. + + + Return and parameter types of '{0}' must be '{1}' to be used in a 'For' statement. + + + Parameter types of '{0}' must be '{1}' to be used in a 'For' statement. + + + Operator '{0}' must have a second parameter of type 'Integer' or 'Integer?'. + + + Nullable modifier cannot be specified on both a variable and its type. + + + Type '{0}' must be a value type or a type argument constrained to 'Structure' in order to be used with 'Nullable' or nullable modifier '?'. + + + Nullable modifier '?' and array modifiers '(' and ')' cannot be specified on both a variable and its type. + + + Expressions used with an 'If' expression cannot contain type characters. + + + 'If' operands cannot be named arguments. + + + Cannot infer a common type for the second and third operands of the 'If' operator. One must have a widening conversion to the other. + + + First operand in a binary 'If' expression must be a nullable value type, a reference type, or an unconstrained generic type. + + + 'If' operator cannot be used in a 'Call' statement. + + + Nullable modifier cannot be specified in variable declarations with 'As New'. + + + Cannot infer a common type for the first and second operands of the binary 'If' operator. One must have a widening conversion to the other. + + + Nullable types are not allowed in conditional compilation expressions. + + + Nullable modifier cannot be used with a variable whose implicit type is 'Object'. + + + Requested operation is not available because the runtime library function '{0}' is not defined. + + + 'Global' must be followed by '.' and an identifier. + + + 'Global' not allowed in this context; identifier expected. + + + 'Global' not allowed in handles; local name expected. + + + 'ElseIf' must be preceded by a matching 'If' or 'ElseIf'. + + + Attribute constructor has a 'ByRef' parameter of type '{0}'; cannot use constructors with byref parameters to apply the attribute. + + + 'End Using' must be preceded by a matching 'Using'. + + + 'Using' must end with a matching 'End Using'. + + + 'GoTo {0}' is not valid because '{0}' is inside a 'Using' statement that does not contain this statement. + + + 'Using' operand of type '{0}' must implement 'System.IDisposable'. + + + 'Using' resource variable must have an explicit initialization. + + + 'Using' resource variable type can not be array type. + + + 'On Error' statements are not valid within 'Using' statements. + + + '{0}' has the same name as a member used for type '{1}' exposed in a 'My' group. Rename the type or its enclosing namespace. + + + Implicit variable '{0}' is invalid because of '{1}'. + + + Object initializers require a field name to initialize. + + + 'From' expected. + + + Nested function does not have the same signature as delegate '{0}'. + + + Nested sub does not have a signature that is compatible with delegate '{0}'. + + + 'ByRef' parameter '{0}' cannot be used in a query expression. + + + Expression cannot be converted into an expression tree. + + + Instance members and 'Me' cannot be used within query expressions in structures. + + + Variable cannot be initialized with non-array type '{0}'. + + + References to 'ByRef' parameters cannot be converted to an expression tree. + + + Anonymous type member or property '{0}' is already declared. + + + Cannot convert anonymous type to an expression tree because a property of the type is used to initialize another property. + + + Anonymous type property '{0}' cannot be used in the definition of a lambda expression within the same initialization list. + + + 'Extension' attribute can be applied only to 'Module', 'Sub', or 'Function' declarations. + + + Extension methods can be defined only in modules. + + + Extension methods must declare at least one parameter. The first parameter specifies which type to extend. + + + 'Optional' cannot be applied to the first parameter of an extension method. The first parameter specifies which type to extend. + + + 'ParamArray' cannot be applied to the first parameter of an extension method. The first parameter specifies which type to extend. + + + Anonymous type member name can be inferred only from a simple or qualified name with no arguments. + + + '{0}' is not a member of '{1}'; it does not exist in the current context. + + + The custom-designed version of 'System.Runtime.CompilerServices.ExtensionAttribute' found by the compiler is not valid. Its attribute usage flags must be set to allow assemblies, classes, and methods. + + + Anonymous type member property '{0}' cannot be used to infer the type of another member property because the type of '{0}' is not yet established. + + + Type characters cannot be used in anonymous type declarations. + + + Type characters cannot be used in tuple literals. + + + 'New' cannot be used with tuple type. Use a tuple literal expression instead. + + + Predefined type '{0}' must be a structure. + + + Extension method '{0}' has type constraints that can never be satisfied. + + + Extension method '{0}' defined in '{1}': {2} + + + Method does not have a signature compatible with the delegate. + + + Type arguments could not be inferred from the delegate. + + + Too many arguments. + + + Parameter '{0}' already has a matching omitted argument. + + + Parameter '{0}' already has a matching argument. + + + '{0}' is not a method parameter. + + + Argument not specified for parameter '{0}'. + + + Type parameter '{0}' cannot be inferred. + + + Extension method '{0}' defined in '{1}'. + + + Anonymous type must contain at least one member. + + + Anonymous type member name must be preceded by a period. + + + Identifier expected, preceded with a period. + + + Too many arguments to extension method '{0}' defined in '{1}'. + + + Parameter '{0}' in extension method '{1}' defined in '{2}' already has a matching omitted argument. + + + Parameter '{0}' of extension method '{1}' defined in '{2}' already has a matching argument. + + + '{0}' is not a parameter of extension method '{1}' defined in '{2}'. + + + Argument not specified for parameter '{0}' of extension method '{1}' defined in '{2}'. + + + Type parameter '{0}' for extension method '{1}' defined in '{2}' cannot be inferred. + + + Too few type arguments to extension method '{0}' defined in '{1}'. + + + Too many type arguments to extension method '{0}' defined in '{1}'. + + + 'In' or '=' expected. + + + Expression of type '{0}' is not queryable. Make sure you are not missing an assembly reference and/or namespace import for the LINQ provider. + + + Definition of method '{0}' is not accessible in this context. + + + Method cannot contain both a '{0}' statement and a definition of a variable that is used in a lambda or query expression. + + + '{0}{1}' is not valid because '{2}' is inside a scope that defines a variable that is used in a lambda or query expression. + + + Instance of restricted type '{0}' cannot be used in a query expression. + + + Range variable name can be inferred only from a simple or qualified name with no arguments. + + + Range variable '{0}' is already declared. + + + Type characters cannot be used in range variable declarations. + + + 'ReadOnly' variable cannot be the target of an assignment in a lambda expression inside a constructor. + + + Multi-dimensional array cannot be converted to an expression tree. + + + Late binding operations cannot be converted to an expression tree. + + + 'By' expected. + + + Range variable name cannot match the name of a member of the 'Object' class. + + + 'In' expected. + + + Name '{0}' is either not declared or not in the current scope. + + + Return type of nested function matching parameter '{0}' narrows from '{1}' to '{2}'. + + + Anonymous type member name cannot be inferred from an XML identifier that is not a valid Visual Basic identifier. + + + Range variable name cannot be inferred from an XML identifier that is not a valid Visual Basic identifier. + + + 'Into' expected. + + + Aggregate function name cannot be used with a type character. + + + 'On' expected. + + + 'Equals' expected. + + + 'And' expected. + + + 'Equals' cannot compare a value of type '{0}' with a value of type '{1}'. + + + You must reference at least one range variable on both sides of the 'Equals' operator. Range variable(s) {0} must appear on one side of the 'Equals' operator, and range variable(s) {1} must appear on the other. + + + Lambda expression cannot be converted to '{0}' because '{0}' is not a delegate type. + + + Lambda expression cannot be converted to '{0}' because type '{0}' is declared 'MustInherit' and cannot be created. + + + A nullable type cannot be inferred for variable '{0}'. + + + Nullable type inference is not supported in this context. + + + 'Join' expected. + + + Nullable parameters must specify a type. + + + Range variable '{0}' hides a variable in an enclosing block, a previously defined range variable, or an implicitly declared variable in a query expression. + + + Attributes cannot be applied to parameters of lambda expressions. + + + Lambda expressions are not valid in the first expression of a 'Select Case' statement. + + + 'AddressOf' expressions are not valid in the first expression of a 'Select Case' statement. + + + The '?' character cannot be used here. + + + Instance members and 'Me' cannot be used within a lambda expression in structures. + + + 'ByRef' parameter '{0}' cannot be used in a lambda expression. + + + Instance of restricted type '{0}' cannot be used in a lambda expression. + + + Lambda parameter '{0}' hides a variable in an enclosing block, a previously defined range variable, or an implicitly declared variable in a query expression. + + + Option Strict On requires each lambda expression parameter to be declared with an 'As' clause if its type cannot be inferred. + + + Array modifiers cannot be specified on lambda expression parameter name. They must be specified on its type. + + + Data type(s) of the type parameter(s) cannot be inferred from these arguments. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) in method '{0}' cannot be inferred from these arguments. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) in extension method '{0}' defined in '{1}' cannot be inferred from these arguments. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) cannot be inferred from these arguments. + + + Data type(s) of the type parameter(s) in method '{0}' cannot be inferred from these arguments. + + + Data type(s) of the type parameter(s) in extension method '{0}' defined in '{1}' cannot be inferred from these arguments. + + + Data type(s) of the type parameter(s) cannot be inferred from these arguments because more than one type is possible. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) in method '{0}' cannot be inferred from these arguments because more than one type is possible. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) in extension method '{0}' defined in '{1}' cannot be inferred from these arguments because more than one type is possible. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) cannot be inferred from these arguments because more than one type is possible. + + + Data type(s) of the type parameter(s) in method '{0}' cannot be inferred from these arguments because more than one type is possible. + + + Data type(s) of the type parameter(s) in extension method '{0}' defined in '{1}' cannot be inferred from these arguments because more than one type is possible. + + + Data type(s) of the type parameter(s) cannot be inferred from these arguments because they do not convert to the same type. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) in method '{0}' cannot be inferred from these arguments because they do not convert to the same type. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) in extension method '{0}' defined in '{1}' cannot be inferred from these arguments because they do not convert to the same type. Specifying the data type(s) explicitly might correct this error. + + + Data type(s) of the type parameter(s) cannot be inferred from these arguments because they do not convert to the same type. + + + Data type(s) of the type parameter(s) in method '{0}' cannot be inferred from these arguments because they do not convert to the same type. + + + Data type(s) of the type parameter(s) in extension method '{0}' defined in '{1}' cannot be inferred from these arguments because they do not convert to the same type. + + + Option Strict On does not allow narrowing in implicit type conversions between method '{0}' and delegate '{1}'. + + + '{0}' is not accessible in this context because the return type is not accessible. + + + 'Group' or an identifier expected. + + + 'Group' not allowed in this context; identifier expected. + + + Option Strict On does not allow narrowing in implicit type conversions between extension method '{0}' defined in '{2}' and delegate '{1}'. + + + Extension Method '{0}' defined in '{2}' does not have a signature compatible with delegate '{1}'. + + + Argument matching parameter '{0}' narrows to '{1}'. + + + {0} + + + Auto-implemented Properties contained in Structures cannot have initializers unless they are marked 'Shared'. + + + XML elements cannot be selected from type '{0}'. + + + XML attributes cannot be selected from type '{0}'. + + + XML descendant elements cannot be selected from type '{0}'. + + + Extension method '{0}' defined in '{1}' is not generic (or has no free type parameters) and so cannot have type arguments. + + + Late-bound extension methods are not supported. + + + Cannot infer a data type for '{0}' because the array dimensions do not match. + + + Type of the range variable cannot be inferred, and late binding is not allowed with Option Strict on. Use an 'As' clause to specify the type. + + + Type '{0}' cannot be embedded because it has generic argument. Consider disabling the embedding of interop types. + + + Type '{0}' cannot be used across assembly boundaries because it has a generic type argument that is an embedded interop type. + + + '{0}' is obsolete: '{1}'. + + + Type or member is obsolete + + + {0} '{1}' shadows an overloadable member declared in the base {2} '{3}'. If you want to overload the base method, this method must be declared 'Overloads'. + + + Member shadows an overloadable member declared in the base type + + + {0} '{1}' conflicts with {2} '{1}' in the base {3} '{4}' and should be declared 'Shadows'. + + + Member conflicts with member in the base type and should be declared 'Shadows' + + + {0} '{1}' shadows an overridable method in the base {2} '{3}'. To override the base method, this method must be declared 'Overrides'. + + + Member shadows an overridable method in the base type + + + Default property '{0}' conflicts with the default property '{1}' in the base {2} '{3}'. '{0}' will be the default property. '{0}' should be declared 'Shadows'. + + + Default property conflicts with the default property in the base type + + + '{0}' is obsolete. + + + Type or member is obsolete + + + Possible problem detected while building assembly: {0} + + + Possible problem detected while building assembly + + + Possible problem detected while building assembly '{0}': {1} + + + Possible problem detected while building assembly + + + 'Microsoft.VisualBasic.ComClassAttribute' is specified for class '{0}' but '{0}' has no public members that can be exposed to COM; therefore, no COM interfaces are generated. + + + 'Microsoft.VisualBasic.ComClassAttribute' is specified for class but class has no public members that can be exposed to COM + + + {0} '{1}' implicitly declares '{2}', which conflicts with a member in the base {3} '{4}', and so the {0} should be declared 'Shadows'. + + + Property or event implicitly declares type or member that conflicts with a member in the base type + + + {0} '{1}' conflicts with a member implicitly declared for {2} '{3}' in the base {4} '{5}' and should be declared 'Shadows'. + + + Member conflicts with a member implicitly declared for property or event in the base type + + + {0} '{1}' implicitly declares '{2}', which conflicts with a member implicitly declared for {3} '{4}' in the base {5} '{6}'. {0} should be declared 'Shadows'. + + + Property or event implicitly declares member, which conflicts with a member implicitly declared for property or event in the base type + + + '{0}' accessor of '{1}' is obsolete: '{2}'. + + + Property accessor is obsolete + + + '{0}' accessor of '{1}' is obsolete. + + + Property accessor is obsolete + + + Type of member '{0}' is not CLS-compliant. + + + Type of member is not CLS-compliant + + + '{0}' is not CLS-compliant because it derives from '{1}', which is not CLS-compliant. + + + Type is not CLS-compliant because it derives from base type that is not CLS-compliant + + + Return type of function '{0}' is not CLS-compliant. + + + Return type of function is not CLS-compliant + + + Type of parameter '{0}' is not CLS-compliant. + + + Type of parameter is not CLS-compliant + + + '{0}' is not CLS-compliant because the interface '{1}' it inherits from is not CLS-compliant. + + + Type is not CLS-compliant because the interface it inherits from is not CLS-compliant + + + {0} '{1}' cannot be marked CLS-compliant because its containing type '{2}' is not CLS-compliant. + + + Member cannot be marked CLS-compliant because its containing type is not CLS-compliant + + + Name '{0}' is not CLS-compliant. + + + Name is not CLS-compliant + + + Underlying type '{0}' of Enum is not CLS-compliant. + + + Underlying type of Enum is not CLS-compliant + + + Non CLS-compliant '{0}' is not allowed in a CLS-compliant interface. + + + Non CLS-compliant member is not allowed in a CLS-compliant interface + + + Non CLS-compliant 'MustOverride' member is not allowed in CLS-compliant type '{0}'. + + + Non CLS-compliant 'MustOverride' member is not allowed in CLS-compliant type + + + '{0}' is not CLS-compliant because it overloads '{1}' which differs from it only by array of array parameter types or by the rank of the array parameter types. + + + Method is not CLS-compliant because it overloads method which differs from it only by array of array parameter types or by the rank of the array parameter types + + + Root namespace '{0}' is not CLS-compliant. + + + Root namespace is not CLS-compliant + + + Name '{0}' in the root namespace '{1}' is not CLS-compliant. + + + Part of the root namespace is not CLS-compliant + + + Generic parameter constraint type '{0}' is not CLS-compliant. + + + Generic parameter constraint type is not CLS-compliant + + + Type '{0}' is not CLS-compliant. + + + Type is not CLS-compliant + + + Type of optional value for optional parameter '{0}' is not CLS-compliant. + + + Type of optional value for optional parameter is not CLS-compliant + + + System.CLSCompliantAttribute cannot be applied to property 'Get' or 'Set'. + + + System.CLSCompliantAttribute cannot be applied to property 'Get' or 'Set' + + + {0} '{1}' and partial {2} '{3}' conflict in {4} '{5}', but are being merged because one of them is declared partial. + + + Type and partial type conflict, but are being merged because one of them is declared partial + + + Type parameter '{0}' has the same name as a type parameter of an enclosing type. Enclosing type's type parameter will be shadowed. + + + Type parameter has the same name as a type parameter of an enclosing type + + + Could not find standard library '{0}'. + + + Could not find standard library + + + Delegate type '{0}' of event '{1}' is not CLS-compliant. + + + Delegate type of event is not CLS-compliant + + + System.Diagnostics.DebuggerHiddenAttribute does not affect 'Get' or 'Set' when applied to the Property definition. Apply the attribute directly to the 'Get' and 'Set' procedures as appropriate. + + + System.Diagnostics.DebuggerHiddenAttribute does not affect 'Get' or 'Set' when applied to the Property definition + + + Range specified for 'Case' statement is not valid. Make sure that the lower bound is less than or equal to the upper bound. + + + Range specified for 'Case' statement is not valid + + + '{0}' method for event '{1}' cannot be marked CLS compliant because its containing type '{2}' is not CLS compliant. + + + AddHandler or RemoveHandler method for event cannot be marked CLS compliant because its containing type is not CLS compliant + + + '{0}' in designer-generated type '{1}' should call InitializeComponent method. + + + Constructor in designer-generated type should call InitializeComponent method + + + Casing of namespace name '{0}' does not match casing of namespace name '{1}' in '{2}'. + + + Casing of namespace name does not match + + + Namespace or type specified in the Imports '{0}' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any aliases. + + + Namespace or type specified in Imports statement doesn't contain any public member or cannot be found + + + Namespace or type specified in the project-level Imports '{0}' doesn't contain any public member or cannot be found. Make sure the namespace or the type is defined and contains at least one public member. Make sure the imported element name doesn't use any ... + + + Namespace or type imported at project level doesn't contain any public member or cannot be found + + + A reference was created to embedded interop assembly '{0}' because of an indirect reference to that assembly from assembly '{1}'. Consider changing the 'Embed Interop Types' property on either assembly. + + + A reference was created to embedded interop assembly because of an indirect reference to that assembly + + + Class '{0}' should declare a 'Sub New' because the '{1}' in its base class '{2}' is marked obsolete. + + + Class should declare a 'Sub New' because the constructor in its base class is marked obsolete + + + Class '{0}' should declare a 'Sub New' because the '{1}' in its base class '{2}' is marked obsolete: '{3}'. + + + Class should declare a 'Sub New' because the constructor in its base class is marked obsolete + + + First statement of this 'Sub New' should be an explicit call to 'MyBase.New' or 'MyClass.New' because the '{0}' in the base class '{1}' of '{2}' is marked obsolete. + + + First statement of this 'Sub New' should be an explicit call to 'MyBase.New' or 'MyClass.New' because the constructor in the base class is marked obsolete + + + First statement of this 'Sub New' should be an explicit call to 'MyBase.New' or 'MyClass.New' because the '{0}' in the base class '{1}' of '{2}' is marked obsolete: '{3}' + + + First statement of this 'Sub New' should be an explicit call to 'MyBase.New' or 'MyClass.New' because the constructor in the base class is marked obsolete + + + Operator without an 'As' clause; type of Object assumed. + + + Operator without an 'As' clause + + + Type arguments inferred for method '{0}' result in the following warnings :{1} + + + Type arguments inferred for method result in warnings + + + Attribute 'Conditional' is only valid on 'Sub' declarations. + + + Attribute 'Conditional' is only valid on 'Sub' declarations + + + Use command-line option '{0}' or appropriate project settings instead of '{1}'. + + + Use command-line option /keyfile, /keycontainer, or /delaysign instead of AssemblyKeyFileAttribute, AssemblyKeyNameAttribute, or AssemblyDelaySignAttribute + + + Statement recursively calls the containing '{0}' for event '{1}'. + + + Statement recursively calls the event's containing AddHandler + + + Implicit conversion from '{1}' to '{2}' in copying the value of 'ByRef' parameter '{0}' back to the matching argument. + + + Implicit conversion in copying the value of 'ByRef' parameter back to the matching argument + + + {0} '{1}' conflicts with other members of the same name across the inheritance hierarchy and so should be declared 'Shadows'. + + + Method conflicts with other members of the same name across the inheritance hierarchy and so should be declared 'Shadows' + + + Expression recursively calls the containing Operator '{0}'. + + + Expression recursively calls the containing Operator + + + Implicit conversion from '{0}' to '{1}'. + + + Implicit conversion + + + Local variable '{0}' is read-only and its type is a structure. Invoking its members or passing it ByRef does not change its content and might lead to unexpected results. Consider declaring this variable outside of the 'Using' block. + + + Local variable declared by Using statement is read-only and its type is a structure + + + Local variable '{0}' is read-only. When its type is a structure, invoking its members or passing it ByRef does not change its content and might lead to unexpected results. Consider declaring this variable outside of the 'Using' block. + + + Local variable declared by Using statement is read-only and its type may be a structure + + + {0} + + + Implicit conversion + + + Late bound resolution; runtime errors could occur. + + + Late bound resolution + + + Operands of type Object used for operator '{0}'; use the 'Is' operator to test object identity. + + + Operands of type Object used for operator + + + Operands of type Object used for operator '{0}'; runtime errors could occur. + + + Operands of type Object used for operator + + + {0} + + + Variable declaration without an 'As' clause + + + {0} + + + Function without an 'As' clause + + + {0} + + + Property without an 'As' clause + + + Variable declaration without an 'As' clause; type of Object assumed. + + + Variable declaration without an 'As' clause + + + Function without an 'As' clause; return type of Object assumed. + + + Function without an 'As' clause + + + Property without an 'As' clause; type of Object assumed. + + + Property without an 'As' clause + + + Unused local variable: '{0}'. + + + Unused local variable + + + Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated. + + + Access of shared member, constant member, enum member or nested type through an instance + + + Expression recursively calls the containing property '{0}'. + + + Expression recursively calls the containing property + + + 'Catch' block never reached, because '{0}' inherits from '{1}'. + + + 'Catch' block never reached; exception type's base type handled above in the same Try statement + + + Variable '{0}' is passed by reference before it has been assigned a value. A null reference exception could result at runtime. + + + Variable is passed by reference before it has been assigned a value + + + 'Catch' block never reached; '{0}' handled above in the same Try statement. + + + 'Catch' block never reached; exception type handled above in the same Try statement + + + Operands of type Object used for operator '{0}'; use the 'IsNot' operator to test object identity. + + + Operands of type Object used for operator <> + + + Bad checksum value, non hex digits or odd number of hex digits. + + + Bad checksum value, non hex digits or odd number of hex digits + + + File name already declared with a different GUID and checksum value. + + + File name already declared with a different GUID and checksum value + + + Bad GUID format. + + + Bad GUID format + + + Operands of type Object used in expressions for 'Select', 'Case' statements; runtime errors could occur. + + + Operands of type Object used in expressions for 'Select', 'Case' statements + + + This expression will always evaluate to Nothing (due to null propagation from the equals operator). To check if the value is null consider using 'Is Nothing'. + + + This expression will always evaluate to Nothing + + + This expression will always evaluate to Nothing (due to null propagation from the equals operator). To check if the value is not null consider using 'IsNot Nothing'. + + + This expression will always evaluate to Nothing + + + Unused local constant: '{0}'. + + + Unused local constant + + + 'Microsoft.VisualBasic.ComClassAttribute' on class '{0}' implicitly declares {1} '{2}', which conflicts with a member of the same name in {3} '{4}'. Use 'Microsoft.VisualBasic.ComClassAttribute(InterfaceShadows:=True)' if you want to hide the name on the b ... + + + 'Microsoft.VisualBasic.ComClassAttribute' on class implicitly declares member, which conflicts with a member of the same name + + + '{0}' cannot be exposed to COM as a property 'Let'. You will not be able to assign non-object values (such as numbers or strings) to this property from Visual Basic 6.0 using a 'Let' statement. + + + Property cannot be exposed to COM as a property 'Let' + + + Variable '{0}' is used before it has been assigned a value. A null reference exception could result at runtime. + + + Variable is used before it has been assigned a value + + + Function '{0}' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used. + + + Function doesn't return a value on all code paths + + + Operator '{0}' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used. + + + Operator doesn't return a value on all code paths + + + Property '{0}' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used. + + + Property doesn't return a value on all code paths + + + Variable '{0}' is passed by reference before it has been assigned a value. A null reference exception could result at runtime. Make sure the structure or all the reference members are initialized before use + + + Variable is passed by reference before it has been assigned a value + + + Variable '{0}' is used before it has been assigned a value. A null reference exception could result at runtime. Make sure the structure or all the reference members are initialized before use + + + Variable is used before it has been assigned a value + + + Static variable declared without an 'As' clause; type of Object assumed. + + + Static variable declared without an 'As' clause + + + Assembly reference '{0}' is invalid and cannot be resolved. + + + Assembly reference is invalid and cannot be resolved + + + XML comment block must immediately precede the language element to which it applies. XML comment will be ignored. + + + XML comment block must immediately precede the language element to which it applies + + + Only one XML comment block is allowed per language element. + + + Only one XML comment block is allowed per language element + + + XML comment must be the first statement on a line. XML comment will be ignored. + + + XML comment must be the first statement on a line + + + XML comment cannot appear within a method or a property. XML comment will be ignored. + + + XML comment cannot appear within a method or a property + + + XML documentation parse error: {0} XML comment will be ignored. + + + XML documentation parse error + + + XML comment tag '{0}' appears with identical attributes more than once in the same XML comment block. + + + XML comment tag appears with identical attributes more than once in the same XML comment block + + + XML comment tag '{0}' is not permitted on a '{1}' language element. + + + XML comment tag is not permitted on language element + + + XML comment parameter '{0}' does not match a parameter on the corresponding '{1}' statement. + + + XML comment parameter does not match a parameter on the corresponding declaration statement + + + XML comment parameter must have a 'name' attribute. + + + XML comment parameter must have a 'name' attribute + + + XML comment has a tag with a 'cref' attribute '{0}' that could not be resolved. + + + XML comment has a tag with a 'cref' attribute that could not be resolved + + + XML comment tag 'include' must have a '{0}' attribute. XML comment will be ignored. + + + XML comment tag 'include' must have 'file' and 'path' attributes + + + Unable to create XML documentation file '{0}': {1} + + + Unable to create XML documentation file + + + XML documentation comments must precede member or type declarations. + + + XML documentation comments must precede member or type declarations + + + XML comment tag 'returns' is not permitted on a 'WriteOnly' Property. + + + XML comment tag 'returns' is not permitted on a 'WriteOnly' Property + + + XML comment cannot be applied more than once on a partial {0}. XML comments for this {0} will be ignored. + + + XML comment cannot be applied more than once on a partial type + + + XML comment tag 'returns' is not permitted on a 'declare sub' language element. + + + XML comment tag 'returns' is not permitted on a 'declare sub' language element + + + XML documentation parse error: Start tag '{0}' doesn't have a matching end tag. XML comment will be ignored. + + + XML documentation parse error: Start tag doesn't have a matching end tag + + + XML comment type parameter '{0}' does not match a type parameter on the corresponding '{1}' statement. + + + XML comment type parameter does not match a type parameter on the corresponding declaration statement + + + XML comment type parameter must have a 'name' attribute. + + + XML comment type parameter must have a 'name' attribute + + + XML comment exception must have a 'cref' attribute. + + + XML comment exception must have a 'cref' attribute + + + Unable to include XML fragment '{0}' of file '{1}'. + + + Unable to include XML fragment + + + Unable to include XML fragment '{1}' of file '{0}'. {2} + + + Unable to include XML fragment + + + Runtime errors might occur when converting '{0}' to '{1}'. + + + Runtime errors might occur when converting to or from interface type + + + Using the iteration variable in a lambda expression may have unexpected results. Instead, create a local variable within the loop and assign it the value of the iteration variable. + + + Using the iteration variable in a lambda expression may have unexpected results + + + Lambda expression will not be removed from this event handler. Assign the lambda expression to a variable and use the variable to add and remove the event. + + + Lambda expression will not be removed from this event handler + + + Using the iteration variable in a query expression may have unexpected results. Instead, create a local variable within the loop and assign it the value of the iteration variable. + + + Using the iteration variable in a query expression may have unexpected results + + + The 'AddressOf' expression has no effect in this context because the method argument to 'AddressOf' requires a relaxed conversion to the delegate type of the event. Assign the 'AddressOf' expression to a variable, and use the variable to add or remove the ... + + + The 'AddressOf' expression has no effect in this context because the method argument to 'AddressOf' requires a relaxed conversion to the delegate type of the event + + + Range variable is assumed to be of type Object because its type cannot be inferred. Use an 'As' clause to specify a different type. + + + Range variable is assumed to be of type Object because its type cannot be inferred + + + Multiline lambda expression is missing 'End Function'. + + + Multiline lambda expression is missing 'End Sub'. + + + Attributes cannot be applied to return types of lambda expressions. + + + Statement is not valid inside a single-line statement lambda. + + + This single-line statement lambda must be enclosed in parentheses. For example: (Sub() <statement>)!key + + + This single-line statement lambda must be enclosed in parentheses. For example: (Sub() <statement>).Invoke() + + + This single-line statement lambda must be enclosed in parentheses. For example: Call (Sub() <statement>) () + + + Single-line statement lambdas must include exactly one statement. + + + Static local variables cannot be declared inside lambda expressions. + + + Expanded Properties cannot be initialized. + + + Auto-implemented properties cannot have parameters. + + + Auto-implemented properties cannot be WriteOnly. + + + 'If' operator requires either two or three operands. + + + Cannot initialize the type '{0}' with a collection initializer because it is not a collection type. + + + Cannot initialize the type '{0}' with a collection initializer because it does not have an accessible 'Add' method. + + + An Object Initializer and a Collection Initializer cannot be combined in the same initialization. + + + An aggregate collection initializer entry must contain at least one element. + + + XML end element must be preceded by a matching start element. + + + 'On Error' and 'Resume' cannot appear inside a lambda expression. + + + Keywords 'Out' and 'In' can only be used in interface and delegate declarations. + + + The literal string ']]>' is not allowed in element content. + + + Inappropriate use of '{0}' keyword in a module. + + + Type or namespace '{0}' is not defined. + + + Using DirectCast operator to cast a floating-point value to the same type is not supported. + + + Using DirectCast operator to cast a value-type to the same type is obsolete. + + + Using DirectCast operator to cast a value-type to the same type is obsolete + + + Unreachable code detected. + + + Unreachable code detected + + + Function '{0}' doesn't return a value on all code paths. Are you missing a 'Return' statement? + + + Function doesn't return a value on all code paths + + + Operator '{0}' doesn't return a value on all code paths. Are you missing a 'Return' statement? + + + Operator doesn't return a value on all code paths + + + Property '{0}' doesn't return a value on all code paths. Are you missing a 'Return' statement? + + + Property doesn't return a value on all code paths + + + Global namespace may not be nested in another namespace. + + + '{0}' cannot expose type '{1}' in {2} '{3}' through {4} '{5}'. + + + '{0}' cannot be referenced because it is not a valid assembly. + + + '{0}' cannot be implemented by a {1} property. + + + {0}: {1} + + + Cannot infer a common type because more than one type is possible. + + + Cannot infer a common type because more than one type is possible; 'Object' assumed. + + + Cannot infer a common type because more than one type is possible + + + Cannot infer a common type, and Option Strict On does not allow 'Object' to be assumed. + + + Cannot infer a common type; 'Object' assumed. + + + Cannot infer a common type + + + Cannot infer a common type. + + + Error extracting public key from file '{0}': {1} + + + Error extracting public key from container '{0}': {1} + + + Friend access was granted by '{0}', but the public key of the output assembly does not match that specified by the attribute in the granting assembly. + + + Friend access was granted by '{0}', but the strong name signing state of the output assembly does not match that of the granting assembly. + + + Public sign was specified and requires a public key, but no public key was specified + + + Public signing is not supported for netmodules. + + + Attribute '{0}' is ignored when public signing is specified. + + + Attribute is ignored when public signing is specified. + + + Delay signing was specified and requires a public key, but no public key was specified. + + + Delay signing was specified and requires a public key, but no public key was specified + + + Key file '{0}' is missing the private key needed for signing. + + + Error signing assembly '{0}': {1} + + + The specified version string does not conform to the required format - major[.minor[.build|*[.revision|*]]] + + + The specified version string does not conform to the recommended format - major.minor.build.revision + + + The specified version string does not conform to the recommended format + + + The specified version string does not conform to the recommended format - major.minor.build.revision + + + Executables cannot be satellite assemblies; culture should always be empty + + + The entry point of the program is global script code; ignoring '{0}' entry point. + + + The entry point of the program is global script code; ignoring entry point + + + The xmlns attribute has special meaning and should not be written with a prefix. + + + The xmlns attribute has special meaning and should not be written with a prefix + + + It is not recommended to have attributes named xmlns. Did you mean to write 'xmlns:{0}' to define a prefix named '{0}'? + + + It is not recommended to have attributes named xmlns + + + Expected a single script (.vbx file) + + + The assembly name '{0}' is reserved and cannot be used as a reference in an interactive session + + + #R is only allowed in scripts + + + You cannot declare Namespace in script code + + + You cannot use '{0}' in top-level script code + + + Cannot infer a return type. Consider adding an 'As' clause to specify the return type. + + + Cannot infer a return type; 'Object' assumed. + + + Cannot infer a return type + + + Cannot infer a return type because more than one type is possible; 'Object' assumed. + + + Cannot infer a return type because more than one type is possible + + + Cannot infer a return type. Consider adding an 'As' clause to specify the return type. + + + Cannot infer a return type because more than one type is possible. Consider adding an 'As' clause to specify the return type. + + + The command line switch '{0}' is not yet implemented and was ignored. + + + Command line switch is not yet implemented + + + Cannot infer an element type, and Option Strict On does not allow 'Object' to be assumed. Specifying the type of the array might correct this error. + + + Cannot infer an element type. Specifying the type of the array might correct this error. + + + Cannot infer an element type because more than one type is possible. Specifying the type of the array might correct this error. + + + Cannot infer an element type; 'Object' assumed. + + + Cannot infer an element type + + + Cannot infer an element type because more than one type is possible; 'Object' assumed. + + + Cannot infer an element type because more than one type is possible + + + Data type of '{0}' in '{1}' could not be inferred. '{2}' assumed. + + + Data type could not be inferred + + + Option Strict On does not allow implicit conversions from '{0}' to '{1}' because the conversion is ambiguous. + + + Conversion from '{0}' to '{1}' may be ambiguous. + + + Conversion may be ambiguous + + + '{0}' cannot be converted to '{1}'. Consider using '{2}' instead. + + + '{0}' cannot be converted to '{1}'. Consider using '{2}' instead. + + + Type cannot be converted to target collection type + + + '{4}' cannot be converted to '{5}' because '{0}' is not derived from '{1}', as required for the 'In' generic parameter '{2}' in '{3}'. + + + '{4}' cannot be converted to '{5}' because '{0}' is not derived from '{1}', as required for the 'Out' generic parameter '{2}' in '{3}'. + + + Implicit conversion from '{4}' to '{5}'; this conversion may fail because '{0}' is not derived from '{1}', as required for the 'In' generic parameter '{2}' in '{3}'. + + + Implicit conversion; this conversion may fail because the target type is not derived from the source type, as required for 'In' generic parameter + + + Implicit conversion from '{4}' to '{5}'; this conversion may fail because '{0}' is not derived from '{1}', as required for the 'Out' generic parameter '{2}' in '{3}'. + + + Implicit conversion; this conversion may fail because the target type is not derived from the source type, as required for 'Out' generic parameter + + + '{0}' cannot be converted to '{1}'. Consider changing the '{2}' in the definition of '{3}' to an In type parameter, 'In {2}'. + + + '{0}' cannot be converted to '{1}'. Consider changing the '{2}' in the definition of '{3}' to an Out type parameter, 'Out {2}'. + + + '{0}' cannot be converted to '{1}'. Consider changing the '{2}' in the definition of '{3}' to an In type parameter, 'In {2}'. + + + Type cannot be converted to target type + + + '{0}' cannot be converted to '{1}'. Consider changing the '{2}' in the definition of '{3}' to an Out type parameter, 'Out {2}'. + + + Type cannot be converted to target type + + + Interface '{0}' is ambiguous with another implemented interface '{1}' due to the 'In' and 'Out' parameters in '{2}'. + + + Interface is ambiguous with another implemented interface due to 'In' and 'Out' parameters + + + Enumerations, classes, and structures cannot be declared in an interface that has an 'In' or 'Out' type parameter. + + + Event definitions with parameters are not allowed in an interface such as '{0}' that has 'In' or 'Out' type parameters. Consider declaring the event by using a delegate type which is not defined within '{0}'. For example, 'Event {1} As Action(Of ...)'. + + + Type '{0}' cannot be used in this context because 'In' and 'Out' type parameters cannot be used for ByRef parameter types, and '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used in '{1}' because 'In' and 'Out' type parameters cannot be made nullable, and '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used in this context because '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used for the '{1}' in '{2}' in this context because '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used in '{1}' in this context because '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used for the '{2}' of '{3}' in '{1}' in this context because '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used as a property type in this context because '{0}' is an 'In' type parameter and the property is not marked WriteOnly. + + + Type '{0}' cannot be used as a ReadOnly property type because '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used as a return type because '{0}' is an 'In' type parameter. + + + Type '{0}' cannot be used in this context because 'In' and 'Out' type parameters cannot be used for ByRef parameter types, and '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used as a ByVal parameter type because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used as a generic type constraint because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used in '{1}' because 'In' and 'Out' type parameters cannot be made nullable, and '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used in this context because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used for the '{1}' in '{2}' in this context because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used in '{1}' in this context because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used for the '{2}' of '{3}' in '{1}' in this context because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used as a property type in this context because '{0}' is an 'Out' type parameter and the property is not marked ReadOnly. + + + Type '{0}' cannot be used as a WriteOnly property type because '{0}' is an 'Out' type parameter. + + + Type '{0}' cannot be used in this context because both the context and the definition of '{0}' are nested within interface '{1}', and '{1}' has 'In' or 'Out' type parameters. Consider moving the definition of '{0}' outside of '{1}'. + + + Type '{0}' cannot be used for the '{2}' in '{3}' in this context because both the context and the definition of '{0}' are nested within interface '{1}', and '{1}' has 'In' or 'Out' type parameters. Consider moving the definition of '{0}' outside of '{1}'. + + + Type '{0}' cannot be used in '{2}' in this context because both the context and the definition of '{0}' are nested within interface '{1}', and '{1}' has 'In' or 'Out' type parameters. Consider moving the definition of '{0}' outside of '{1}'. + + + Type '{0}' cannot be used for the '{3}' of '{4}' in '{2}' in this context because both the context and the definition of '{0}' are nested within interface '{1}', and '{1}' has 'In' or 'Out' type parameters. Consider moving the definition of '{0}' outside o ... + + + Parameter not valid for the specified unmanaged type. + + + Unmanaged type '{0}' not valid for fields. + + + Unmanaged type '{0}' is only valid for fields. + + + Attribute parameter '{0}' must be specified. + + + Attribute parameter '{0}' or '{1}' must be specified. + + + Conflicts with '{0}', which is implicitly declared for '{1}' in {2} '{3}'. + + + <project settings> + + + Attributes applied on a return type of a WriteOnly Property have no effect. + + + Attributes applied on a return type of a WriteOnly Property have no effect + + + Security attribute '{0}' is not valid on this declaration type. Security attributes are only valid on assembly, type and method declarations. + + + Cannot find the interop type that matches the embedded type '{0}'. Are you missing an assembly reference? + + + Reference to class '{0}' is not allowed when its assembly is configured to embed interop types. + + + Embedded interop structure '{0}' can contain only public instance fields. + + + Interop type '{0}' cannot be embedded because it is missing the required '{1}' attribute. + + + Cannot embed interop types from assembly '{0}' because it is missing the '{1}' attribute. + + + Cannot embed interop type '{0}' found in both assembly '{1}' and '{2}'. Consider disabling the embedding of interop types. + + + Cannot embed interop types from assembly '{0}' because it is missing either the '{1}' attribute or the '{2}' attribute. + + + Interface '{0}' has an invalid source interface which is required to embed event '{1}'. + + + Source interface '{0}' is missing method '{1}', which is required to embed event '{2}'. + + + Nested type '{0}' cannot be embedded. + + + Embedding the interop type '{0}' from assembly '{1}' causes a name clash in the current assembly. Consider disabling the embedding of interop types. + + + Embedded interop method '{0}' contains a body. + + + 'Await' may only be used in a query expression within the first collection expression of the initial 'From' clause or within the collection expression of a 'Join' clause. + + + 'Await' requires that the type '{0}' have a suitable GetAwaiter method. + + + 'Await' requires that the return type '{0}' of '{1}.GetAwaiter()' have suitable IsCompleted, OnCompleted and GetResult members, and implement INotifyCompletion or ICriticalNotifyCompletion. + + + '{0}' does not implement '{1}'. + + + Cannot await Nothing. Consider awaiting 'Task.Yield()' instead. + + + Async methods cannot have ByRef parameters. + + + 'Async' and 'Iterator' modifiers cannot be used together. + + + The implicit return variable of an Iterator or Async method cannot be accessed. + + + 'Return' statements in this Async method cannot return a value since the return type of the function is 'Task'. Consider changing the function's return type to 'Task(Of T)'. + + + Since this is an async method, the return expression must be of type '{0}' rather than 'Task(Of {0})'. + + + The 'Async' modifier can only be used on Subs, or on Functions that return Task or Task(Of T). + + + '{0}' does not return a Task and cannot be awaited. Consider changing it to an Async Function. + + + 'Only the 'Async' or 'Iterator' modifier is valid on a lambda. + + + 'Await' can only be used within an Async method. Consider marking this method with the 'Async' modifier and changing its return type to 'Task(Of {0})'. + + + 'Await' can only be used within an Async method. Consider marking this method with the 'Async' modifier and changing its return type to 'Task'. + + + 'Await' can only be used within an Async lambda expression. Consider marking this lambda expression with the 'Async' modifier. + + + 'Await' can only be used when contained within a method or lambda expression marked with the 'Async' modifier. + + + Statement lambdas cannot be converted to expression trees. + + + Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the Await operator to the result of the call. + + + Because this call is not awaited, execution of the current method continues before the call is completed + + + Loop control variable cannot include an 'Await'. + + + Static variables cannot appear inside Async or Iterator methods. + + + '{0}' cannot be used as a parameter type for an Iterator or Async method. + + + Constructor must not have the 'Async' modifier. + + + '{0}' cannot be declared 'Partial' because it has the 'Async' modifier. + + + 'On Error' and 'Resume' cannot appear inside async or iterator methods. + + + Lambdas with the 'Async' or 'Iterator' modifiers cannot be converted to expression trees. + + + Variable of restricted type '{0}' cannot be declared in an Async or Iterator method. + + + 'Await' cannot be used inside a 'Catch' statement, a 'Finally' statement, or a 'SyncLock' statement. + + + This async method lacks 'Await' operators and so will run synchronously. Consider using the 'Await' operator to await non-blocking API calls, or 'Await Task.Run(...)' to do CPU-bound work on a background thread. + + + This async method lacks 'Await' operators and so will run synchronously + + + The Task returned from this Async Function will be dropped, and any exceptions in it ignored. Consider changing it to an Async Sub so its exceptions are propagated. + + + The Task returned from this Async Function will be dropped, and any exceptions in it ignored + + + Async and Iterator methods are not allowed in a [Class|Structure|Interface|Module] that has the 'SecurityCritical' or 'SecuritySafeCritical' attribute. + + + Security attribute '{0}' cannot be applied to an Async or Iterator method. + + + 'System.Runtime.InteropServices.DllImportAttribute' cannot be applied to an Async or Iterator method. + + + 'MethodImplOptions.Synchronized' cannot be applied to an Async method. + + + The 'Main' method cannot be marked 'Async'. + + + Some overloads here take an Async Function rather than an Async Sub. Consider either using an Async Function, or casting this Async Sub explicitly to the desired type. + + + Some overloads here take an Async Function rather than an Async Sub + + + MyGroupCollectionAttribute cannot be applied to itself. + + + Literal expected. + + + Event declarations that target WinMD must specify a delegate type. Add an As clause to the event declaration. + + + Event '{0}' cannot implement a Windows Runtime event '{1}' and a regular .NET event '{2}' + + + Event '{0}' cannot implement event '{1}' on interface '{2}' because the parameters of their 'RemoveHandler' methods do not match. + + + The type of the 'AddHandler' method's parameter must be the same as the type of the event. + + + In a Windows Runtime event, the type of the 'RemoveHandler' method parameter must be 'EventRegistrationToken' + + + '{0}.{1}' from 'implements {2}' is already implemented by the base class '{3}'. Re-implementation of Windows Runtime Interface '{4}' is not allowed + + + '{0}.{1}' is already implemented by the base class '{2}'. Re-implementation of Windows Runtime Interface '{3}' is not allowed + + + Iterator methods cannot have ByRef parameters. + + + Single-line lambdas cannot have the 'Iterator' modifier. Use a multiline lambda instead. + + + Iterator functions must return either IEnumerable(Of T), or IEnumerator(Of T), or the non-generic forms IEnumerable or IEnumerator. + + + To return a value from an Iterator function, use 'Yield' rather than 'Return'. + + + 'Yield' can only be used in a method marked with the 'Iterator' modifier. + + + 'Yield' cannot be used inside a 'Catch' statement or a 'Finally' statement. + + + The AddHandler for Windows Runtime event '{0}' doesn't return a value on all code paths. Are you missing a 'Return' statement? + + + The AddHandler for Windows Runtime event doesn't return a value on all code paths + + + Optional parameter of a method '{0}' does not have the same default value as the corresponding parameter of the partial method '{1}'. + + + Parameter of a method '{0}' differs by ParamArray modifier from the corresponding parameter of the partial method '{1}'. + + + Module name '{0}' stored in '{1}' must match its filename. + + + Invalid module name: {0} + + + Attribute '{0}' from module '{1}' will be ignored in favor of the instance appearing in source. + + + Attribute from module will be ignored in favor of the instance appearing in source + + + Attribute '{0}' given in a source file conflicts with option '{1}'. + + + Referenced assembly '{0}' does not have a strong name. + + + Referenced assembly does not have a strong name + + + Invalid signature public key specified in AssemblySignatureKeyAttribute. + + + Type '{0}' conflicts with public type defined in added module '{1}'. + + + Type '{0}' exported from module '{1}' conflicts with type declared in primary module of this assembly. + + + Type '{0}' exported from module '{1}' conflicts with type '{2}' exported from module '{3}'. + + + Referenced assembly '{0}' has different culture setting of '{1}'. + + + Referenced assembly has different culture setting + + + Agnostic assembly cannot have a processor specific module '{0}'. + + + Assembly and module '{0}' cannot target different processors. + + + Referenced assembly '{0}' targets a different processor. + + + Referenced assembly targets a different processor + + + Cryptographic failure while creating hashes. + + + Conflicting options specified: Win32 resource file; Win32 manifest. + + + Forwarded type '{0}' conflicts with type declared in primary module of this assembly. + + + Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' forwarded to assembly '{3}'. + + + Name '{0}' exceeds the maximum length allowed in metadata. + + + Reference to '{0}' netmodule missing. + + + Module '{0}' is already defined in this assembly. Each module must have a unique filename. + + + Type '{0}' forwarded to assembly '{1}' conflicts with type '{2}' exported from module '{3}'. + + + Adding assembly reference '{0}' + + + Adding embedded assembly reference '{0}' + + + Adding module reference '{0}' + + + Type '{0}' does not inherit the generic type parameters of its container. + + + Failure writing debug information: {0} + + + The parameter has multiple distinct default values. + + + The field has multiple distinct constant values. + + + Cannot continue since the edit includes a reference to an embedded type: '{0}'. + + + Member '{0}' added during the current debug session can only be accessed from within its declaring assembly '{1}'. + + + '{0}' is an unsupported .NET module. + + + '{0}' is an unsupported event. + + + Properties can not have type arguments + + + IdentifierSyntax not within syntax tree + + + AnonymousObjectCreationExpressionSyntax not within syntax tree + + + FieldInitializerSyntax not within syntax tree + + + The system cannot find the path specified + + + There are no pointer types in VB. + + + There are no function pointer types in VB. + + + There is no dynamic type in VB. + + + There are no native integer types in VB. + + + variableSyntax not within syntax tree + + + AggregateSyntax not within syntax tree + + + FunctionSyntax not within syntax tree + + + Position is not within syntax tree + + + RangeVariableSyntax not within syntax tree + + + DeclarationSyntax not within syntax tree + + + StatementOrExpression is not an ExecutableStatementSyntax or an ExpressionSyntax + + + DeclarationSyntax not within tree + + + TypeParameter not within tree + + + not within tree + + + Location must be provided in order to provide minimal type qualification. + + + SemanticModel must be provided in order to provide minimal type qualification. + + + the number of type parameters and arguments should be the same + + + Cannot link resource files when building a module + + + Not a VB symbol. + + + Elements cannot be null. + + + Unused import clause. + + + Unused import statement. + + + Expected a {0} SemanticModel. + + + Position must be within span of the syntax tree. + + + Syntax node to be speculated cannot belong to a syntax tree from the current compilation. + + + Chaining speculative semantic model is not supported. You should create a speculative model from the non-speculative ParentModel. + + + Microsoft (R) Visual Basic Compiler + + + {0} version {1} + + + Copyright (C) Microsoft Corporation. All rights reserved. + + + Supported language versions: + + + Visual Basic Compiler Options + + - OUTPUT FILE - + -out:<file> Specifies the output file name. + -target:exe Create a console application (default). + ( ... + + + Local name '{0}' is too long for PDB. Consider shortening or compiling without /debug. + + + Local name is too long for PDB + + + Import string '{0}' is too long for PDB. Consider shortening or compiling without /debug. + + + Import string is too long for PDB + + + XML comment has a tag with a 'cref' attribute '{0}' that bound to a type parameter. Use the <typeparamref> tag instead. + + + XML comment has a tag with a 'cref' attribute that bound to a type parameter + + + Linked netmodule metadata must provide a full PE image: '{0}'. + + + An instance of analyzer {0} cannot be created from {1} : {2}. + + + Instance of analyzer cannot be created + + + The assembly {0} does not contain any analyzers. + + + Assembly does not contain any analyzers + + + Unable to load analyzer assembly {0} : {1}. + + + Unable to load analyzer assembly + + + Skipping some types in analyzer assembly {0} due to a ReflectionTypeLoadException : {1}. + + + Skip loading types in analyzer assembly that fail due to a ReflectionTypeLoadException + + + Error reading ruleset file {0} - {1} + + + {0} is not supported in current project type. + + + The RequiredAttribute attribute is not permitted on Visual Basic types. + + + Cannot emit debug information for a source text without encoding. + + + '{0}' is not a valid format specifier + + + Preprocessor constant '{0}' of type '{1}' is not supported, only primitive types are allowed. + + + 'Warning' expected. + + + '{0}' cannot be made nullable. + + + Leading '?' can only appear inside a 'With' statement, but not inside an object member initializer. + + + A null propagating operator cannot be converted into an expression tree. + + + An expression is too long or complex to compile + + + This expression does not have a name. + + + This sub-expression cannot be used inside NameOf argument. + + + Method type arguments unexpected. + + + SearchCriteria is expected. + + + Assembly culture strings may not contain embedded NUL characters. + + + There is an error in a referenced assembly '{0}'. + + + Format specifier may not contain trailing whitespace. + + + Alignment value is outside of the supported range. + + + There were one or more errors emitting a call to {0}.{1}. Method or its return type may be missing or malformed. + + + Unused import clause + + + Unused import statement + + + Length of String constant resulting from concatenation exceeds System.Int32.MaxValue. Try splitting the string into multiple constants. + + + Visual Basic {0} does not support {1}. + + + Error reading debug information for '{0}' + + + array literal expressions + + + async methods or lambdas + + + auto-implemented properties + + + readonly auto-implemented properties + + + variance + + + collection initializers + + + comments after line continuation + + + declaring a Global namespace + + + iterators + + + implicit line continuation + + + multi-line lambda expressions + + + 'Sub' lambda expressions + + + null conditional operations + + + 'nameof' expressions + + + region directives within method bodies or regions crossing boundaries of declaration blocks + + + multiline string literals + + + CObj in attribute arguments + + + line continuation comments + + + TypeOf IsNot expression + + + year-first date literals + + + warning directives + + + partial modules + + + partial interfaces + + + implementing read-only or write-only property with read-write property + + + digit separators + + + binary literals + + + tuples + + + Private Protected + + + Debug entry point must be a definition of a method declared in the current compilation. + + + The pathmap option was incorrectly formatted. + + + Syntax tree should be created from a submission. + + + Combined length of user strings used by the program exceeds allowed limit. Try to decrease use of string or XML literals. + + + An error occurred while writing the output file: {0} + + + Option '{0}' must be an absolute path. + + + /sourcelink switch is only supported when emitting PDB. + + + Tuple element names must be unique. + + + The tuple element name '{0}' is ignored because a different name or no name is specified by the target type '{1}'. + + + The tuple element name is ignored because a different name or no name is specified by the assignment target. + + + Tuple element name '{0}' is only allowed at position {1}. + + + Tuple element name '{0}' is disallowed at any position. + + + Tuple must contain at least two elements. + + + Cannot define a class or member that utilizes tuples because the compiler required type '{0}' cannot be found. Are you missing a reference? + + + Cannot reference 'System.Runtime.CompilerServices.TupleElementNamesAttribute' explicitly. Use the tuple syntax to define tuple names. + + + An expression tree may not contain a call to a method or property that returns by reference. + + + /embed switch is only supported when emitting a PDB. + + + Invalid instrumentation kind: {0} + + + Invalid hash algorithm name: '{0}' + + + Error writing to XML documentation file: {0} + + + Invalid assembly name: {0} + + + Module '{0}' in assembly '{1}' is forwarding the type '{2}' to multiple assemblies: '{3}' and '{4}'. + + + Merge conflict marker encountered + + + Do not use refout when using refonly. + + + Cannot compile net modules when using /refout or /refonly. + + + Named argument '{0}' is used out-of-position but is followed by an unnamed argument + + + Provided documentation mode is unsupported or invalid: '{0}'. + + + Provided language version is unsupported or invalid: '{0}'. + + + Provided source code kind is unsupported or invalid: '{0}' + + + Tuple element name '{0}' is inferred. Please use language version {1} or greater to access an element by its inferred name. + + + '{0}' is for evaluation purposes only and is subject to change or removal in future updates. + + + Type is for evaluation purposes only and is subject to change or removal in future updates. + + + Unable to read debug information of method '{0}' (token 0x{1}) from assembly '{2}' + + + {0} is not a valid Visual Basic conversion expression + + + {0} is not a valid Visual Basic argument + + + leading digit separator + + + Predefined type '{0}' is declared in multiple referenced assemblies: '{1}' and '{2}' + + + {0} is not a valid Visual Basic compound assignment operation + + + interpolated strings + + + unconstrained type parameters in binary conditional expressions + + + Multiple analyzer config files cannot be in the same directory ('{0}'). + + + Type '{0}' cannot be embedded because it has a non-abstract member. Consider setting the 'Embed Interop Types' property to false. + + + Type '{0}' cannot be embedded because it has a re-abstraction of a member from base interface. Consider setting the 'Embed Interop Types' property to false. + + + Command-line syntax error: '{0}' is not a valid value for the '{1}' option. The value must be of the form '{2}'. + + + Target runtime doesn't support default interface implementation. + + + Target runtime doesn't support 'Protected', 'Protected Friend', or 'Private Protected' accessibility for a member of an interface. + + + '{0}' is not supported in VB. + + + Attribute is not supported in VB + + + Generator '{0}' failed to generate source. It will not contribute to the output and compilation errors may occur as a result. Exception was of type '{1}' with message '{2}' + + + Generator threw the following exception: + '{0}'. + + + Generator failed to generate source. + + + Generator '{0}' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type '{1}' with message '{2}' + + + Generator threw the following exception: + '{0}'. + + + Generator failed to initialize. + + + The assembly '{0}' containing type '{1}' references .NET Framework, which is not supported. + + + The loaded assembly references .NET Framework, which is not supported. + + + assigning to or passing 'ByRef' properties with init-only setters + + + Init-only property '{0}' can only be assigned by an object member initializer, or on 'Me', 'MyClass` or 'MyBase' in an instance constructor. + + + '{0}' cannot override init-only '{1}'. + + + Init-only '{0}' cannot be implemented. + + + 'UnmanagedCallersOnly' attribute is not supported. + + + caller argument expression + + + The CallerArgumentExpressionAttribute applied to parameter '{0}' will have no effect because it's self-referential. + + + The CallerArgumentExpressionAttribute applied to parameter will have no effect because it's self-referential. + + + The CallerArgumentExpressionAttribute applied to parameter '{0}' will have no effect. It is applied with an invalid parameter name. + + + The CallerArgumentExpressionAttribute applied to parameter will have no effect. It is applied with an invalid parameter name. + + + A shared abstract interface member cannot be accessed. + + + {0} '{1}' cannot implement interface '{3}' because it contains shared abstract '{2}'. + + + + DiagnosticAnalyzer for VB compiler's syntax/semantic/compilation diagnostics. + + + + + An array of child bound nodes. + + Note that any of the child nodes may be null. + + + + Returns Nothing if parent is not known. + + + + + Creates the Lazy IOperation from a delegate creation operand or a bound conversion operand, handling when the conversion + is actually a delegate creation. + + + + + Gets the operand from a BoundConversion, compensating for if the conversion is a user-defined conversion + + + + + Addition Visual Basic syntax extension methods. + + + + + Determines if is of a specified kind. + + The source trivia. + The syntax kind to test for. + if the trivia is of the specified kind; otherwise, . + + + + Determines if is of a specified kind. + + The source token. + The syntax kind to test for. + if the token is of the specified kind; otherwise, . + + + + Determines if is of a specified kind. + + The Source node. + The syntax kind to test for. + if the node is of the specified kind; otherwise, . + + + + Determines if is of a specified kind. + + The source node or token. + The syntax kind to test for. + if the node or token is of the specified kind; otherwise, . + + + + Returns the index of the first node of a specified kind in the node list. + + Node list. + The to find. + Returns non-negative index if the list contains a node which matches , -1 otherwise. + + + + Tests whether a list contains node of a particular kind. + + The to test for. + Returns true if the list contains a token which matches + + + + Returns the index of the first node of a specified kind in the node list. + + Node list. + The to find. + Returns non-negative index if the list contains a node which matches , -1 otherwise. + + + + Tests whether a list contains node of a particular kind. + + The to test for. + Returns true if the list contains a token which matches + + + + Returns the index of the first trivia of a specified kind in the trivia list. + + Trivia list. + The to find. + Returns non-negative index if the list contains a trivia which matches , -1 otherwise. + + + + Tests whether a list contains trivia of a particular kind. + + The to test for. + Returns true if the list contains a trivia which matches + + + + Returns the index of the first token of a specified kind in the token list. + + Token list. + The to find. + Returns non-negative index if the list contains a token which matches , -1 otherwise. + + + + Tests whether a list contains token of a particular kind. + + The to test for. + Returns true if the list contains a token which matches + +
+
diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/cs/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/cs/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..6c77225 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/cs/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/de/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/de/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..7ed906c Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/de/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/es/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/es/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..a552c07 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/es/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/fr/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/fr/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..d007906 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/fr/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/it/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/it/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..ef86ade Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/it/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/ja/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/ja/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..7fddebc Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/ja/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/ko/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/ko/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..9bdcb1e Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/ko/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/pl/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/pl/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..d041404 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/pl/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..c46d2e1 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/ru/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/ru/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..e077423 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/ru/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/tr/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/tr/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..6205176 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/tr/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..7255284 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.resources.dll new file mode 100644 index 0000000..cf17542 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.4.1.0/lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/.signature.p7s b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/.signature.p7s new file mode 100644 index 0000000..ab63481 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/.signature.p7s differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/Icon.png b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/Icon.png new file mode 100644 index 0000000..a0f1fdb Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/Icon.png differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0.nupkg b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0.nupkg new file mode 100644 index 0000000..2ecda14 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0.nupkg differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/ThirdPartyNotices.rtf b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/ThirdPartyNotices.rtf new file mode 100644 index 0000000..1e4323d Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/ThirdPartyNotices.rtf differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll new file mode 100644 index 0000000..b1e667a Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.Workspaces.pdb b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.Workspaces.pdb new file mode 100644 index 0000000..41be1fd Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.Workspaces.pdb differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.Workspaces.xml b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.Workspaces.xml new file mode 100644 index 0000000..3af197d --- /dev/null +++ b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.VisualBasic.Workspaces.xml @@ -0,0 +1,752 @@ + + + + +Microsoft.CodeAnalysis.VisualBasic.Workspaces + + + + + + Return the classification type associated with this token. + + The token to be classified. + The classification type for the token + + + + + Determine if the kind represents a control keyword + + + + + Determine if the kind represents a control statement + + + + + Try use the existing syntax node and generate a new syntax node for the given . + Note: the returned syntax node might be modified, which means its parent information might be missing. + + + + + A mapping containing the simple names And arity of all namespace members, mapped to the import that + they're brought in by. + + + + + A mapping containing the simple names of all members, mapped to the import that they're brought in by. + Members are imported in through modules in vb. This doesn't keep track of arity because methods can be + called with type arguments. + + + + + A mapping containing the simple names of all extension methods, mapped to the import that they're + brought in by. This doesn't keep track of arity because methods can be called with type arguments. + + + + + Track if we're in an anonymous method or not. If so, because of how the language binds lambdas and + overloads, we'll assume any method access we see inside (instance or otherwise) could end up conflicting + with an extension method we might pull in. + + + + + Given an expression node, tries to generate an appropriate name that can be used for + that expression. + + + + + Returns a map which maps from a DirectiveTriviaSyntax to it's corresponding start/end directive. + Directives like #ElseIf which exist in the middle of a start/end pair are not included. + + + + + Maps a #If/#ElseIf/#Else/#EndIf directive to its list of matching #If/#ElseIf/#Else/#End directives. + + + + + Given a starting or ending directive, return the matching directive, if it exists. For directives that live + the "middle" of a start/end pair, such as #ElseIf or #Else, this method will throw. + + + + + Given a conditional directive (#If, #ElseIf, #Else, or #End If), returns a IEnumerable of all directives in + the set. + + + + + Decompose a name or member access expression into its component parts. + + The name or member access expression. + The qualifier (or left-hand-side) of the name expression. This may be null if there is no qualifier. + The name of the expression. + The number of generic type parameters. + + + + Breaks up the list of provided nodes, based on how they are + interspersed with pp directives, into groups. Within these groups + nodes can be moved around safely, without breaking any pp + constructs. + + + + + Returns true if the passed in node contains an interleaved pp + directive. + + i.e. The following returns false: + + void Goo() { + #if true + #endif + } + + #if true + void Goo() { + } + #endif + + but these return true: + + #if true + void Goo() { + #endif + } + + void Goo() { + #if true + } + #endif + + #if true + void Goo() { + #else + } + #endif + + i.e. the method returns true if it contains a PP directive that + belongs to a grouping constructs (like #if/#endif or + #region/#endregion), but the grouping construct isn't entirely c + contained within the span of the node. + + + + + Returns true if this is a block that can contain multiple executable statements. i.e. + this node is the VB equivalent of a BlockSyntax in C#. + + + + + Returns child node or token that contains given position. + + + This is a copy of that also returns the index of the child node. + + + + + + + + + + If "node" is the begin statement of a declaration block, return that block, otherwise + return node. + + + + + Returns true if is a given token is a child token of a certain type of parent node. + + The type of the parent node. + The token that we are testing. + A function that, when given the parent node, returns the child token we are interested in. + + + + Returns true if is a given token is a separator token in a given parent list. + + The type of the parent node containing the separated list. + The token that we are testing. + A function that, when given the parent node, returns the separated list. + + + + Determines whether the given SyntaxToken is the first token on a line + + + + + check whether given token is the last token of a statement that ends with end of line trivia or an elastic trivia + + + + + check whether given token is the last token of a statement by walking up the spine + + + + + Finds the token being touched by this position. Unlike the normal FindTrivia helper, this helper will prefer + trivia to the left rather than the right if the position is on the border. + + The syntaxTree to search. + The position to find trivia. + + + + A visitor that determines if the targetToken passed in the constructor can be considered + the end of the visited statement. Tokens in the token stream of the file after + targetToken are ignored. This means that in some cases, say "Throw" vs. "Throw x" there + is more than one keyword that could terminate the statement. + + + + + We need to check for EOL trivia not preceded by LineContinuation trivia. + + This is slightly complicated since we need to get TrailingTrivia from missing tokens + and then get LeadingTrivia for the next non-missing token. + + Note that this is even more complicated in the case that we're in structured trivia + because we might be part of the leading trivia to the next non-missing token. + + + + + The specified position is where we can declare some .NET type, such as classes, structures, etc. + + + + + The specified position is where a keyword can go like "Sub", "Function", etc. in a classes, structures, and modules + + + + + The specified position is where a keyword can go like "Sub", "Function" in an interface + + + + + The specified position is where we can declare some .NET type, such as classes, structures, etc. + + + + + The specified position is where I could start a statement in a place where exactly one + statement could exist. + + + + + The specified position is where I could start a statement in a place where one or more + statements could exist. + + + + + The specified position is immediately following a statement of one of the given kinds. + + + + + Given a syntax node, this returns the token that is the "end" token that ends this + expression. + + The expression to get the last token of. + The last token, or SyntaxKind.None if the last token is missing. + + + + Helper structure to store some context about a position for keyword completion + + + + + True if position is after a colon, or an + EOL that was not preceded by an explicit line continuation + + + + + True if position is definitely the beginning of a new statement (after a colon + or two line breaks). + + Dim q = From a In args + $1 + $2 + + $1 may continue the previous statement, but $2 definitely starts a + new statement since there are two line breaks before it. + + + + + The specified position is immediately following a statement of one of the given kinds. + + + + + Determines whether the given IMethodSymbol can be used as an aggregate function + in a Group..By..Into or an Aggregate..Into clause. + + + + + Determine if the given array contains the given kind. + + Array to search + Sought value + True if contains the value . + PERF: Not using Array.IndexOf here because it results in a call to IndexOf on the default EqualityComparer for SyntaxKind. The default comparer for SyntaxKind is + the ObjectEqualityComparer which results in boxing allocations. + + + + Locate the given in an array starting at the given index. + + Array to search + Sought value + Starting index + The index of the first occurrence of in . + PERF: Not using Array.IndexOf here because it results in a call to IndexOf on the default EqualityComparer for SyntaxKind. The default comparer for SyntaxKind is + the ObjectEqualityComparer which results in boxing allocations. + + + + Builds up the suffix to show for something with parameters in navigate-to. + While it would be nice to just use the compiler SymbolDisplay API for this, + it would be too expensive as it requires going back to Symbols (which requires + creating compilations, etc.) in a perf sensitive area. + + So, instead, we just build a reasonable suffix using the pure syntax that a + user provided. That means that if they wrote "Method(System.Int32 i)" we'll + show that as "Method(System.Int32)" Not "Method(Integer)". Given that this Is + actually what the user wrote, And it saves us from ever having to go back to + symbols/compilations, this Is well worth it, even if it does mean we have to + create our own 'symbol display' logic here. + + + + + this holds onto changes made by formatting engine. + + currently it only has an ability to apply those changes to buffer. but it could be expanded to + support other cases as well such as tree or etc. + + + + + trivia factory. + + it will cache some commonly used trivia to reduce memory footprint and heap allocation + + + + + represents a general trivia between two tokens. slightly more expensive than others since it + needs to calculate stuff unlike other cases + + + + + represents a general trivia between two tokens. slightly more expensive than others since it + needs to calculate stuff unlike other cases + + + + + In MemberAccessExpression Contexts, filter out event symbols (except for NameOf context), except inside AddRemoveHandler Statements + Also, filter out any implicitly declared members generated by event declaration or property declaration + + + + + Flag indicating if we should perform a rename inside string literals. + + + + + Flag indicating if we should perform a rename inside comment trivia. + + + + + A map from spans of tokens needing rename within strings or comments to an optional + set of specific sub-spans within the token span that + have matches and should be renamed. + If this sorted set is Nothing, it indicates that sub-spans to rename within the token span + are not available, and a regex match should be performed to rename + all matches within the span. + + + + + Gets the top most enclosing statement as target to call MakeExplicit on. + It's either the enclosing statement, or if this statement is inside of a lambda expression, the enclosing + statement of this lambda. + + The token to get the complexification target for. + + + + Gets the semantic model for the given node. + If the node belongs to the syntax tree of the original semantic model, then returns originalSemanticModel. + Otherwise, returns a speculative model. + The assumption for the later case is that span start position of the given node in it's syntax tree is same as + the span start of the original node in the original syntax tree. + + + + + + + Complexify makes inferred names explicit for tuple elements and anonymous type members. This + class considers which ones of those can be simplified (after the refactoring was done). + If the inferred name of the member matches, the explicit name (from Complexifiy) can be removed. + + + + + Returns the predefined keyword kind for a given special type. + + The specialtype of this type. + The keyword kind for a given special type, or SyntaxKind.None if the type name is not a predefined type. + + + + Note: This helper exists solely to work around Bug 1012713. Once it is fixed, this helper must be + deleted in favor of . + Context: Bug 1012713 makes it so that the compiler doesn't support PredefinedType.Member inside crefs + (i.e. System.Int32.MaxValue is supported but Integer.MaxValue isn't). Until this bug is fixed, we don't + support simplifying types names Like System.Int32.MaxValue to Integer.MaxValue. + + + + + Checks if the SyntaxNode is a name of a namespace declaration. To be a namespace name, the syntax + must be parented by an namespace declaration and the node itself must be equal to the declaration's Name + property. + + + + + Computes a list of nodes and tokens that need to be reduced in the given syntax root. + + + + + Helper class to analyze the semantic effects of a speculated syntax node replacement on the parenting nodes. + Given an expression node from a syntax tree and a new expression from a different syntax tree, + it replaces the expression with the new expression to create a speculated syntax tree. + It uses the original tree's semantic model to create a speculative semantic model and verifies that + the syntax replacement doesn't break the semantics of any parenting nodes of the original expression. + + + + + Creates a semantic analyzer for speculative syntax replacement. + + Original expression to be replaced. + New expression to replace the original expression. + Semantic model of node's syntax tree. + Cancellation token. + + True if semantic analysis should be skipped for the replaced node and performed starting from parent of the original and replaced nodes. + This could be the case when custom verifications are required to be done by the caller or + semantics of the replaced expression are different from the original expression. + + + True if semantic analysis should fail when any of the invocation expression ancestors of in original code has overload resolution failures. + + + + + Determines whether performing the syntax replacement in one of the sibling nodes of the given lambda expressions will change the lambda binding semantics. + This is done by first determining the lambda parameters whose type differs in the replaced lambda node. + For each of these parameters, we find the descendant identifier name nodes in the lambda body and check if semantics of any of the parenting nodes of these + identifier nodes have changed in the replaced lambda. + + + + + A helper class that is constructed giving a set of modifiers. It takes these modifiers, and + breaks them down into separate categories, as well as determines what type of declaration is + being forced if certain modifiers are present. + + + + + Represents a syntax reference that was passed a null + reference to a node. In this case, we just hold onto the + weak tree reference and throw if any invalid properties + are accessed. + + + + + Represents a syntax reference that doesn't actually hold onto the + referenced node. Instead, enough data is held onto so that the node + can be recovered and returned if necessary. + + + + + Represents a syntax reference that doesn't actually hold onto the referenced node. + Instead, enough data is held onto so that the node can be recovered and returned if + necessary. + + + + + Represents a syntax tree that only has a weak reference to its + underlying data. This way it can be passed around without forcing + the underlying full tree to stay alive. Think of it more as a + key that can be used to identify a tree rather than the tree itself. + + + + + Get the declaring syntax node for a Symbol. Unlike the DeclaringSyntaxReferences property, + this function always returns a block syntax, if there is one. + + + + Namespace can not be added in this destination. + + + Only attributes, expressions or statements can be made explicit + + + <event> + + + <handler> + + + The expression to be evaluated and converted. + + + The name of the data type to which the value of expression will be converted. + + + <expression> + + + <typeName> + + + Associates an event with an event handler, delegate or lambda expression at run time. + + + The event to associate an event handler, delegate or lambda expression with. + + + The event handler to associate with the event. This may take the form of { AddressOf <eventHandler> | <delegate> | <lambdaExpression> }. + + + If <expression> evaluates to a reference or Nullable value that is not Nothing, the function returns that value. Otherwise, it calculates and returns <expressionIfNothing>. + + + Returned if it evaluates to a reference or nullable type that is not Nothing. + + + Evaluated and returned if <expression> evaluates to Nothing. + + + <expressionIfNothing> + + + Returns the result of explicitly converting an expression to a specified data type. + + + Introduces a type conversion operation similar to CType. The difference is that CType succeeds as long as there is a valid conversion, whereas DirectCast requires that one type inherit from or implement the other type. + + + The type name to return a System.Type object for. + + + Returns a System.Type object for the specified type name. + + + The XML namespace prefix to return a System.Xml.Linq.XNamespace object for. If this is omitted, the object for the default XML namespace is returned. + + + <xmlNamespacePrefix> + + + Returns the System.Xml.Linq.XNamespace object corresponding to the specified XML namespace prefix. + + + Replaces a specified number of characters in a String variable with characters from another string. + + + The name of the string variable to modify. + + + The one-based character position in the string where the replacement of text begins. + + + The number of characters to replace. If omitted, the length of <stringExpression> is used. + + + <stringName> + + + <startIndex> + + + <length> + + + <stringExpression> + + + Converts an expression to the {0} data type. + + + Removes the association between an event and an event handler or delegate at run time. + + + The event to disassociate an event handler or delegate from. + + + The event handler to disassociate from the event. This may take the form of { AddressOf <eventHandler> | <delegate> }. + + + If <condition> returns True, the function calculates and returns <expressionIfTrue>. Otherwise, it returns <expressionIfFalse>. + + + The expression to evaluate. + + + Evaluated and returned if <condition> evaluates to True. + + + Evaluated and returned if <condition> evaluates to False. + + + <condition> + + + <expressionIfTrue> + + + <expressionIfFalse> + + + Introduces a type conversion operation that does not throw an exception. If an attempted conversion fails, TryCast returns Nothing, which your program can test for. + + + Node does not descend from root. + + + Node not in parent's child list + + + Trivia is not associated with token + + + <typeOrMember> + + + The type of member to return the name of. + + + Produces a string for the name of the specified type or member. + + + <result> + + + R&emove and Sort Imports + + + &Sort Imports + + + + Rewrite "EndIf" to "End If" for an EndIfStatementSyntax/EndIfDirectiveSyntax node. + + Syntax node for the EndIfStatementSyntax or EndIfDirectiveSyntax to be rewritten. + "End" keyword token for . + "If" keyword token for . + Rewritten EndIfStatementSyntax/EndIfDirectiveSyntax node. + + This method checks for the following: + (a) Both the End keyword and If keyword, and respectively, are Missing tokens AND + (b) Descendant Trivia under the given token or token has an "EndIf" keyword token. + + If the above conditions are met, it does the following node rewrites: + (a) Replace the missing and tokens with new "End" and "If" keywords tokens respectively. + (b) Remove the first "EndIf" keyword token from the descendant trivia and adjust the leading and trailing trivia appropriately. + + + + + this will put operator token and modifier tokens in right order + + + + + check whether given operator statement is valid or not + + + + + normalize operator + + + + + reorder modifiers in the list + + + + + normalize modifier list of the node and record changes if there is any change + + + + + normalize modifier list of the node and record changes if there is any change + + + + + remove "Dim" keyword if present + + + + + remove a modifier from the given node + + + + + check whether given modifiers are in right order (in sync with ModifierKindsInOrder list) + + + + Remove this value when another is added. + + + Remove this value when another is added. + + + diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..37ca668 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..6bd748e Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..45ce75f Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..664ec59 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..ed573c2 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..5c33728 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..becbd6a Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..26948e4 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..da39e61 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..eeae042 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..0c89051 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..3ee79f6 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..3b7116f Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll new file mode 100644 index 0000000..365922e Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.Workspaces.pdb b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.Workspaces.pdb new file mode 100644 index 0000000..7fcc07d Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.Workspaces.pdb differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.Workspaces.xml b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.Workspaces.xml new file mode 100644 index 0000000..3af197d --- /dev/null +++ b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.VisualBasic.Workspaces.xml @@ -0,0 +1,752 @@ + + + + +Microsoft.CodeAnalysis.VisualBasic.Workspaces + + + + + + Return the classification type associated with this token. + + The token to be classified. + The classification type for the token + + + + + Determine if the kind represents a control keyword + + + + + Determine if the kind represents a control statement + + + + + Try use the existing syntax node and generate a new syntax node for the given . + Note: the returned syntax node might be modified, which means its parent information might be missing. + + + + + A mapping containing the simple names And arity of all namespace members, mapped to the import that + they're brought in by. + + + + + A mapping containing the simple names of all members, mapped to the import that they're brought in by. + Members are imported in through modules in vb. This doesn't keep track of arity because methods can be + called with type arguments. + + + + + A mapping containing the simple names of all extension methods, mapped to the import that they're + brought in by. This doesn't keep track of arity because methods can be called with type arguments. + + + + + Track if we're in an anonymous method or not. If so, because of how the language binds lambdas and + overloads, we'll assume any method access we see inside (instance or otherwise) could end up conflicting + with an extension method we might pull in. + + + + + Given an expression node, tries to generate an appropriate name that can be used for + that expression. + + + + + Returns a map which maps from a DirectiveTriviaSyntax to it's corresponding start/end directive. + Directives like #ElseIf which exist in the middle of a start/end pair are not included. + + + + + Maps a #If/#ElseIf/#Else/#EndIf directive to its list of matching #If/#ElseIf/#Else/#End directives. + + + + + Given a starting or ending directive, return the matching directive, if it exists. For directives that live + the "middle" of a start/end pair, such as #ElseIf or #Else, this method will throw. + + + + + Given a conditional directive (#If, #ElseIf, #Else, or #End If), returns a IEnumerable of all directives in + the set. + + + + + Decompose a name or member access expression into its component parts. + + The name or member access expression. + The qualifier (or left-hand-side) of the name expression. This may be null if there is no qualifier. + The name of the expression. + The number of generic type parameters. + + + + Breaks up the list of provided nodes, based on how they are + interspersed with pp directives, into groups. Within these groups + nodes can be moved around safely, without breaking any pp + constructs. + + + + + Returns true if the passed in node contains an interleaved pp + directive. + + i.e. The following returns false: + + void Goo() { + #if true + #endif + } + + #if true + void Goo() { + } + #endif + + but these return true: + + #if true + void Goo() { + #endif + } + + void Goo() { + #if true + } + #endif + + #if true + void Goo() { + #else + } + #endif + + i.e. the method returns true if it contains a PP directive that + belongs to a grouping constructs (like #if/#endif or + #region/#endregion), but the grouping construct isn't entirely c + contained within the span of the node. + + + + + Returns true if this is a block that can contain multiple executable statements. i.e. + this node is the VB equivalent of a BlockSyntax in C#. + + + + + Returns child node or token that contains given position. + + + This is a copy of that also returns the index of the child node. + + + + + + + + + + If "node" is the begin statement of a declaration block, return that block, otherwise + return node. + + + + + Returns true if is a given token is a child token of a certain type of parent node. + + The type of the parent node. + The token that we are testing. + A function that, when given the parent node, returns the child token we are interested in. + + + + Returns true if is a given token is a separator token in a given parent list. + + The type of the parent node containing the separated list. + The token that we are testing. + A function that, when given the parent node, returns the separated list. + + + + Determines whether the given SyntaxToken is the first token on a line + + + + + check whether given token is the last token of a statement that ends with end of line trivia or an elastic trivia + + + + + check whether given token is the last token of a statement by walking up the spine + + + + + Finds the token being touched by this position. Unlike the normal FindTrivia helper, this helper will prefer + trivia to the left rather than the right if the position is on the border. + + The syntaxTree to search. + The position to find trivia. + + + + A visitor that determines if the targetToken passed in the constructor can be considered + the end of the visited statement. Tokens in the token stream of the file after + targetToken are ignored. This means that in some cases, say "Throw" vs. "Throw x" there + is more than one keyword that could terminate the statement. + + + + + We need to check for EOL trivia not preceded by LineContinuation trivia. + + This is slightly complicated since we need to get TrailingTrivia from missing tokens + and then get LeadingTrivia for the next non-missing token. + + Note that this is even more complicated in the case that we're in structured trivia + because we might be part of the leading trivia to the next non-missing token. + + + + + The specified position is where we can declare some .NET type, such as classes, structures, etc. + + + + + The specified position is where a keyword can go like "Sub", "Function", etc. in a classes, structures, and modules + + + + + The specified position is where a keyword can go like "Sub", "Function" in an interface + + + + + The specified position is where we can declare some .NET type, such as classes, structures, etc. + + + + + The specified position is where I could start a statement in a place where exactly one + statement could exist. + + + + + The specified position is where I could start a statement in a place where one or more + statements could exist. + + + + + The specified position is immediately following a statement of one of the given kinds. + + + + + Given a syntax node, this returns the token that is the "end" token that ends this + expression. + + The expression to get the last token of. + The last token, or SyntaxKind.None if the last token is missing. + + + + Helper structure to store some context about a position for keyword completion + + + + + True if position is after a colon, or an + EOL that was not preceded by an explicit line continuation + + + + + True if position is definitely the beginning of a new statement (after a colon + or two line breaks). + + Dim q = From a In args + $1 + $2 + + $1 may continue the previous statement, but $2 definitely starts a + new statement since there are two line breaks before it. + + + + + The specified position is immediately following a statement of one of the given kinds. + + + + + Determines whether the given IMethodSymbol can be used as an aggregate function + in a Group..By..Into or an Aggregate..Into clause. + + + + + Determine if the given array contains the given kind. + + Array to search + Sought value + True if contains the value . + PERF: Not using Array.IndexOf here because it results in a call to IndexOf on the default EqualityComparer for SyntaxKind. The default comparer for SyntaxKind is + the ObjectEqualityComparer which results in boxing allocations. + + + + Locate the given in an array starting at the given index. + + Array to search + Sought value + Starting index + The index of the first occurrence of in . + PERF: Not using Array.IndexOf here because it results in a call to IndexOf on the default EqualityComparer for SyntaxKind. The default comparer for SyntaxKind is + the ObjectEqualityComparer which results in boxing allocations. + + + + Builds up the suffix to show for something with parameters in navigate-to. + While it would be nice to just use the compiler SymbolDisplay API for this, + it would be too expensive as it requires going back to Symbols (which requires + creating compilations, etc.) in a perf sensitive area. + + So, instead, we just build a reasonable suffix using the pure syntax that a + user provided. That means that if they wrote "Method(System.Int32 i)" we'll + show that as "Method(System.Int32)" Not "Method(Integer)". Given that this Is + actually what the user wrote, And it saves us from ever having to go back to + symbols/compilations, this Is well worth it, even if it does mean we have to + create our own 'symbol display' logic here. + + + + + this holds onto changes made by formatting engine. + + currently it only has an ability to apply those changes to buffer. but it could be expanded to + support other cases as well such as tree or etc. + + + + + trivia factory. + + it will cache some commonly used trivia to reduce memory footprint and heap allocation + + + + + represents a general trivia between two tokens. slightly more expensive than others since it + needs to calculate stuff unlike other cases + + + + + represents a general trivia between two tokens. slightly more expensive than others since it + needs to calculate stuff unlike other cases + + + + + In MemberAccessExpression Contexts, filter out event symbols (except for NameOf context), except inside AddRemoveHandler Statements + Also, filter out any implicitly declared members generated by event declaration or property declaration + + + + + Flag indicating if we should perform a rename inside string literals. + + + + + Flag indicating if we should perform a rename inside comment trivia. + + + + + A map from spans of tokens needing rename within strings or comments to an optional + set of specific sub-spans within the token span that + have matches and should be renamed. + If this sorted set is Nothing, it indicates that sub-spans to rename within the token span + are not available, and a regex match should be performed to rename + all matches within the span. + + + + + Gets the top most enclosing statement as target to call MakeExplicit on. + It's either the enclosing statement, or if this statement is inside of a lambda expression, the enclosing + statement of this lambda. + + The token to get the complexification target for. + + + + Gets the semantic model for the given node. + If the node belongs to the syntax tree of the original semantic model, then returns originalSemanticModel. + Otherwise, returns a speculative model. + The assumption for the later case is that span start position of the given node in it's syntax tree is same as + the span start of the original node in the original syntax tree. + + + + + + + Complexify makes inferred names explicit for tuple elements and anonymous type members. This + class considers which ones of those can be simplified (after the refactoring was done). + If the inferred name of the member matches, the explicit name (from Complexifiy) can be removed. + + + + + Returns the predefined keyword kind for a given special type. + + The specialtype of this type. + The keyword kind for a given special type, or SyntaxKind.None if the type name is not a predefined type. + + + + Note: This helper exists solely to work around Bug 1012713. Once it is fixed, this helper must be + deleted in favor of . + Context: Bug 1012713 makes it so that the compiler doesn't support PredefinedType.Member inside crefs + (i.e. System.Int32.MaxValue is supported but Integer.MaxValue isn't). Until this bug is fixed, we don't + support simplifying types names Like System.Int32.MaxValue to Integer.MaxValue. + + + + + Checks if the SyntaxNode is a name of a namespace declaration. To be a namespace name, the syntax + must be parented by an namespace declaration and the node itself must be equal to the declaration's Name + property. + + + + + Computes a list of nodes and tokens that need to be reduced in the given syntax root. + + + + + Helper class to analyze the semantic effects of a speculated syntax node replacement on the parenting nodes. + Given an expression node from a syntax tree and a new expression from a different syntax tree, + it replaces the expression with the new expression to create a speculated syntax tree. + It uses the original tree's semantic model to create a speculative semantic model and verifies that + the syntax replacement doesn't break the semantics of any parenting nodes of the original expression. + + + + + Creates a semantic analyzer for speculative syntax replacement. + + Original expression to be replaced. + New expression to replace the original expression. + Semantic model of node's syntax tree. + Cancellation token. + + True if semantic analysis should be skipped for the replaced node and performed starting from parent of the original and replaced nodes. + This could be the case when custom verifications are required to be done by the caller or + semantics of the replaced expression are different from the original expression. + + + True if semantic analysis should fail when any of the invocation expression ancestors of in original code has overload resolution failures. + + + + + Determines whether performing the syntax replacement in one of the sibling nodes of the given lambda expressions will change the lambda binding semantics. + This is done by first determining the lambda parameters whose type differs in the replaced lambda node. + For each of these parameters, we find the descendant identifier name nodes in the lambda body and check if semantics of any of the parenting nodes of these + identifier nodes have changed in the replaced lambda. + + + + + A helper class that is constructed giving a set of modifiers. It takes these modifiers, and + breaks them down into separate categories, as well as determines what type of declaration is + being forced if certain modifiers are present. + + + + + Represents a syntax reference that was passed a null + reference to a node. In this case, we just hold onto the + weak tree reference and throw if any invalid properties + are accessed. + + + + + Represents a syntax reference that doesn't actually hold onto the + referenced node. Instead, enough data is held onto so that the node + can be recovered and returned if necessary. + + + + + Represents a syntax reference that doesn't actually hold onto the referenced node. + Instead, enough data is held onto so that the node can be recovered and returned if + necessary. + + + + + Represents a syntax tree that only has a weak reference to its + underlying data. This way it can be passed around without forcing + the underlying full tree to stay alive. Think of it more as a + key that can be used to identify a tree rather than the tree itself. + + + + + Get the declaring syntax node for a Symbol. Unlike the DeclaringSyntaxReferences property, + this function always returns a block syntax, if there is one. + + + + Namespace can not be added in this destination. + + + Only attributes, expressions or statements can be made explicit + + + <event> + + + <handler> + + + The expression to be evaluated and converted. + + + The name of the data type to which the value of expression will be converted. + + + <expression> + + + <typeName> + + + Associates an event with an event handler, delegate or lambda expression at run time. + + + The event to associate an event handler, delegate or lambda expression with. + + + The event handler to associate with the event. This may take the form of { AddressOf <eventHandler> | <delegate> | <lambdaExpression> }. + + + If <expression> evaluates to a reference or Nullable value that is not Nothing, the function returns that value. Otherwise, it calculates and returns <expressionIfNothing>. + + + Returned if it evaluates to a reference or nullable type that is not Nothing. + + + Evaluated and returned if <expression> evaluates to Nothing. + + + <expressionIfNothing> + + + Returns the result of explicitly converting an expression to a specified data type. + + + Introduces a type conversion operation similar to CType. The difference is that CType succeeds as long as there is a valid conversion, whereas DirectCast requires that one type inherit from or implement the other type. + + + The type name to return a System.Type object for. + + + Returns a System.Type object for the specified type name. + + + The XML namespace prefix to return a System.Xml.Linq.XNamespace object for. If this is omitted, the object for the default XML namespace is returned. + + + <xmlNamespacePrefix> + + + Returns the System.Xml.Linq.XNamespace object corresponding to the specified XML namespace prefix. + + + Replaces a specified number of characters in a String variable with characters from another string. + + + The name of the string variable to modify. + + + The one-based character position in the string where the replacement of text begins. + + + The number of characters to replace. If omitted, the length of <stringExpression> is used. + + + <stringName> + + + <startIndex> + + + <length> + + + <stringExpression> + + + Converts an expression to the {0} data type. + + + Removes the association between an event and an event handler or delegate at run time. + + + The event to disassociate an event handler or delegate from. + + + The event handler to disassociate from the event. This may take the form of { AddressOf <eventHandler> | <delegate> }. + + + If <condition> returns True, the function calculates and returns <expressionIfTrue>. Otherwise, it returns <expressionIfFalse>. + + + The expression to evaluate. + + + Evaluated and returned if <condition> evaluates to True. + + + Evaluated and returned if <condition> evaluates to False. + + + <condition> + + + <expressionIfTrue> + + + <expressionIfFalse> + + + Introduces a type conversion operation that does not throw an exception. If an attempted conversion fails, TryCast returns Nothing, which your program can test for. + + + Node does not descend from root. + + + Node not in parent's child list + + + Trivia is not associated with token + + + <typeOrMember> + + + The type of member to return the name of. + + + Produces a string for the name of the specified type or member. + + + <result> + + + R&emove and Sort Imports + + + &Sort Imports + + + + Rewrite "EndIf" to "End If" for an EndIfStatementSyntax/EndIfDirectiveSyntax node. + + Syntax node for the EndIfStatementSyntax or EndIfDirectiveSyntax to be rewritten. + "End" keyword token for . + "If" keyword token for . + Rewritten EndIfStatementSyntax/EndIfDirectiveSyntax node. + + This method checks for the following: + (a) Both the End keyword and If keyword, and respectively, are Missing tokens AND + (b) Descendant Trivia under the given token or token has an "EndIf" keyword token. + + If the above conditions are met, it does the following node rewrites: + (a) Replace the missing and tokens with new "End" and "If" keywords tokens respectively. + (b) Remove the first "EndIf" keyword token from the descendant trivia and adjust the leading and trailing trivia appropriately. + + + + + this will put operator token and modifier tokens in right order + + + + + check whether given operator statement is valid or not + + + + + normalize operator + + + + + reorder modifiers in the list + + + + + normalize modifier list of the node and record changes if there is any change + + + + + normalize modifier list of the node and record changes if there is any change + + + + + remove "Dim" keyword if present + + + + + remove a modifier from the given node + + + + + check whether given modifiers are in right order (in sync with ModifierKindsInOrder list) + + + + Remove this value when another is added. + + + Remove this value when another is added. + + + diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/cs/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/cs/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..af97cdd Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/cs/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/de/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/de/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..c385916 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/de/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/es/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/es/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..35d44a6 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/es/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/fr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/fr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..042a871 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/fr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/it/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/it/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..d45513f Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/it/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/ja/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/ja/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..385d75b Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/ja/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/ko/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/ko/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..662050f Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/ko/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/pl/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/pl/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..e4d5e3c Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/pl/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..e21c13c Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/ru/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/ru/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..592e91b Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/ru/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/tr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/tr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..adde166 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/tr/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..b6002c9 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll new file mode 100644 index 0000000..37b31fc Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.VisualBasic.Workspaces.4.1.0/lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/.signature.p7s b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/.signature.p7s new file mode 100644 index 0000000..b222b57 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/.signature.p7s differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/Icon.png b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/Icon.png new file mode 100644 index 0000000..a0f1fdb Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/Icon.png differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0.nupkg b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0.nupkg new file mode 100644 index 0000000..2da157f Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0.nupkg differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/ThirdPartyNotices.rtf b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/ThirdPartyNotices.rtf new file mode 100644 index 0000000..1e4323d Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/ThirdPartyNotices.rtf differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll new file mode 100644 index 0000000..36d0720 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.pdb b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.pdb new file mode 100644 index 0000000..8a88be1 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.pdb differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.xml b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.xml new file mode 100644 index 0000000..1d80566 --- /dev/null +++ b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.xml @@ -0,0 +1,24019 @@ + + + + Microsoft.CodeAnalysis.Workspaces + + + + + The annotation normally used on nodes to request case correction. + + + + + Case corrects all names found in the provided document. + + + + + Case corrects all names found in the spans of any nodes annotated with the provided + annotation. + + + + + Case corrects all names found in the span. + + + + + Case corrects all names found in the provided spans. + + + + + Case correct only things that don't require semantic information + + + + + Case corrects all names found in the spans in the provided document. + + + + + Case corrects only things that don't require semantic information + + + + + Helper to add all the values of into + without causing any allocations or boxing of enumerators. + + + + + Additive classifications types supply additional context to other classifications. + + + NOTE: Any updates to this class should also be reflected in LSP - see + Features/LanguageServer/Protocol/Handler/SemanticTokens/SemanticTokensHelpers.cs + + + + + Returns classified spans in ascending order. + s may have the same . This occurs when there are multiple + s for the same region of code. For example, a reference to a static method + will have two spans, one that designates it as a method, and one that designates it as static. + s may also have overlapping s. This occurs when there are + strings containing regex and/or escape characters. + + + + + Classifies the provided in the given . + This will do this using an appropriate + if that can be found. will be returned if this + fails. + + + + + Produce the classifications for the span of text specified. Classification should be + performed as quickly as possible, and should process the text in a lexical fashion. + This allows classification results to be shown to the user when a file is opened before + any additional compiler information is available for the text. + + Important: The classification should not consider the context the text exists in, and how + that may affect the final classifications. This may result in incorrect classification + (i.e. identifiers being classified as keywords). These incorrect results will be patched + up when the lexical results are superseded by the calls to AddSyntacticClassifications. + + + + + This method is optional and only should be implemented by languages that support + syntax. If the language does not support syntax, callers should use + instead. + + + + Produce the classifications for the span of text specified. The syntax of the document + can be accessed to provide more correct classifications. For example, the syntax can + be used to determine if a piece of text that looks like a keyword should actually be + considered an identifier in its current context. + + + + + Produce the classifications for the span of text specified. Semantics of the language + can be used to provide richer information for constructs where syntax is insufficient. + For example, semantic information can be used to determine if an identifier should be + classified as a type, structure, or something else entirely. + + + + + Adjust a classification from a previous version of text accordingly based on the current + text. For example, if a piece of text was classified as an identifier in a previous version, + but a character was added that would make it into a keyword, then indicate that here. + + This allows the classified to quickly fix up old classifications as the user types. These + adjustments are allowed to be incorrect as they will be superseded by calls to get the + syntactic and semantic classifications for this version later. + + + + + Determines the range of the documents that should be considered syntactically changed after an edit. In + language systems that can reuse major parts of a document after an edit, and which would not need to + recompute classifications for those reused parts, this can speed up processing on a host by not requiring + the host to reclassify all the source in view, but only the source that could have changed. + + If determining this is not possible, or potentially expensive, can be returned to + indicate that the entire document should be considered changed and should be syntactically reclassified. + + + Implementations should attempt to abide by the provided timeout as much as they can, returning the best + information available at that point. As this can be called in performance critical scenarios, it is better + to return quickly with potentially larger change span (including that of the full document) rather than + spend too much time computing a very precise result. + + + + + + This method is optional and only should be implemented by languages that support + syntax. If the language does not support syntax, callers should use + instead. + + + + Tries to get cached semantic classifications for the specified document and the specified . Will return an empty array not able to. + + Pass in . This will ensure that the cached + classifications are only returned if they match the content the file currently has. + + + + For space efficiency, we encode classified spans as triples of ints in one large array. The + first int is the index of classification type in , and the + second and third ints encode the span. + + + + + The syntax node types this classifier is able to classify + + + + + The syntax token kinds this classifier is able to classify + + + + + This method will be called for all nodes that match the types specified by the property. + + + + + This method will be called for all tokens that match the kinds specified by the property. + + + + + + + + + + + + + + + + + + + + + + + Computes a syntactic text change range that determines the range of a document that was changed by an edit. The + portions outside this change range are guaranteed to be syntactically identical (see ). This algorithm is intended to be fast. It is + technically linear in the number of nodes and tokens that may need to examined. However, in practice, it should + operate in sub-linear time as it will bail the moment tokens don't match, and it's able to skip over matching + nodes fully without examining the contents of those nodes. This is intended for consumers that want a + reasonably accurate change range computer, but do not want to spend an inordinate amount of time getting the + most accurate and minimal result possible. + + + This computation is not guaranteed to be minimal. It may return a range that includes parts that are unchanged. + This means it is also legal for the change range to just specify the entire file was changed. The quality of + results will depend on how well the parsers did with incremental parsing, and how much time is given to do the + comparison. In practice, for large files (i.e. 15kloc) with standard types of edits, this generally returns + results in around 50-100 usecs on a i7 3GHz desktop. + + This algorithm will respect the timeout provided to the best of abilities. If any information has been computed + when the timeout elapses, it will be returned. + + + + + + Apply this annotation to a SyntaxNode to indicate a conflict may exist that requires user understanding and acknowledgment before taking action. + + + + + Apply this annotation to an appropriate Syntax element to request that it should be + navigated to by the user after a code action is applied. If present the host should + try to place the user's caret at the beginning of the element. + + + By using a this navigation location will be resilient + to the transformations performed by the infrastructure. + Namely it will be resilient to the formatting, reduction or case correction that + automatically occures. This allows a code action to specify a desired location for + the user caret to be placed without knowing what actual position that location will + end up at when the action is finally applied. + + + + + Apply this annotation to an appropriate SyntaxNode to request that it should be renamed by the user after the action. + + + + + Apply this annotation to a SyntaxNode to indicate that a warning message should be presented to the user. + + + + + An action produced by a or a . + + + + + A short title describing the action that may appear in a menu. + + + + + Two code actions are treated as equivalent if they have equal non-null values and were generated + by the same or . + + + Equivalence of code actions affects some Visual Studio behavior. For example, if multiple equivalent + code actions result from code fixes or refactorings for a single Visual Studio light bulb instance, + the light bulb UI will present only one code action from each set of equivalent code actions. + Additionally, a Fix All operation will apply only code actions that are equivalent to the original code action. + + If two code actions that could be treated as equivalent do not have equal values, Visual Studio behavior + may be less helpful than would be optimal. If two code actions that should be treated as distinct have + equal values, Visual Studio behavior may appear incorrect. + + + + + Descriptive tags from . + These tags may influence how the item is displayed. + + + + + Gets custom tags for the CodeAction. + + + + + Used by the CodeFixService and CodeRefactoringService to add the Provider Name as a CustomTag. + + + + + The sequence of operations that define the code action. + + + + + The sequence of operations that define the code action. + + + + + The sequence of operations used to construct a preview. + + + + + Override this method if you want to implement a subclass that includes custom 's. + + + + + Override this method if you want to implement a that has a set of preview operations that are different + than the operations produced by . + + + + + Computes all changes for an entire solution. + Override this method if you want to implement a subclass that changes more than one document. + + + + + Computes changes for a single document. Override this method if you want to implement a + subclass that changes a single document. + + + All code actions are expected to operate on solutions. This method is a helper to simplify the + implementation of for code actions that only need + to change one document. + + If this code action does not support changing a single document. + + + + used by batch fixer engine to get new solution + + + + + Apply post processing steps to any 's. + + A list of operations. + A cancellation token. + A new list of operations with post processing steps applied to any 's. + + + + Apply post processing steps to solution changes, like formatting and simplification. + + The solution changed by the . + A cancellation token + + + + Apply post processing steps to a single document: + Reducing nodes annotated with + Formatting nodes annotated with + + The document changed by the . + A cancellation token. + A document with the post processing changes applied. + + + + Creates a for a change to a single . + Use this factory when the change is expensive to compute and should be deferred until requested. + + Title of the . + Function to create the . + Optional value used to determine the equivalence of the with other s. See . + + + + Creates a for a change to more than one within a . + Use this factory when the change is expensive to compute and should be deferred until requested. + + Title of the . + Function to create the . + Optional value used to determine the equivalence of the with other s. See . + + + + Creates a representing a group of code actions. + + Title of the group. + The code actions within the group. + to allow inlining the members of the group into the parent; + otherwise, to require that this group appear as a group with nested actions. + + + + Internal priority used to bluntly place items in a light bulb in strict orderings. Priorities take + the highest precedence when ordering items so that we can ensure very important items get top prominence, + and low priority items do not. + + + If is used, the feature that specifies that value should + implement and return for , + and + . This + will ensure that the analysis engine runs the providers that will produce those actions first, + thus allowing those actions to be computed and displayed prior to running all other providers. + + + + + A that can vary with user specified options. + + + + + Gets the options to use with this code action. + This method is guaranteed to be called on the UI thread. + + A cancellation token. + An implementation specific object instance that holds options for applying the code action. + + + + Gets the 's for this given the specified options. + + An object instance returned from a prior call to . + A cancellation token. + + + + Override this method to compute the operations that implement this . + + An object instance returned from a call to . + A cancellation token. + + + + A for applying solution changes to a workspace. + may return at most one + . Hosts may provide custom handling for + s, but if a requires custom + host behavior not supported by a single , then instead: + + Implement a custom and s + Do not return any from + Directly apply any workspace edits + Handle any custom host behavior + Produce a preview for + by creating a custom or returning a single + to use the built-in preview mechanism + + + + + + Represents a single operation of a multi-operation code action. + + + + + A short title describing of the effect of the operation. + + + + + Called by the host environment to apply the effect of the operation. + This method is guaranteed to be called on the UI thread. + + + + + Called by the host environment to apply the effect of the operation. + This method is guaranteed to be called on the UI thread. + + + + + Operations may make all sorts of changes that may not be appropriate during testing + (like popping up UI). So, by default, we don't apply them unless the operation asks + for that to happen. + + + + + A code action operation for requesting a document be opened in the host environment. + + + + + Represents a preview operation for generating a custom user preview for the operation. + + + + + Gets a custom preview control for the operation. + If preview is null and is non-null, then is used to generate the preview. + + + + + No priority specified, all refactoring, code fixes, and analyzers should be run. This is equivalent + to , , and combined. + + + + + Only lowest priority suppression and configuration fix providers should be run. Specifically, + providers will be run. + NOTE: This priority is reserved for suppression and configuration fix providers and should not be + used by regular code fix providers and refactoring providers. + + + + + Only low priority refactoring, code fix providers should be run. Specifically, + providers will be run when or + is . s + which can report at least one fixable diagnostic will be run. + + + + + Only normal priority refactoring, code fix providers should be run. Specifically, + providers will be run when or + is . s + which can report at least one fixable diagnostic will be run. + + + + + Only high priority refactoring, code fix providers should be run. Specifically, + providers will be run when or + is . + The + will be run. + + + + + Get the proper start position based on the span marker type. + + + + + Get the proper end position based on the span marker type. + + + + + Inject annotations into the node so that it can re-calculate spans for each code cleaner after each tree transformation. + + + + + Make sure annotations are positioned outside of any spans. If not, merge two adjacent spans to one. + + + + + Retrieves four tokens around span like below. + + [previousToken][startToken][SPAN][endToken][nextToken] + + + + + Adjust provided span to align to either token's start position or end position. + + + + + Find closest token (including one in structured trivia) right of given position + + + + + Find closest token (including one in structured trivia) left of given position + + + + + Enum that indicates type of span marker + + + + + Normal case + + + + + Span starts at the beginning of the tree + + + + + Span ends at the end of the tree + + + + + Internal annotation type to mark span location in the tree. + + + + + Indicates the current marker type + + + + + Indicates how to find the other side of the span marker if it is missing + + + + + Static CodeCleaner class that provides default code cleaning behavior. + + + + + Return default code cleaners for a given document. + + This can be modified and given to the Cleanup method to provide different cleaners. + + + + + Cleans up the whole document. + Optionally you can provide your own options and code cleaners. Otherwise, the default will be used. + + + + + Cleans up the document marked with the provided annotation. + Optionally you can provide your own options and code cleaners. Otherwise, the default will be used. + + + + + Clean up the provided span in the document. + Optionally you can provide your own options and code cleaners. Otherwise, the default will be used. + + + + + Clean up the provided spans in the document. + Optionally you can provide your own options and code cleaners. Otherwise, the default will be used. + + + + + Clean up the provided span in the node. + This will only cleanup stuff that doesn't require semantic information. + + + + + Clean up the provided spans in the node. + This will only cleanup stuff that doesn't require semantic information. + + + + + Internal code cleanup service interface. + + This is not supposed to be used directly. It just provides a way to get the right service from each language. + + + + + Returns the default code cleaners. + + + + + This will run all provided code cleaners in an order that is given to the method. + + + + + This will run all provided code cleaners in an order that is given to the method. + + This will do cleanups that don't require any semantic information. + + + + + Specifies the exact type of the code cleanup exported. + + + + + A code cleaner that requires semantic information to do its job. + + + + + Returns the name of this provider. + + + + + This should apply its code clean up logic to the spans of the document. + + + + + This will run all provided code cleaners in an order that is given to the method. + + This will do cleanups that don't require any semantic information + + + + + Helper class that implements using delegates passed to its constructor. + + + + + Represents a single fix. This is essentially a tuple + that holds on to a and the set of + s that this will fix. + + + + + This is the diagnostic that will show up in the preview pane header when a particular fix + is selected in the light bulb menu. We also group all fixes with the same + together (into a single SuggestedActionSet) in the light bulb menu. + + + A given fix can fix one or more diagnostics. However, our light bulb UI (preview pane, grouping + of fixes in the light bulb menu etc.) currently keeps things simple and pretends that + each fix fixes a single . + + Implementation-wise the is always the first diagnostic that + the supplied when registering the fix (). This could change + in the future, if we decide to change the UI to depict the true mapping between fixes and diagnostics + or if we decide to use some other heuristic to determine the . + + + + + Context for code fixes provided by a . + + + + + Document corresponding to the to fix. + + + + + Text span within the to fix. + + + + + Diagnostics to fix. + NOTE: All the diagnostics in this collection have the same . + + + + + CancellationToken. + + + + + Creates a code fix context to be passed into method. + + Document to fix. + Text span within the to fix. + + Diagnostics to fix. + All the diagnostics must have the same . + Additionally, the of each diagnostic must be in the set of the of the associated . + + Delegate to register a fixing a subset of diagnostics. + Cancellation token. + Throws this exception if any of the arguments is null. + + Throws this exception if the given is empty, + has a null element or has an element whose span is not equal to . + + + + + Creates a code fix context to be passed into method. + + Document to fix. + + Diagnostic to fix. + The of this diagnostic must be in the set of the of the associated . + + Delegate to register a fixing a subset of diagnostics. + Cancellation token. + Throws this exception if any of the arguments is null. + + + + Add supplied to the list of fixes that will be offered to the user. + + The that will be invoked to apply the fix. + The subset of being addressed / fixed by the . + + + + Add supplied to the list of fixes that will be offered to the user. + + The that will be invoked to apply the fix. + The subset of being addressed / fixed by the . + + + + Add supplied to the list of fixes that will be offered to the user. + + The that will be invoked to apply the fix. + The subset of being addressed / fixed by the . + + + + Implement this type to provide fixes for source code problems. + Remember to use so the host environment can offer your fixes in a UI. + + + + + A list of diagnostic IDs that this provider can provide fixes for. + + + + + Computes one or more fixes for the specified . + + + A containing context information about the diagnostics to fix. + The context must only contain diagnostics with a included in the for the current provider. + + + + + Gets an optional that can fix all/multiple occurrences of diagnostics fixed by this code fix provider. + Return null if the provider doesn't support fix all/multiple occurrences. + Otherwise, you can return any of the well known fix all providers from or implement your own fix all provider. + + + + + What priority this provider should run at. + + + + + Use this attribute to declare a implementation so that it can be discovered by the host. + + + + + Optional name of the . + + + + + The source languages this provider can provide fixes for. See . + + + + + Attribute constructor used to specify automatic application of a code fix provider. + + One language to which the code fix provider applies. + Additional languages to which the code fix provider applies. See . + + + + Helper class for "Fix all occurrences" code fix providers. + + + + + Returns all the changed documents produced by fixing the list of provided . The documents will be returned such that fixed documents for a later + diagnostic will appear later than those for an earlier diagnostic. + + + + + Take all the changes made to a particular document and determine the text changes caused by each one. Take + those individual text changes and attempt to merge them together in order into . + + + + + Default implementation of a that efficiently handles the dispatch logic for fixing + entire solutions. Used by and . + + + + + Provides a base class to write a that fixes documents independently. This type + should be used instead of in the case where fixes for a only affect the the diagnostic was produced in. + + + This type provides suitable logic for fixing large solutions in an efficient manner. Projects are serially + processed, with all the documents in the project being processed in parallel. Diagnostics are computed for the + project and then appropriately bucketed by document. These are then passed to for implementors to process. + + + + + Produce a suitable title for the fix-all this type creates in . Override this if customizing that title is desired. + + + + + Fix all the present in . The document returned + will only be examined for its content (e.g. it's or . No + other aspects of (like it's properties), or changes to the or + it points at will be considered. + + The context for the Fix All operation. + The document to fix. + The diagnostics to fix in the document. + + The new representing the content fixed document. + -or- + , if no changes were made to the document. + + + + + Determines all the diagnostics we should be fixing for the given . + + + + + Attempts to fix all the provided returning, for each updated document, either + the new syntax root for that document or its new text. Syntax roots are returned for documents that support + them, and are used to perform a final cleanup pass for formatting/simplication/etc. Text is returned for + documents that don't support syntax. + + + + + Take all the fixed documents and format/simplify/clean them up (if the language supports that), and take the + resultant text and apply it to the solution. If the language doesn't support cleanup, then just take the + given text and apply that instead. + + + + + Dummy class just to get access to + + + + + Context for "Fix all occurrences" code fixes provided by a . + + + Context for "Fix all occurrences" code fixes provided by a . + + + + + Solution to fix all occurrences. + + + + + Project within which fix all occurrences was triggered. + + + + + Document within which fix all occurrences was triggered. + Can be null if the context was created using . + + + + + Underlying which triggered this fix all. + + + + + to fix all occurrences. + + + + + Diagnostic Ids to fix. + Note that , and methods + return only diagnostics whose IDs are contained in this set of Ids. + + + + + The value expected of a participating in this fix all. + + + + + CancellationToken for fix all session. + + + + + Creates a new . + Use this overload when applying fix all to a diagnostic with a source location. + + Document within which fix all occurrences was triggered. + Underlying which triggered this fix all. + to fix all occurrences. + The value expected of a participating in this fix all. + Diagnostic Ids to fix. + + to fetch document/project diagnostics to fix in a . + + Cancellation token for fix all computation. + + + + Creates a new . + Use this overload when applying fix all to a diagnostic with no source location, i.e. . + + Project within which fix all occurrences was triggered. + Underlying which triggered this fix all. + to fix all occurrences. + The value expected of a participating in this fix all. + Diagnostic Ids to fix. + + to fetch document/project diagnostics to fix in a . + + Cancellation token for fix all computation. + + + + Gets all the diagnostics in the given document filtered by . + + + + + Gets all the project-level diagnostics, i.e. diagnostics with no source location, in the given project filtered by . + + + + + Gets all the diagnostics in the given project filtered by . + This includes both document-level diagnostics for all documents in the given project and project-level diagnostics, i.e. diagnostics with no source location, in the given project. + + + + + Gets all the project diagnostics in the given project filtered by . + If is false, then returns only project-level diagnostics which have no source location. + Otherwise, returns all diagnostics in the project, including the document diagnostics for all documents in the given project. + + + + + Gets a new with the given cancellationToken. + + + + + Diagnostic provider to fetch document/project diagnostics to fix in a . + + + + + Gets all the diagnostics to fix in the given document in a . + + + + + Gets all the project-level diagnostics to fix, i.e. diagnostics with no source location, in the given project in a . + + + + + Gets all the diagnostics to fix in the given project in a . + This includes both document-level diagnostics for all documents in the given project and project-level diagnostics, i.e. diagnostics with no source location, in the given project. + + + + + Fix all occurrences logging. + + + + + Implement this abstract type to provide fix all/multiple occurrences code fixes for source code problems. + Alternatively, you can use any of the well known fix all providers from . + + + + + Gets the supported scopes for fixing all occurrences of a diagnostic. + By default, it returns the following scopes: + (a) + (b) and + (c) + + + + + Gets the diagnostic IDs for which fix all occurrences is supported. + By default, it returns for the given . + + Original code fix provider that returned this fix all provider from method. + + + + Gets fix all occurrences fix for the given fixAllContext. + + + + + Create a that fixes documents independently. This should be used instead of + in the case where fixes for a + only affect the the diagnostic was produced in. + + + Callback that will the fix diagnostics present in the provided document. The document returned will only be + examined for its content (e.g. it's or . No other aspects + of it (like attributes), or changes to the or it points at + will be considered. + + + + + Contains computed information for a given , such as supported diagnostic Ids and supported . + + + + + Gets an optional for the given code fix provider or suppression fix provider. + + + + + Gets an optional for the given code fix provider. + + + + + Gets an optional for the given suppression fix provider. + + + + + Indicates scope for "Fix all occurrences" code fixes provided by each . + + + + + Helper to merge many disparate text changes to a single document together into a total set of changes. + + + + + Try to merge the changes made to into the tracked changes. If there is any + conflicting change in with existing changes, then no changes are added. + + + + + Try to merge the changes made to all the documents in in order into the + tracked changes. If there is any conflicting changes with existing changes for a particular document, then + no changes will be added for it. + + + + + Contains well known implementations of . + + + + + Default batch fix all provider. + This provider batches all the individual diagnostic fixes across the scope of fix all action, + computes fixes in parallel and then merges all the non-conflicting fixes into a single fix all code action. + This fixer supports fixes for the following fix all scopes: + , and . + + + The batch fix all provider only batches operations (i.e. ) of type + present within the individual diagnostic fixes. Other types of + operations present within these fixes are ignored. + + + + + Provides suppression or configuration code fixes. + + + + + Returns true if the given diagnostic can be configured, suppressed or unsuppressed by this provider. + + + + + Gets one or more add suppression, remove suppression, or configuration fixes for the specified diagnostics represented as a list of 's. + + A list of zero or more potential 'es. It is also safe to return null if there are none. + + + + Gets one or more add suppression, remove suppression, or configuration fixes for the specified no-location diagnostics represented as a list of 's. + + A list of zero or more potential 'es. It is also safe to return null if there are none. + + + + Gets an optional that can fix all/multiple occurrences of diagnostics fixed by this fix provider. + Return null if the provider doesn't support fix all/multiple occurrences. + Otherwise, you can return any of the well known fix all providers from or implement your own fix all provider. + + + + + Code fix category for code fixes provided by a . + + + + + Fixes code to adhere to code style. + + + + + Fixes code to improve code quality. + + + + + Fixes code to fix compiler diagnostics. + + + + + Custom category for fix. + + + + + Diagnostic provider to fetch document/project diagnostics to fix in a . + + + + + Whether or not this diagnostic should be included when performing a FixAll. This is + useful for providers that create multiple diagnostics for the same issue (For example, + one main diagnostic and multiple 'faded out code' diagnostics). FixAll can be invoked + from any of those, but we'll only want perform an edit for only one diagnostic for each + of those sets of diagnostics. + + This overload differs from + in that it also passes along the . + + This overload differs from in + that it also passes along the in case that would be useful + (for example if the is used. + + Only one of these three overloads needs to be overridden if you want to customize + behavior. + + + + + Whether or not this diagnostic should be included when performing a FixAll. This is + useful for providers that create multiple diagnostics for the same issue (For example, + one main diagnostic and multiple 'faded out code' diagnostics). FixAll can be invoked + from any of those, but we'll only want perform an edit for only one diagnostic for each + of those sets of diagnostics. + + By default, all diagnostics will be included in fix-all unless they are filtered out + here. If only the diagnostic needs to be queried to make this determination, only this + overload needs to be overridden. However, if information from + is needed (for example ), then + should be overridden instead. + + Only one of these two overloads needs to be overridden if you want to customize + behavior. + + + + + Return the most relevant declaration to namespaceOrType, + it will first search the context node contained within, + then the declaration in the same file, then non auto-generated file, + then all the potential location. Return null if no declaration. + + + + + Options for controlling the code produced by the . + + + + + A location used to determine the best place to generate a member. This is only used for + determining which part of a partial type to generate in. If a type only has one part, or + an API is used that specifies the type, then this is not used. A part is preferred if + it surrounds this context location. If no part surrounds this location then a part is + preferred if it comes from the same SyntaxTree as this location. If there is no + such part, then any part may be used for generation. + + This option is not necessary if or are + provided. + + + + + A hint to the code generation service to specify where the generated code should be + placed. Code will be generated after this location if the location is valid in the type + or symbol being generated into, and it is possible to generate the code after it. + + If this option is provided, neither nor are + needed. + + + + + A hint to the code generation service to specify where the generated code should be + placed. Code will be generated before this location if the location is valid in the type + or symbol being generated into, and it is possible to generate the code after it. + + If this option is provided, neither nor are + needed. + + + + + True if the code generation service should add , + and when not generating directly into a declaration, should try to automatically add imports to the file + for any generated code. + Defaults to true. + + + + + Contains additional imports to be automatically added. This is useful for adding + imports that are part of a list of statements. + + + + + True if members of a symbol should also be generated along with the declaration. If + false, only the symbol's declaration will be generated. + + + + + True if the code generator should merge namespaces which only contain other namespaces + into a single declaration with a dotted name. False if the nesting should be preserved + and each namespace declaration should be nested and should only have a single non-dotted + name. + + Merging can only occur if the namespace only contains a single member that is also a + namespace. + + + + + True if the code generation should put multiple attributes in a single attribute + declaration, or if should have a separate attribute declaration for each attribute. For + example, in C# setting this to True this would produce "[Goo, Bar]" while setting it to + False would produce "[Goo][Bar]" + + + + + True if the code generator should always generate accessibility modifiers, even if they + are the same as the defaults for that symbol. For example, a private field in C# does + not need its accessibility specified as it will be private by default. However, if this + option is set to true 'private' will still be generated. + + + + + True if the code generator should generate empty bodies for methods along with the + method declaration. If false, only method declarations will be generated. + + + + + True if the code generator should generate documentation comments where available + + + + + True if the code generator should automatically attempt to choose the appropriate location + to insert members. If false and a generation location is not specified by AfterThisLocation, + or BeforeThisLocation, members will be inserted at the end of the destination definition. + + + + + If is , determines if members will be + sorted before being added to the end of the list of members. + + + + + True if the code generator should attempt to reuse the syntax of the constituent entities, such as members, access modifier tokens, etc. while attempting to generate code. + If any of the member symbols have zero declaring syntax references (non-source symbols) OR two or more declaring syntax references (partial definitions), then syntax is not reused. + If false, then the code generator will always synthesize a new syntax node and ignore the declaring syntax references. + + + + + Generates symbols that describe declarations to be generated. + + + + + Determines if the symbol is purely a code generation symbol. + + + + + Creates an event symbol that can be used to describe an event declaration. + + + + + Creates a property symbol that can be used to describe a property declaration. + + + + + Creates a field symbol that can be used to describe a field declaration. + + + + + Creates a constructor symbol that can be used to describe a constructor declaration. + + + + + Creates a destructor symbol that can be used to describe a destructor declaration. + + + + + Creates a method symbol that can be used to describe a method declaration. + + + + + Creates a method symbol that can be used to describe an operator declaration. + + + + + Creates a method symbol that can be used to describe a conversion declaration. + + + + + Creates a method symbol that can be used to describe a conversion declaration. + + + + + Creates a parameter symbol that can be used to describe a parameter declaration. + + + + + Creates a parameter symbol that can be used to describe a parameter declaration. + + + + + Creates a parameter symbol that can be used to describe a parameter declaration. + + + + + Creates a parameter symbol that can be used to describe a parameter declaration. + + + + + Creates a type parameter symbol that can be used to describe a type parameter declaration. + + + + + Creates a pointer type symbol that can be used to describe a pointer type reference. + + + + + Creates an array type symbol that can be used to describe an array type reference. + + + + + Creates an method type symbol that can be used to describe an accessor method declaration. + + + + + Create attribute data that can be used in describing an attribute declaration. + + + + + Creates a named type symbol that can be used to describe a named type declaration. + + + + + Creates a named type symbol that can be used to describe a named type declaration. + + + + + Creates a method type symbol that can be used to describe a delegate type declaration. + + + + + Creates a namespace symbol that can be used to describe a namespace declaration. + + + + + A generator used for creating or modifying member declarations in source. + + + + + Annotation placed on generated syntax. + + + + + Returns a newly created event declaration node from the provided event. + + + + + Returns a newly created field declaration node from the provided field. + + + + + Returns a newly created method declaration node from the provided method. + + + + + Returns a newly created property declaration node from the provided property. + + + + + Returns a newly created named type declaration node from the provided named type. + + + + + Returns a newly created namespace declaration node from the provided namespace. + + + + + Create a new declaration node with an event declaration of the same signature as the specified symbol added to it. + + + + + Create a new declaration node with a field declaration of the same signature as the specified symbol added to it. + + + + + Create a new declaration node with a method declaration of the same signature as the specified symbol added to it. + + + + + Create a new declaration node with a property declaration of the same signature as the specified symbol added to it. + + + + + Create a new declaration node with a named type declaration of the same signature as the specified symbol added to it. + + + + + Create a new declaration node with multiple member declarations of the same signatures as the specified symbols added to it. + + + + + Create a new declaration node with one or more parameter declarations of the same signature as the specified symbols added to it. + + + + + Create a new declaration node with the specified attributes added to it. + + + + + Removes the specified attribute node from the given declaration node. + + + + + Removes the specified attribute node from the given declaration node. + + + + + Create a new declaration node with one or more statements added to its body. + + + + + Create a new solution where the declaration of the destination symbol has an additional event of the same signature as the specified event symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional field of the same signature as the specified field symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional method of the same signature as the specified method symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional property of the same signature as the specified property symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional named type of the same signature as the specified named type symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional named type of the same signature as the specified named type symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional namespace of the same signature as the specified namespace symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional namespace or type of the same signature as the specified namespace or type symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has additional members of the same signature as the specified member symbols. + Returns the document in the new solution where the destination symbol is declared. + + + + + Returns true if additional declarations can be added to the destination symbol's declaration. + + + + + Returns a newly created event declaration node from the provided event. + + + + + Returns a newly created field declaration node from the provided field. + + + + + Returns a newly created method declaration node from the provided method. + + + + + Returns a newly created property declaration node from the provided property. + + + + + Returns a newly created named type declaration node from the provided named type. + + + + + Returns a newly created namespace declaration node from the provided namespace. + + + + + Adds an event into destination. + + + + + Adds a field into destination. + + + + + Adds a method into destination. + + + + + Adds a property into destination. + + + + + Adds a named type into destination. + + + + + Adds a namespace into destination. + + + + + Adds members into destination. + + + + + Adds the parameters to destination. + + + + + Adds the attributes to destination. + + + + + Remove the given attribute from destination. + + + + + Remove the given attribute from destination. + + + + + Update the modifiers list for the given declaration node. + + + + + Update the accessibility modifiers for the given declaration node, retaining the trivia of the existing modifiers. + + + + + Update the type for the given declaration node. + + + + + Replace the existing members with the given newMembers for the given declaration node. + + + + + Adds the statements to destination. + + + + + Adds a field with the provided signature into destination. + + + + + Adds a field with the provided signature into destination. + + + + + Adds a method with the provided signature into destination. + + + + + Adds a property with the provided signature into destination. + + + + + Adds a named type into destination. + + + + + Adds a named type into destination. + + + + + Adds a namespace into destination. + + + + + Adds a namespace or type into destination. + + + + + Adds all the provided members into destination. + + + + + true if destination is a location where other symbols can be added to. + + + + + true if destination is a location where other symbols can be added to. + + + + + Return the most relevant declaration to namespaceOrType, + it will first search the context node contained within, + then the declaration in the same file, then non auto-generated file, + then all the potential location. Return null if no declaration. + + + + + When we are generating literals, we sometimes want to emit code vs. the numeric literal. This class + gives the constants for all ones we want to convert + + + + + Annotation placed on s that the converts to a node. This + information tracks the original nullable state of the symbol and is used by metadata-as-source to determine if + it needs to add #nullable directives in the file. + + + + + For string~ types. + + + + + For string! or string? types. + + + + + Context for code refactorings provided by a . + + + + + Document corresponding to the to refactor. + + + + + Text span within the to refactor. + + + + + CancellationToken. + + + + + Creates a code refactoring context to be passed into method. + + + + + Creates a code refactoring context to be passed into method. + + + + + Add supplied to the list of refactorings that will be offered to the user. + + The that will be invoked to apply the refactoring. + + + + Add supplied applicable to to the list of refactorings that will be offered to the user. + + The that will be invoked to apply the refactoring. + The within original document the is applicable to. + + should represent a logical section within the original document that the is + applicable to. It doesn't have to precisely represent the exact that will get changed. + + + + + Inherit this type to provide source code refactorings. + Remember to use so the host environment can offer your refactorings in a UI. + + + + + Computes one or more refactorings for the specified . + + + + + What priority this provider should run at. + + + + + Use this attribute to declare a implementation so that it can be discovered by the host. + + + + + The name of the . + + + + + The source languages for which this provider can provide refactorings. See . + + + + + Attribute constructor used to specify availability of a code refactoring provider. + + One language to which the code refactoring provider applies. + Additional languages to which the code refactoring provider applies. See . + + + + + + + Represents a code style option and an associated notification option. Supports + being instantiated with T as a or an enum type. + + CodeStyleOption also has some basic support for migration a option + forward to an enum type option. Specifically, if a previously serialized + bool-CodeStyleOption is then deserialized into an enum-CodeStyleOption then 'false' + values will be migrated to have the 0-value of the enum, and 'true' values will be + migrated to have the 1-value of the enum. + + Similarly, enum-type code options will serialize out in a way that is compatible with + hosts that expect the value to be a boolean. Specifically, if the enum value is 0 or 1 + then those values will write back as false/true. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Offers different notification styles for enforcing + a code style. Under the hood, it simply maps to + + + This also supports various properties for databinding. + + + + + + Name for the notification option. + + + + + Diagnostic severity associated with notification option. + + + + + Notification option to disable or suppress an option with . + + + + + Notification option for a silent or hidden option with . + + + + + Notification option for a suggestion or an info option with . + + + + + Notification option for a warning option with . + + + + + Notification option for an error option with . + + + + + Given an editor-config code-style-option, gives back the core value part of the + option. For example, if the option is "true:error" or "true" then "true" will be returned + in . + + + + + Given an editor-config code-style-option, gives back the constituent parts of the + option. For example, if the option is "true:error" then "true" will be returned + in and will be returned + in . Note that users are allowed to not provide + a NotificationOption, so will default to . + + + + + When user preferences are not yet set for a style, we fall back to the default value. + One such default(s), is that the feature is turned on, so that codegen consumes it, + but with silent enforcement, so that the user is not prompted about their usage. + + + + + This option says if we should simplify away the . or . in field access expressions. + + + + + This option says if we should simplify away the . or . in property access expressions. + + + + + This option says if we should simplify away the . or . in method access expressions. + + + + + This option says if we should simplify away the . or . in event access expressions. + + + + + This option says if we should prefer keyword for Intrinsic Predefined Types in Declarations + + + + + This option says if we should prefer keyword for Intrinsic Predefined Types in Member Access Expression + + + + + Note: the order of this enum is important. We originally only supported two values, + and we encoded this as a bool with 'true = WhenPossible' and 'false = never'. To + preserve compatibility we map the false value to 0 and the true value to 1. All new + values go after these. + + + + + Prefer namespace N { } + + + + + Prefer namespace N; + + + + + Preferences for flagging unused parameters. + + + + + Assignment preference for unused values from expression statements and assignments. + + + + + Serialization typed used to pass information to/from OOP and VS. + + + + + The category specified in a [DesignerCategory("...")] attribute. + + + + + The document this applies to. + + + + + Path for this . + + + + + Callback the host (VS) passes to the OOP service to allow it to send batch notifications + about designer attribute info. There is no guarantee that the host will have done anything + with this data when the callback returns, only that it will try to inform the project system + about the designer attribute info in the future. + + + + + Interface to allow host (VS) to inform the OOP service to start incrementally analyzing and + reporting results back to the host. + + + + + enum for each analysis kind. + + + + + Provides and caches information about diagnostic analyzers such as , + instance, s. + Thread-safe. + + + + + Supported descriptors of each . + + + Holds on instances weakly so that we don't keep analyzers coming from package references alive. + They need to be released when the project stops referencing the analyzer. + + The purpose of this map is to avoid multiple calls to that might return different values + (they should not but we need a guarantee to function correctly). + + + + + Returns of given . + + + + + Returns of given + that are not compilation end descriptors. + + + + + Returns true if given has a compilation end descriptor + that is reported in the Compilation end action. + + + + + Determine whether collection of telemetry is allowed for given . + + + + + Return true if the given is suppressed for the given project. + NOTE: This API is intended to be used only for performance optimization. + + + + + Language name () or null if the diagnostic is not associated with source code. + + + + + Properties for a diagnostic generated by an explicit build. + + + + + Get if it exists, throws otherwise. + + Some diagnostic data such as those created from build have original line/column but not . + In those cases use method instead to calculate span from original line/column. + + + + + Create a host/VS specific diagnostic with the given descriptor and message arguments for the given project. + Note that diagnostic created through this API cannot be suppressed with in-source suppression due to performance reasons (see the PERF remark below for details). + + + + + Returns true if the diagnostic was generated by an explicit build, not live analysis. + + + + + + Null if path is not mapped and contains the actual path. + Note that the value might be a relative path. In that case should be used + as a base path for path resolution. + + + + + Push diagnostics. Roslyn/LSP is responsible for aggregating internal diagnostic notifications and pushing + those out to either VS or the LSP push diagnostic system. + + + + + Pull diagnostics. Roslyn/LSP is responsible for aggregating internal diagnostic notifications and + responding to LSP pull requests for them. + + + + + Default mode - when the option is set to default we use a feature flag to determine if we're + is in or + + + + + Scope for analyzing a document for computing local syntax/semantic diagnostics. + + + + + Gets the corresponding to the . + NOTE: Throws an exception if is not an . + + + + + IDE-only document based diagnostic analyzer. + + + + + it is not allowed one to implement both DocumentDiagnosticAnalzyer and DiagnosticAnalyzer + + + + + This lets vsix installed or to + specify priority of the analyzer. Regular always comes before those 2 different types. + Priority is ascending order and this only works on HostDiagnosticAnalyzer meaning Vsix installed analyzers in VS. + This is to support partner teams (such as typescript and F#) who want to order their analyzer's execution order. + + + + + Filters out the diagnostics with the specified . + If is false, filters out suppressed diagnostics. + If is non-null, filters out diagnostics with location outside this span. + + + + + A dummy singleton analyzer. Its only purpose is to represent file content load failures in maps that are keyed by . + + + + + Key is . + + We use the key to de-duplicate analyzer references if they are referenced from multiple places. + + + + + Key is the language the supports and key for the second map is analyzer reference identity and + for that assembly reference. + + Entry will be lazily filled in. + + + + + Key is . + + Value is set of that belong to the . + + We populate it lazily. otherwise, we will bring in all analyzers preemptively + + + + + Maps to compiler diagnostic analyzers. + + + + + Maps list of analyzer references and to . + + + TODO: https://github.com/dotnet/roslyn/issues/42848 + It is quite common for multiple projects to have the same set of analyzer references, yet we will create + multiple instances of the analyzer list and thus not share the info. + + + + + List of host s + + + + + Get identity and s map for given + + + + + Create identity and s map for given that + includes both host and project analyzers + + + + + Create identity and s map for given that + has only project analyzers + + + + + Return compiler for the given language. + + + + + Given the original location of the diagnostic and the mapped line info based on line directives in source, + apply any necessary adjustments to these diagnostic spans and returns the effective source span for the diagnostic. + For example, for Venus, we might change the mapped location to be the location in the primary buffer. + Additionally, if the secondary buffer location is outside visible user code, then the original location is also adjusted to be within visible user code. + + + + + IDE-only project based diagnostic analyzer. + + + + + it is not allowed one to implement both ProjectDiagnosticAnalzyer and DiagnosticAnalyzer + + + + + This lets vsix installed or to + specify priority of the analyzer. Regular always comes before those 2 different types. + Priority is ascending order and this only works on HostDiagnosticAnalyzer meaning Vsix installed analyzers in VS. + This is to support partner teams (such as typescript and F#) who want to order their analyzer's execution order. + + + + + Information about analyzers supplied by the host (IDE), which can be completely skipped or its diagnostics partially filtered for the corresponding project + as project analyzer reference (from NuGet) has equivalent analyzer(s) reporting all or subset of diagnostic IDs reported by these analyzers. + + + + + Analyzers supplied by the host (IDE), which can be completely skipped for the corresponding project + as project analyzer reference has equivalent analyzer(s) reporting all diagnostic IDs reported by these analyzers. + + + + + Analyzer to diagnostic ID map, such that the diagnostics of those IDs reported by the analyzer should be filtered + for a correspndiong project. + This includes the analyzers supplied by the host (IDE), such that project's analyzer references (from NuGet) + has equivalent analyzer(s) reporting subset of diagnostic IDs reported by these analyzers. + + + + + Predefined name of diagnostic property which shows in what compilation stage the diagnostic is created. + + + + + An implementation of for the compiler that wraps a . + + + + + Create a from a . + + + + + Resolved path of the document. + + + + + Retrieves a with the contents of this file. + + + + + Special IDE analyzer to flag unnecessary inline source suppressions, + i.e. pragma and local SuppressMessageAttribute suppressions. + + + + + Analyzes the tree, with an optional span scope, and report unnecessary inline suppressions. + + + + + Returns the equivalent for a value. + + The value. + + The equivalent for the value. + + + If is not one of the expected values. + + + + + Returns the equivalent for a value. + + The value. + + The equivalent for a value; otherwise, + if does not contain a direct equivalent for + . + + + If is not one of the expected values. + + + + + Applies a default severity to a value. + + The value. + The default severity. + + If is , returns + . + -or- + Otherwise, returns if it has a non-default value. + + + + + Each word is capitalized + + + + + Every word except the first word is capitalized + + + + + Only the first word is capitalized + + + + + Every character is capitalized + + + + + No characters are capitalized + + + + + The dictionary we get from the VS editorconfig API uses the same dictionary object if there are no changes, so we can cache based on dictionary + + + + + Determines if matches a subset of the symbols matched by . The + implementation determines which properties of are considered for this + evaluation. The subset relation does not necessarily indicate a proper subset. + + The first naming rule. + The second naming rule. + if matches a subset of the symbols matched by + on some implementation-defined properties; otherwise, . + + + + This does not handle the case where a method in a base type implicitly implements an + interface method on behalf of one of its derived types. + + + + + Contains all information related to Naming Style Preferences. + 1. Symbol Specifications + 2. Name Style + 3. Naming Rule (points to Symbol Specification IDs) + + + + + Invalid value, analyzer must support at least one or more of the subsequent analysis categories. + + + + + Analyzer reports syntax diagnostics (i.e. registers a SyntaxTree action). + Note: an that uses this will not work properly if + it registers a and then ends + up needing to use the . If a + is needed, use or + . + + + + + Analyzer reports semantic diagnostics and also supports incremental span based method body analysis. + An analyzer can support incremental method body analysis if edits within a method body only affect the diagnostics reported by the analyzer on the edited method body. + + + + + Analyzer reports semantic diagnostics but doesn't support incremental span based method body analysis. + It needs to re-analyze the whole document for reporting semantic diagnostics even for method body editing scenarios. + + + + + Analyzer reports project diagnostics (i.e. registers a Compilation action and/or Compilation end action diagnostics). + + + + + This interface is a marker for all the analyzers that are built in. + We will record non-fatal-watson if any analyzer with this interface throws an exception. + + also, built in analyzer can do things that third-party analyzer (command line analyzer) can't do + such as reporting all diagnostic descriptors as hidden when it can return different severity on runtime. + + or reporting diagnostics ID that is not reported by SupportedDiagnostics. + + this interface is used by the engine to allow this special behavior over command line analyzers. + + + + + This category will be used to run analyzer more efficiently by restricting scope of analysis + + + + + This indicates whether this built-in analyzer will only run on opened files. + + + + + What priority this provider should run at. This value is not allowed to be . + + + + + Temporarily stores text and streams in memory mapped files. + + + + + The maximum size in bytes of a single storage unit in a memory mapped file which is shared with other + storage units. + + + This value was arbitrarily chosen and appears to work well. Can be changed if data suggests + something better. + + + + + + The size in bytes of a memory mapped file created to store multiple temporary objects. + + + This value was arbitrarily chosen and appears to work well. Can be changed if data suggests + something better. + + + + + + The synchronization object for accessing the memory mapped file related fields (indicated in the remarks + of each field). + + + PERF DEV NOTE: A concurrent (but complex) implementation of this type with identical semantics is + available in source control history. The use of exclusive locks was not causing any measurable + performance overhead even on 28-thread machines at the time this was written. + + + + + The most recent memory mapped file for creating multiple storage units. It will be used via bump-pointer + allocation until space is no longer available in it. + + + Access should be synchronized on . + + + + The name of the current memory mapped file for multiple storage units. + + Access should be synchronized on . + + + + + The total size of the current memory mapped file for multiple storage units. + + Access should be synchronized on . + + + + + + The offset into the current memory mapped file where the next storage unit can be held. + + + Access should be synchronized on . + + + + + + Allocate shared storage of a specified size. + + + "Small" requests are fulfilled from oversized memory mapped files which support several individual + storage units. Larger requests are allocated in their own memory mapped files. + + The size of the shared storage block to allocate. + A describing the allocated block. + + + + Our own abstraction on top of memory map file so that we can have shared views over mmf files. + Otherwise, each view has minimum size of 64K due to requirement forced by windows. + + most of our view will have short lifetime, but there are cases where view might live a bit longer such as + metadata dll shadow copy. shared view will help those cases. + + + Instances of this class should be disposed when they are no longer needed. After disposing this + instance, it should no longer be used. However, streams obtained through + or will not be invalidated until they are disposed independently (which + may occur before or after the is disposed. + + This class and its nested types have familiar APIs and predictable behavior when used in other code, + but are non-trivial to work on. The implementations of adhere to the best + practices described in + DG + Update: Dispose, Finalization, and Resource Management. Additional notes regarding operating system + behavior leveraged for efficiency are given in comments. + + + + + The memory mapped file. + + + It is possible for the file to be disposed prior to the view and/or the streams which use it. + However, the operating system does not actually close the views which are in use until the file handles + are closed as well, even if the file is disposed first. + + + + + A weak reference to a read-only view for the memory mapped file. + + + This holds a weak counted reference to current , which + allows additional accessors for the same address space to be obtained up until the point when no + external code is using it. When the memory is no longer being used by any + objects, the view of the memory mapped file is unmapped, making the + process address space it previously claimed available for other purposes. If/when it is needed again, a + new view is created. + + This view is read-only, so it is only used by . + + + + + The name of the memory mapped file. + + + + + The offset into the memory mapped file of the region described by the current + . + + + + + The size of the region of the memory mapped file described by the current + . + + + + + Caller is responsible for disposing the returned stream. + multiple call of this will not increase VM. + + + + + Caller is responsible for disposing the returned stream. + multiple call of this will increase VM. + + + + + Run a function which may fail with an if not enough memory is available to + satisfy the request. In this case, a full compacting GC pass is forced and the function is attempted + again. + + + and + will use a native + memory map, which can't trigger a GC. In this case, we'd otherwise crash with OOM, so we don't care + about creating a UI delay with a full forced compacting GC. If it crashes the second try, it means we're + legitimately out of resources. + + The type of argument to pass to the callback. + The type returned by the function. + The function to execute. + The argument to pass to the function. + The value returned by . + + + + Get underlying native memory directly. + + + + + Service used to enable recoverable object caches for a given + + + + + Caches recoverable objects + + Compilations are put into a conditional weak table. + + Recoverable SyntaxTrees implement since they are numerous + and putting them into a conditional weak table greatly increases GC costs in + clr.dll!PromoteDependentHandle. + + + + + If caching is enabled for key, the instance is added to + a conditional weak table. + + It will not be collected until either caching is disabled for the project + or the owner object is collected. + + If caching is not enabled for the project, the instance is added to a fixed-size + cache. + + The instance passed in is always returned + + + + If caching is enabled for key, + will be set to instance. + + The instance passed in is always returned + + + + Workspace service for cache implementations. + + + + + May be raised by a Workspace host when available memory is getting low in order to request + that caches be flushed. + + + + + Extensible document properties specified via a document service. + + + + + The LSP client name that should get the diagnostics produced by this document; any other source + will not show these diagnostics. For example, razor uses this to exclude diagnostics from the error list + so that they can handle the final display. + If null, the diagnostics do not have this special handling. + + + + + excerpt some part of + + + + + return of given and + + the result might not be an exact copy of the given source or contains more then given span + + + + + this mode shows intention not actual behavior. it is up to implementation how to interpret the intention. + + + + + Result of excerpt + + + + + excerpt content + + + + + span on that given got mapped to + + + + + classification information on the + + + + + this excerpt is from + + should be same document in + + + + + span on this excerpt is from + + should be same text span in + + + + + TODO: Merge into . + Used by Razor via IVT. + + + + + document version of + + + + + indicates whether this document supports diagnostics or not + + + + + Empty interface just to mark document services. + + + + + Gets a document specific service provided by the host identified by the service type. + If the host does not provide the service, this method returns null. + + + + + Map spans in a document to other spans even in other document + + this will be used by various features if provided to convert span in one document to other spans. + + for example, it is used to show spans users expect in a razor file rather than spans in + auto generated file that is implementation detail or navigate to the right place rather + than the generated file and etc. + + + + + Whether this span mapping service can handle mapping import directives added to a document. + + + + + Map spans in the document to more appropriate locations + + in current design, this can NOT map a span to a span that is not backed by a file. + for example, roslyn supports someone to have a document that is not backed by a file. and current design doesn't allow + such document to be returned from this API + for example, span on razor secondary buffer document in roslyn solution mapped to a span on razor cshtml file is possible but + a span on razor cshtml file to a span on secondary buffer document is not possible since secondary buffer document is not backed by a file + + Document given spans belong to + Spans in the document + Cancellation token + Return mapped span. order of result should be same as the given span + + + + Result of span mapping + + + + + Path to mapped file + + + + + LinePosition representation of the Span + + + + + Mapped span + + + + + MEF metadata class used to find exports declared for a specific . + + + + + helper type to track whether has been initialized. + + currently, this helper only supports services whose lifetime is same as Host (ex, VS) + + TService for + + + + Workspace kind this event listener is initialized for + + + + + MEF export attribute for + + + one of values from indicating which service this event listener is for + + indicate which workspace kind this event listener is for + + + + provide a way for features to lazily subscribe to a service event for particular workspace + + see for supported services + + + + + provide a way for to mark it as stoppable + + for example, if the service is used for is a disposable + service, the service can call Stop when the service go away + + + + + provide a way for features to lazily subscribe to a service event for particular workspace + + see for supported services + + + + + Ensure is called for the workspace + + + + + list of well known types + + + + + Per language services provided by the host environment. + + + + + The that originated this language service. + + + + + The name of the language + + + + + Gets a language specific service provided by the host identified by the service type. + If the host does not provide the service, this method returns null. + + + + + Gets a language specific service provided by the host identified by the service type. + If the host does not provide the service, this method returns throws . + + + + + A factory for creating compilations instances. + + + + + Services provided by the host environment. + + + + + Creates a new workspace service. + + + + + Per workspace services provided by the host environment. + + + + + The host services this workspace services originated from. + + + + + + The workspace corresponding to this workspace services instantiation + + + + + Gets a workspace specific service provided by the host identified by the service type. + If the host does not provide the service, this method returns null. + + + + + Gets a workspace specific service provided by the host identified by the service type. + If the host does not provide the service, this method throws . + + The host does not provide the service. + + + + Obsolete. Roslyn no longer supports a mechanism to perform arbitrary persistence of data. If such functionality + is needed, consumers are resonsible for providing it themselves with whatever semantics are needed. + + + + + A service for storing information in a temporary location that only lasts for the duration of the process. + + + + + A factory that constructs . + + + + + A list of language names for supported language services. + + + + + Returns true if the language is supported. + + + + + Gets the for the language name. + + Thrown if the language isn't supported. + + + + Finds all language services of the corresponding type across all supported languages that match the filter criteria. + + + + + Empty interface just to mark language services. + + + + + Empty interface just to mark workspace services. + + + + + Use this attribute to declare a implementation for MEF + + + + + file extensions this can handle such as cshtml + + match will be done by + + + + + Use this attribute to declare a implementation for inclusion in a MEF-based workspace. + + + + + The assembly qualified name of the service's type. + + + + + The language that the service is target for; LanguageNames.CSharp, etc. + + + + + The layer that the service is specified for; ServiceLayer.Default, etc. + + + + + Declares a implementation for inclusion in a MEF-based workspace. + + The type that will be used to retrieve the service from a . + The language that the service is target for; LanguageNames.CSharp, etc. + The layer that the service is specified for; ServiceLayer.Default, etc. + + + + Use this attribute to declare a implementation for inclusion in a MEF-based workspace. + + + + + The assembly qualified name of the service's type. + + + + + The language that the service is target for; LanguageNames.CSharp, etc. + + + + + The layer that the service is specified for; ServiceLayer.Default, etc. + + + + + Declares a implementation for inclusion in a MEF-based workspace. + + The type that will be used to retrieve the service from a . + The language that the service is target for; LanguageNames.CSharp, etc. + The layer that the service is specified for; ServiceLayer.Default, etc. + + + + Use this attribute to declare a implementation for inclusion in a MEF-based workspace. + + + + + The assembly qualified name of the service's type. + + + + + The layer that the service is specified for; ServiceLayer.Default, etc. + + + + + Declares a implementation for inclusion in a MEF-based workspace. + + The type that will be used to retrieve the service from a . + The layer that the service is specified for; , etc. + + + + Use this attribute to declare a implementation for inclusion in a MEF-based workspace. + + + + + The assembly qualified name of the service's type. + + + + + The layer that the service is specified for; ServiceLayer.Default, etc. + + + + + Declares a implementation for inclusion in a MEF-based workspace. + + The type that will be used to retrieve the service from a . + The layer or workspace kind that the service is specified for; , etc. + + + + A factory that creates instances of a specific . + + Implement a when you want to provide instances that use other services. + + + + + Creates a new instance. + + The that can be used to access other services. + + + + A factory that creates instances of a specific . + + Implement a when you want to provide instances that use other services. + + + + + Creates a new instance. + Returns null if the service is not applicable to the given workspace. + + The that can be used to access other services. + + + + This delegate allows test code to override the behavior of . + + + + + + Injects replacement behavior for the method. + + + + + The layer of an exported service. + + If there are multiple definitions of a service, the is used to determine which is used. + + + + + Service layer that overrides , and . + + + + + Service layer that overrides , and . + + + + + Service layer that overrides and . + + + + + Service layer that overrides . + + + + + The base service layer. + + + + + MEF metadata class used to find exports declared for a specific file extensions. + + + + + This interface is provided purely to enable some shared logic that handles multiple kinds of + metadata that share the Language property. It should not be used to find exports via MEF, + use LanguageMetadata instead. + + + + + This interface is provided purely to enable some shared logic that handles multiple kinds of + metadata that share the Languages property. It should not be used to find exports via MEF, + use LanguageMetadata instead. + + + + + MEF metadata class used to find exports declared for a specific language. + + + + + MEF metadata class used for finding and exports. + + + + + MEF metadata class used to find exports declared for a specific . + + + + + MEF metadata class used for finding and exports. + + + + + Provides a way to map from an assembly name to the actual path of the .NET Framework + assembly with that name in the context of a specified project. For example, if the + assembly name is "System.Data" then a project targeting .NET 2.0 would resolve this + to a different path than a project targeting .NET 4.5. + + + + + Returns null if the assembly name could not be resolved. + + An optional type name for a type that must + exist in the assembly. + The project context to search within. + The name of the assembly to try to resolve. + + + + A cache for metadata references. + + + + + A collection of references to the same underlying metadata, each with different properties. + + + + + if the data we have for the solution with the given has the + provided . + + + + + if the data we have for the given with the given has the provided . + + + + + if the data we have for the given with the given has the provided . + + + + + Reads the stream for the solution with the given . If + is provided, the persisted checksum must match it. If there is no such stream with that name, or the + checksums do not match, then will be returned. + + + + + Reads the stream for the with the given . If + is provided, the persisted checksum must match it. If there is no such stream with that name, or the + checksums do not match, then will be returned. + + + + + Reads the stream for the with the given . If + is provided, the persisted checksum must match it. If there is no such stream with that name, or the + checksums do not match, then will be returned. + + + + + Reads the stream for the solution with the given . An optional can be provided to store along with the data. This can be used along with ReadStreamAsync + with future reads to ensure the data is only read back if it matches that checksum. + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + + Reads the stream for the with the given . An optional + can be provided to store along with the data. This can be used along with + ReadStreamAsync with future reads to ensure the data is only read back if it matches that checksum. + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + + Reads the stream for the with the given . An optional + can be provided to store along with the data. This can be used along with + ReadStreamAsync with future reads to ensure the data is only read back if it matches that checksum. + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + Instances of support both synchronous and asynchronous disposal. Asynchronous + disposal should always be preferred as the implementation of synchronous disposal may end up blocking the caller + on async work. + + + + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + Configuration of the intended to be used to override behavior in tests. + + + + + Indicates that the client expects the DB to succeed at all work and that it should not ever gracefully fall over. + Should not be set in normal host environments, where it is completely reasonable for things to fail + (for example, if a client asks for a key that hasn't been stored yet). + + + + + Used to ensure that the path components we generate do not contain any characters that might be invalid in a + path. For example, Base64 encoding will use / which is something that we definitely do not want + errantly added to a path. + + + + + Obsolete. Roslyn no longer supports a mechanism to perform arbitrary persistence of data. If such functionality + is needed, consumers are responsible for providing it themselves with whatever semantics are needed. + + + + + provides info on the given file + + this will be used to provide dynamic content such as generated content from cshtml to workspace + we acquire this from exposed from external components such as razor for cshtml + + + + + The path to the generated file. in future, we will use this to get right options from editorconfig + + + + + return for this file + + + + + return to load content for the dynamic file + + + + + True if the source code contained in the document is only used in design-time (e.g. for completion), + but is not passed to the compiler when the containing project is built, e.g. a Razor view. + + + + + return for the content it provided + + + + + Provider for the + + implementer of this service should be pure free-thread meaning it can't switch to UI thread underneath. + otherwise, we can get into dead lock if we wait for the dynamic file info from UI thread + + + + + return for the context given + + this file belongs to + full path to project file (ex, csproj) + full path to non source file (ex, cshtml) + null if this provider can't handle the given file + + + + let provider know certain file has been removed + + this file belongs to + full path to project file (ex, csproj) + full path to non source file (ex, cshtml) + + + + indicate content of a file has updated. the event argument "string" should be same as "filepath" given to + + + + + Provides workspace status + + this is an work in-progress interface, subject to be changed as we work on prototype. + + it can completely removed at the end or new APIs can added and removed as prototype going on + no one except one in the prototype group should use this interface. + + tracking issue - https://github.com/dotnet/roslyn/issues/34415 + + + + + Indicate that status has changed + + + + + Wait until workspace is fully loaded + + unfortunately, some hosts, such as VS, use services (ex, IVsOperationProgressStatusService) that require UI thread to let project system to proceed to next stages. + what that means is that this method should only be used with either await or JTF.Run, it should be never used with Task.Wait otherwise, it can + deadlock + + + + + Indicates whether workspace is fully loaded + + unfortunately, some hosts, such as VS, use services (ex, IVsOperationProgressStatusService) that require UI thread to let project system to proceed to next stages. + what that means is that this method should only be used with either await or JTF.Run, it should be never used with Task.Wait otherwise, it can + deadlock + + + + + Factory service for creating syntax trees. + + + + + A factory that creates either sequential or parallel task schedulers. + + + + + Workspace service that provides instance. + + + + + support direct memory access pointer + + + + + TemporaryStorage can be used to read and write text to a temporary storage location. + + + + + This service allows you to access temporary storage. + + + + + This service allows you to access temporary storage. + + + + + Attach to existing with given name. + + + + + Attach to existing with given name. + + + + + TemporaryStorage can be used to read and write text to a temporary storage location. + + + + + Get name of the temporary storage + + + + + Get offset of the temporary storage + + + + + Get size of the temporary storage + + + + + Represents a which is used to hold data for . + + + + + Gets the value for the property for the + represented by this temporary storage. + + + + + Gets the value for the property for the + represented by this temporary storage. + + + + + Gets the checksum for the represented by this temporary storage. This is equivalent + to calling . + + + + + A factory for creating instances. + + + + + Creates from a stream. + + The stream to read the text from. Must be readable and seekable. The text is read from the start of the stream. + + Specifies an encoding to be used if the actual encoding can't be determined from the stream content (the stream doesn't start with Byte Order Mark). + If not specified auto-detect heuristics are used to determine the encoding. If these heuristics fail the decoding is assumed to be the system encoding. + Note that if the stream starts with Byte Order Mark the value of is ignored. + + Cancellation token. + + The stream content can't be decoded using the specified , or + is null and the stream appears to be a binary file. + + An IO error occurred while reading from the stream. + + + + Creates from a reader with given . + + The to read the text from. + Specifies an encoding for the SourceText. + it could be null. but if null is given, it won't be able to calculate checksum + Cancellation token. + + + + Available in workspaces that accept changes in solution level analyzers. + + + + + This class is a that holds onto a value weakly, + but can save its value and recover it on demand if needed. + + The initial value comes from the specified in the constructor. + Derived types implement SaveAsync and RecoverAsync. + + + + + Override this to save the state of the instance so it can be recovered. + This method will only ever be called once. + + + + + Override this method to implement asynchronous recovery semantics. + This method may be called multiple times. + + + + + Override this method to implement synchronous recovery semantics. + This method may be called multiple times. + + + + + A value source that caches its value weakly once obtained from its source. + The source must allow repeatable accesses. + + + + + Gets extended host language services, which includes language services from . + + + + + This holds onto diagnostics for a specific version of project snapshot + in a way each kind of diagnostics can be queried fast. + + + + + We have this builder to avoid creating collections unnecessarily. + Expectation is that, most of time, most of analyzers doesn't have any diagnostics. so no need to actually create any objects. + + + + + Basically typed tuple. + + + + + Provide a way for users to turn on and off analyzing workspace for compiler diagnostics + + + + + Include syntax errors + + + + + Include semantic errors + + + + + Include script semantic errors + + + + + Calculates distance of two nodes based on their significant parts. + Returns false if the nodes don't have any significant parts and should be compared as a whole. + + + + + Represents an edit operation on a tree or a sequence of nodes. + + Tree node. + + + + Insert: + default(TNode). + + Delete: + Deleted node. + + Move, Update: + Node in the old tree/sequence. + + + + + Insert: + Inserted node. + + Delete: + default(TNode) + + Move, Update: + Node in the new tree/sequence. + + + + + No change. + + + + + Node value was updated. + + + + + Node was inserted. + + + + + Node was deleted. + + + + + Node changed parent. + + + + + Node changed position within its parent. The parent nodes of the old node and the new node are matching. + + + + + Represents a sequence of tree edits. + + + + + Calculates Longest Common Subsequence for immutable arrays. + + + + + Underlying storage for s allocated on . + + + The LCS algorithm allocates s of sizes (3, 2*1 + 1, ..., 2*D + 1), always in this order, + where D is at most the sum of lengths of the compared sequences. + The arrays get pushed on a stack as they are built up, then all consumed in the reverse order (stack pop). + + Since the exact length of each array in the above sequence is known we avoid allocating each individual array. + Instead we allocate a large buffer serving as a a backing storage of a contiguous sequence of arrays + corresponding to stack depths to . + If more storage is needed we chain next large buffer to the previous one in a linked list. + + We pool a few of these linked buffers on to conserve allocations. + + + + + The max stack depth backed by the fist buffer. + Size of the buffer for 100 is ~10K. + For 150 it'd be 91KB, which would be allocated on LOH. + The buffers grow by factor of , so the next buffer will be allocated on LOH. + + + + + Do not pool segments that are too large. + + + + + Calculates Longest Common Subsequence. + + + + + Returns a distance [0..1] of the specified sequences. + The smaller distance the more similar the sequences are. + + + Returns a distance [0..1] of the specified sequences. + The smaller distance the more similar the sequences are. + + + + + Calculates a list of "V arrays" using Eugene W. Myers O(ND) Difference Algorithm + + + + The algorithm was inspired by Myers' Diff Algorithm described in an article by Nicolas Butler: + https://www.codeproject.com/articles/42279/investigating-myers-diff-algorithm-part-of + The author has approved the use of his code from the article under the Apache 2.0 license. + + The algorithm works on an imaginary edit graph for A and B which has a vertex at each point in the grid(i, j), i in [0, lengthA] and j in [0, lengthB]. + The vertices of the edit graph are connected by horizontal, vertical, and diagonal directed edges to form a directed acyclic graph. + Horizontal edges connect each vertex to its right neighbor. + Vertical edges connect each vertex to the neighbor below it. + Diagonal edges connect vertex (i,j) to vertex (i-1,j-1) if (sequenceA[i-1],sequenceB[j-1]) is true. + + Move right along horizontal edge (i-1,j)-(i,j) represents a delete of sequenceA[i-1]. + Move down along vertical edge (i,j-1)-(i,j) represents an insert of sequenceB[j-1]. + Move along diagonal edge (i-1,j-1)-(i,j) represents an match of sequenceA[i-1] to sequenceB[j-1]. + The number of diagonal edges on the path from (0,0) to (lengthA, lengthB) is the length of the longest common sub. + + The function does not actually allocate this graph. Instead it uses Eugene W. Myers' O(ND) Difference Algoritm to calculate a list of "V arrays" and returns it in a Stack. + A "V array" is a list of end points of so called "snakes". + A "snake" is a path with a single horizontal (delete) or vertical (insert) move followed by 0 or more diagonals (matching pairs). + + Unlike the algorithm in the article this implementation stores 'y' indexes and prefers 'right' moves instead of 'down' moves in ambiguous situations + to preserve the behavior of the original diff algorithm (deletes first, inserts after). + + The number of items in the list is the length of the shortest edit script = the number of inserts/edits between the two sequences = D. + The list can be used to determine the matching pairs in the sequences (GetMatchingPairs method) or the full editing script (GetEdits method). + + The algorithm uses O(ND) time and memory where D is the number of delete/inserts and N is the sum of lengths of the two sequences. + + VArrays store just the y index because x can be calculated: x = y + k. + + + + + Calculates longest common substring using Wagner algorithm. + + + + + Returns an edit script (a sequence of edits) that transform subtree + to subtree. + + + + + Returns an edit script (a sequence of edits) that transform a sequence of nodes + to a sequence of nodes . + + or is a null reference. + + + + Represents an edit operation on a sequence of values. + + + + + The kind of edit: , , or . + + + + + Index in the old sequence, or -1 if the edit is insert. + + + + + Index in the new sequence, or -1 if the edit is delete. + + + + + Implements a tree differencing algorithm. + + + Subclasses define relationships among tree nodes, and parameters to the differencing algorithm. + + Tree node. + + + + Returns an edit script that transforms to . + + + + + Returns a match map of descendants to descendants. + + + + + Calculates the distance [0..1] of two nodes. + + + The more similar the nodes the smaller the distance. + + Used to determine whether two nodes of the same label match. + Even if 0 is returned the nodes might be slightly different. + + + + + Returns true if the specified nodes have equal values. + + + Called with matching nodes (, ). + Return true if the values of the nodes are the same, or their difference is not important. + + + + + The number of distinct labels used in the tree. + + + + + Returns an integer label corresponding to the given node. + + Returned value must be within [0, LabelCount). + + + + Returns N > 0 if the node with specified label can't change its N-th ancestor node, zero otherwise. + + + 1st ancestor is the node's parent node. + 2nd ancestor is the node's grandparent node. + etc. + + + + + May return null if the is a leaf. + + + + + Enumerates all descendant nodes of the given node in depth-first prefix order. + + + + + Returns a parent for the specified node. + + + + + Return true if specified nodes belong to the same tree. + + + + + Returns the position of the node. + + + + + This should contain only language-agnostic declarations. Things like record struct should fall under struct, etc. + + + + + Represents a class declaration, including record class declarations in C#. + + + + + Represents a struct declaration, including record struct declarations in C#. + + + + + Represents set accessor declaration of a property, including init accessors in C#. + + + + + An editor for making changes to a document's syntax tree. + + + + + Creates a new instance. + + + + + The specified when the editor was first created. + + + + + The of the original document. + + + + + Returns the changed . + + + + + Adds namespace imports / using directives for namespace references found in the document. + + + + + Adds namespace imports / using directives for namespace references found in the document within the span specified. + + + + + Adds namespace imports / using directives for namespace references found in the document within the sub-trees annotated with the . + + + + + Adds namespace imports / using directives for namespace references found in the document within the spans specified. + + + + + Adds namespace imports / using directives for namespace references found in the document. + + + + + Adds namespace imports / using directives for namespace references found in the document within the span specified. + + + + + Adds namespace imports / using directives for namespace references found in the document within the sub-trees annotated with the . + + + + + Adds namespace imports / using directives for namespace references found in the document within the spans specified. + + + + + Adds namespace imports / using directives for namespace references found in the document. + + + + + Adds namespace imports / using directives for namespace references found in the document within the span specified. + + + + + Adds namespace imports / using directives for namespace references found in the document within the sub-trees annotated with the . + + + + + Adds namespace imports / using directives for namespace references found in the document within the spans specified. + + + + + Looks at the contents of the document for top level identifiers (or existing extension method calls), and + blocks off imports that could potentially bring in a name that would conflict with them. + is the node that the import will be added to. This will either be the + compilation-unit node, or one of the namespace-blocks in the file. + + + + + Checks if the namespace declaration is contained inside, + or any of its ancestor namespaces are the same as + + + + + The name assigned to an implicit (widening) conversion. + + + + + The name assigned to an explicit (narrowing) conversion. + + + + + The name assigned to the Addition operator. + + + + + The name assigned to the BitwiseAnd operator. + + + + + The name assigned to the BitwiseOr operator. + + + + + The name assigned to the Decrement operator. + + + + + The name assigned to the Division operator. + + + + + The name assigned to the Equality operator. + + + + + The name assigned to the ExclusiveOr operator. + + + + + The name assigned to the False operator. + + + + + The name assigned to the GreaterThan operator. + + + + + The name assigned to the GreaterThanOrEqual operator. + + + + + The name assigned to the Increment operator. + + + + + The name assigned to the Inequality operator. + + + + + The name assigned to the LeftShift operator. + + + + + The name assigned to the LessThan operator. + + + + + The name assigned to the LessThanOrEqual operator. + + + + + The name assigned to the LogicalNot operator. + + + + + The name assigned to the Modulus operator. + + + + + The name assigned to the Multiply operator. + + + + + The name assigned to the OnesComplement operator. + + + + + The name assigned to the RightShift operator. + + + + + The name assigned to the Subtraction operator. + + + + + The name assigned to the True operator. + + + + + The name assigned to the UnaryNegation operator. + + + + + The name assigned to the UnaryPlus operator. + + + + + An editor for making changes to multiple documents in a solution. + + + + + The that was specified when the was constructed. + + + + + Gets the for the corresponding . + + + + + Returns the changed . + + + + + An editor for making changes to symbol source declarations. + + + + + Creates a new instance. + + + + + Creates a new instance. + + + + + The original solution. + + + + + The solution with the edits applied. + + + + + The documents changed since the was constructed. + + + + + Gets the current symbol for a source symbol. + + + + + Gets the current declarations for the specified symbol. + + + + + Gets the declaration syntax nodes for a given symbol. + + + + + Gets the best declaration node for adding members. + + + + + An action that make changes to a declaration node within a . + + The to apply edits to. + The declaration to edit. + + + + + An action that make changes to a declaration node within a . + + The to apply edits to. + The declaration to edit. + A cancellation token. + + + + + Enables editing the definition of one of the symbol's declarations. + Partial types and methods may have more than one declaration. + + The symbol to edit. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing the definition of one of the symbol's declarations. + Partial types and methods may have more than one declaration. + + The symbol to edit. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing the definition of one of the symbol's declarations. + Partial types and methods may have more than one declaration. + + The symbol to edit. + A location within one of the symbol's declarations. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing the definition of one of the symbol's declarations. + Partial types and methods may have more than one declaration. + + The symbol to edit. + A location within one of the symbol's declarations. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing the symbol's declaration where the member is also declared. + Partial types and methods may have more than one declaration. + + The symbol to edit. + A symbol whose declaration is contained within one of the primary symbol's declarations. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing the symbol's declaration where the member is also declared. + Partial types and methods may have more than one declaration. + + The symbol to edit. + A symbol whose declaration is contained within one of the primary symbol's declarations. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing all the symbol's declarations. + Partial types and methods may have more than one declaration. + + The symbol to be edited. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing all the symbol's declarations. + Partial types and methods may have more than one declaration. + + The symbol to be edited. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Gets the reference to the declaration of the base or interface type as part of the symbol's declaration. + + + + + Changes the base type of the symbol. + + + + + Changes the base type of the symbol. + + + + + An editor for making changes to a syntax tree. + + + + + Creates a new instance. + + + + + The that was specified when the was constructed. + + + + + A to use to create and change 's. + + + + + Returns the changed root node. + + + + + Makes sure the node is tracked, even if it is not changed. + + + + + Remove the node from the tree. + + The node to remove that currently exists as part of the tree. + + + + Remove the node from the tree. + + The node to remove that currently exists as part of the tree. + Options that affect how node removal works. + + + + Replace the specified node with a node produced by the function. + + The node to replace that already exists in the tree. + A function that computes a replacement node. + The node passed into the compute function includes changes from prior edits. It will not appear as a descendant of the original root. + + + + Replace the specified node with a different node. + + The node to replace that already exists in the tree. + The new node that will be placed into the tree in the existing node's location. + + + + Insert the new nodes before the specified node already existing in the tree. + + The node already existing in the tree that the new nodes will be placed before. This must be a node this is contained within a syntax list. + The nodes to place before the existing node. These nodes must be of a compatible type to be placed in the same list containing the existing node. + + + + Insert the new node before the specified node already existing in the tree. + + The node already existing in the tree that the new nodes will be placed before. This must be a node this is contained within a syntax list. + The node to place before the existing node. This node must be of a compatible type to be placed in the same list containing the existing node. + + + + Insert the new nodes after the specified node already existing in the tree. + + The node already existing in the tree that the new nodes will be placed after. This must be a node this is contained within a syntax list. + The nodes to place after the existing node. These nodes must be of a compatible type to be placed in the same list containing the existing node. + + + + Insert the new node after the specified node already existing in the tree. + + The node already existing in the tree that the new nodes will be placed after. This must be a node this is contained within a syntax list. + The node to place after the existing node. This node must be of a compatible type to be placed in the same list containing the existing node. + + + + A language agnostic factory for creating syntax nodes. + + This API can be used to create language specific syntax nodes that are semantically + similar between languages. + + The trees generated by this API will try to respect user preferences when + possible. For example, generating + will be done in a way such that "this." or "Me." will be simplified according to user + preference if any + overload is called. + + + + + Gets the for the specified language. + + + + + Gets the for the language corresponding to the document. + + + + + Gets the for the language corresponding to the project. + + + + + Returns the node if it is a declaration, the immediate enclosing declaration if one exists, or null. + + + + + Returns the enclosing declaration of the specified kind or null. + + + + + Creates a field declaration. + + + + + Creates a field declaration matching an existing field symbol. + + + + + Creates a field declaration matching an existing field symbol. + + + + + Creates a method declaration. + + + + + Creates a method declaration matching an existing method symbol. + + + + + Creates a method declaration. + + + + + Creates a method declaration matching an existing method symbol. + + + + + Creates a parameter declaration. + + + + + Creates a parameter declaration matching an existing parameter symbol. + + + + + Creates a property declaration. The property will have a get accessor if + is and will have + a set accessor if is . + + + In C# there is a distinction between passing in for or versus + passing in an empty list. will produce an auto-property-accessor + (i.e. get;) whereas an empty list will produce an accessor with an empty block + (i.e. get { }). + + + + + Creates a property declaration using an existing property symbol as a signature. + + + + + Creates an indexer declaration. + + + + + Creates an indexer declaration matching an existing indexer symbol. + + + + + Creates a statement that adds the given handler to the given event. + + + + + Creates a statement that removes the given handler from the given event. + + + + + Creates an event declaration. + + + + + Creates an event declaration from an existing event symbol + + + + + Creates a custom event declaration. + + + + + Creates a custom event declaration from an existing event symbol. + + + + + Creates a constructor declaration. + + + + + Create a constructor declaration using + + + + + Converts method, property and indexer declarations into public interface implementations. + This is equivalent to an implicit C# interface implementation (you can access it via the interface or directly via the named member.) + + + + + Converts method, property and indexer declarations into public interface implementations. + This is equivalent to an implicit C# interface implementation (you can access it via the interface or directly via the named member.) + + + + + Converts method, property and indexer declarations into private interface implementations. + This is equivalent to a C# explicit interface implementation (you can declare it for access via the interface, but cannot call it directly). + + + + + Converts method, property and indexer declarations into private interface implementations. + This is equivalent to a C# explicit interface implementation (you can declare it for access via the interface, but cannot call it directly). + + + + + Creates a class declaration. + + + + + Creates a struct declaration. + + + + + Creates a interface declaration. + + + + + Creates an enum declaration. + + + + + Creates an enum declaration + + + + + Creates an enum member + + + + + Creates a delegate declaration. + + + + + Creates a declaration matching an existing symbol. + + + + + Converts a declaration (method, class, etc) into a declaration with type parameters. + + + + + Converts a declaration (method, class, etc) into a declaration with type parameters. + + + + + Adds a type constraint to a type parameter of a declaration. + + + + + Adds a type constraint to a type parameter of a declaration. + + + + + Adds a type constraint to a type parameter of a declaration. + + + + + Creates a namespace declaration. + + The name of the namespace. + Zero or more namespace or type declarations. + + + + Creates a namespace declaration. + + The name of the namespace. + Zero or more namespace or type declarations. + + + + Creates a namespace declaration. + + The name of the namespace. + Zero or more namespace or type declarations. + + + + Creates a namespace declaration. + + The name of the namespace. + Zero or more namespace or type declarations. + + + + Creates a compilation unit declaration + + Zero or more namespace import, namespace or type declarations. + + + + Creates a compilation unit declaration + + Zero or more namespace import, namespace or type declarations. + + + + Creates a namespace import declaration. + + The name of the namespace being imported. + + + + Creates a namespace import declaration. + + The name of the namespace being imported. + + + + Creates an alias import declaration. + + The name of the alias. + The namespace or type to be aliased. + + + + Creates an alias import declaration. + + The name of the alias. + The namespace or type to be aliased. + + + + Creates an attribute. + + + + + Creates an attribute. + + + + + Creates an attribute. + + + + + Creates an attribute matching existing attribute data. + + + + + Creates an attribute argument. + + + + + Creates an attribute argument. + + + + + Removes all attributes from the declaration, including return attributes. + + + + + Removes comments from leading and trailing trivia, as well + as potentially removing comments from opening and closing tokens. + + + + + Gets the attributes of a declaration, not including the return attributes. + + + + + Creates a new instance of the declaration with the attributes inserted. + + + + + Creates a new instance of the declaration with the attributes inserted. + + + + + Creates a new instance of a declaration with the specified attributes added. + + + + + Creates a new instance of a declaration with the specified attributes added. + + + + + Gets the return attributes from the declaration. + + + + + Creates a new instance of a method declaration with return attributes inserted. + + + + + Creates a new instance of a method declaration with return attributes inserted. + + + + + Creates a new instance of a method declaration with return attributes added. + + + + + Creates a new instance of a method declaration node with return attributes added. + + + + + Gets the attribute arguments for the attribute declaration. + + + + + Creates a new instance of the attribute with the arguments inserted. + + + + + Creates a new instance of the attribute with the arguments added. + + + + + Gets the namespace imports that are part of the declaration. + + + + + Creates a new instance of the declaration with the namespace imports inserted. + + + + + Creates a new instance of the declaration with the namespace imports inserted. + + + + + Creates a new instance of the declaration with the namespace imports added. + + + + + Creates a new instance of the declaration with the namespace imports added. + + + + + Gets the current members of the declaration. + + + + + Creates a new instance of the declaration with the members inserted. + + + + + Creates a new instance of the declaration with the members inserted. + + + + + Creates a new instance of the declaration with the members added to the end. + + + + + Creates a new instance of the declaration with the members added to the end. + + + + + Gets the accessibility of the declaration. + + + + + Changes the accessibility of the declaration. + + + + + Gets the for the declaration. + + + + + Changes the for the declaration. + + + + + Gets the for the declaration. + + + + + Gets the name of the declaration. + + + + + Changes the name of the declaration. + + + + + Gets the type of the declaration. + + + + + Changes the type of the declaration. + + + + + Gets the list of parameters for the declaration. + + + + + Inserts the parameters at the specified index into the declaration. + + + + + Adds the parameters to the declaration. + + + + + Gets the list of switch sections for the statement. + + + + + Inserts the switch sections at the specified index into the statement. + + + + + Adds the switch sections to the statement. + + + + + Gets the expression associated with the declaration. + + + + + Changes the expression associated with the declaration. + + + + + Gets the statements for the body of the declaration. + + + + + Changes the statements for the body of the declaration. + + + + + Gets the accessors for the declaration. + + + + + Gets the accessor of the specified kind for the declaration. + + + + + Creates a new instance of the declaration with the accessors inserted. + + + + + Creates a new instance of the declaration with the accessors added. + + + + + Gets the statements for the body of the get-accessor of the declaration. + + + + + Changes the statements for the body of the get-accessor of the declaration. + + + + + Gets the statements for the body of the set-accessor of the declaration. + + + + + Changes the statements for the body of the set-accessor of the declaration. + + + + + Gets a list of the base and interface types for the declaration. + + + + + Adds a base type to the declaration + + + + + Adds an interface type to the declaration + + + + + Replaces the node in the root's tree with the new node. + + + + + Inserts the new node before the specified declaration. + + + + + Inserts the new node before the specified declaration. + + + + + Removes the node from the sub tree starting at the root. + + + + + Removes the node from the sub tree starting at the root. + + + + + Removes all the declarations from the sub tree starting at the root. + + + + + Creates a new instance of the node with the leading and trailing trivia removed and replaced with elastic markers. + + + + + Creates statement that allows an expression to execute in a statement context. + This is typically an invocation or assignment expression. + + The expression that is to be executed. This is usually a method invocation expression. + + + + Creates a statement that can be used to return a value from a method body. + + An optional expression that can be returned. + + + + Creates a statement that can be used to yield a value from an iterator method. + + An expression that can be yielded. + + + + Creates a statement that can be used to throw an exception. + + An optional expression that can be thrown. + + + + Creates an expression that can be used to throw an exception. + + + + + True if can be used + + + + + if the language requires a + (including ) to be stated when making a + . + if the language allows the type node to be entirely elided. + + + + + Creates a statement that declares a single local variable. + + + + + Creates a statement that declares a single local variable. + + + + + Creates a statement that declares a single local variable. + + + + + Creates a statement that declares a single local variable. + + + + + Creates an if-statement + + A condition expression. + The statements that are executed if the condition is true. + The statements that are executed if the condition is false. + + + + Creates an if statement + + A condition expression. + The statements that are executed if the condition is true. + A single statement that is executed if the condition is false. + + + + Creates a switch statement that branches to individual sections based on the value of the specified expression. + + + + + Creates a switch statement that branches to individual sections based on the value of the specified expression. + + + + + Creates a section for a switch statement. + + + + + Creates a single-case section a switch statement. + + + + + Creates a default section for a switch statement. + + + + + Create a statement that exits a switch statement and continues after it. + + + + + Creates a statement that represents a using-block pattern. + + + + + Creates a statement that represents a using-block pattern. + + + + + Creates a statement that represents a using-block pattern. + + + + + Creates a statement that represents a lock-block pattern. + + + + + Creates a try-catch or try-catch-finally statement. + + + + + Creates a try-catch or try-catch-finally statement. + + + + + Creates a try-finally statement. + + + + + Creates a catch-clause. + + + + + Creates a catch-clause. + + + + + Creates a while-loop statement + + + + + Creates a block of statements. Not supported in VB. + + + + + An expression that represents the default value of a type. + This is typically a null value for reference types or a zero-filled value for value types. + + + + + Creates an expression that denotes the containing method's this-parameter. + + + + + Creates an expression that denotes the containing method's base-parameter. + + + + + Creates a literal expression. This is typically numeric primitives, strings or chars. + + + + + Creates an expression for a typed constant. + + + + + Creates an expression that denotes the boolean false literal. + + + + + Creates an expression that denotes the boolean true literal. + + + + + Creates an expression that denotes the null literal. + + + + + Creates an expression that denotes a simple identifier name. + + + + + + + Creates an expression that denotes a generic identifier name. + + + + + Creates an expression that denotes a generic identifier name. + + + + + Creates an expression that denotes a generic identifier name. + + + + + Creates an expression that denotes a generic identifier name. + + + + + Converts an expression that ends in a name into an expression that ends in a generic name. + If the expression already ends in a generic name, the new type arguments are used instead. + + + + + Converts an expression that ends in a name into an expression that ends in a generic name. + If the expression already ends in a generic name, the new type arguments are used instead. + + + + + Creates a name expression that denotes a qualified name. + The left operand can be any name expression. + The right operand can be either and identifier or generic name. + + + + + Returns a new name node qualified with the 'global' alias ('Global' in VB). + + + + + Creates a name expression from a dotted name string. + + + + + Creates a name that denotes a type or namespace. + + The symbol to create a name for. + + + + + Creates an expression that denotes a type. + + + + + Creates an expression that denotes a type. If addImport is false, + adds a which will prevent any + imports or usings from being added for the type. + + + + + Creates an expression that denotes a special type name. + + + + + Creates an expression that denotes an array type. + + + + + Creates an expression that denotes a nullable type. + + + + + Creates an expression that denotes a tuple type. + + + + + Creates an expression that denotes a tuple type. + + + + + Creates an expression that denotes a tuple type. + + + + + Creates an expression that denotes a tuple element. + + + + + Creates an expression that denotes a tuple element. + + + + + Creates an expression that denotes an assignment from the right argument to left argument. + + + + + Creates an expression that denotes a value-type equality test operation. + + + + + Creates an expression that denotes a reference-type equality test operation. + + + + + Creates an expression that denotes a value-type inequality test operation. + + + + + Creates an expression that denotes a reference-type inequality test operation. + + + + + Creates an expression that denotes a less-than test operation. + + + + + Creates an expression that denotes a less-than-or-equal test operation. + + + + + Creates an expression that denotes a greater-than test operation. + + + + + Creates an expression that denotes a greater-than-or-equal test operation. + + + + + Creates an expression that denotes a unary negation operation. + + + + + Creates an expression that denotes an addition operation. + + + + + Creates an expression that denotes an subtraction operation. + + + + + Creates an expression that denotes a multiplication operation. + + + + + Creates an expression that denotes a division operation. + + + + + Creates an expression that denotes a modulo operation. + + + + + Creates an expression that denotes a bitwise-and operation. + + + + + Creates an expression that denotes a bitwise-or operation. + + + + + Creates an expression that denotes a bitwise-not operation + + + + + Creates an expression that denotes a logical-and operation. + + + + + Creates an expression that denotes a logical-or operation. + + + + + Creates an expression that denotes a logical not operation. + + + + + Creates an expression that denotes a conditional evaluation operation. + + + + + Creates an expression that denotes a conditional access operation. Use and to generate the argument. + + + + + Creates an expression that denotes a member binding operation. + + + + + Creates an expression that denotes an element binding operation. + + + + + Creates an expression that denotes an element binding operation. + + + + + Creates an expression that denotes a coalesce operation. + + + + + Creates a member access expression. + + + + + Creates a member access expression. + + + + + Creates an array creation expression for a single dimensional array of specified size. + + + + + Creates an array creation expression for a single dimensional array with specified initial element values. + + + + + Creates an object creation expression. + + + + + Creates an object creation expression. + + + + + Creates an object creation expression. + + + + + Creates an object creation expression. + + + + + Creates a invocation expression. + + + + + Creates a invocation expression + + + + + Creates a node that is an argument to an invocation. + + + + + Creates a node that is an argument to an invocation. + + + + + Creates a node that is an argument to an invocation. + + + + + Creates an expression that access an element of an array or indexer. + + + + + Creates an expression that access an element of an array or indexer. + + + + + Creates an expression that evaluates to the type at runtime. + + + + + Creates an expression that denotes an is-type-check operation. + + + + + Creates an expression that denotes an is-type-check operation. + + + + + Creates an expression that denotes an try-cast operation. + + + + + Creates an expression that denotes an try-cast operation. + + + + + Creates an expression that denotes a type cast operation. + + + + + Creates an expression that denotes a type cast operation. + + + + + Creates an expression that denotes a type conversion operation. + + + + + Creates an expression that denotes a type conversion operation. + + + + + Creates an expression that declares a value returning lambda expression. + + + + + Creates an expression that declares a void returning lambda expression + + + + + Creates an expression that declares a value returning lambda expression. + + + + + Creates an expression that declares a void returning lambda expression. + + + + + Creates an expression that declares a single parameter value returning lambda expression. + + + + + Creates an expression that declares a single parameter void returning lambda expression. + + + + + Creates an expression that declares a single parameter value returning lambda expression. + + + + + Creates an expression that declares a single parameter void returning lambda expression. + + + + + Creates an expression that declares a zero parameter value returning lambda expression. + + + + + Creates an expression that declares a zero parameter void returning lambda expression. + + + + + Creates an expression that declares a zero parameter value returning lambda expression. + + + + + Creates an expression that declares a zero parameter void returning lambda expression. + + + + + Creates a lambda parameter. + + + + + Creates a lambda parameter. + + + + + Creates an await expression. + + + + + Wraps with parens. + + + + + Creates an nameof expression. + + + + + Creates an tuple expression. + + + + + Parses an expression from string + + + + + Has the reference type constraint (i.e. 'class' constraint in C#) + + + + + Has the value type constraint (i.e. 'struct' constraint in C#) + + + + + Has the constructor constraint (i.e. 'new' constraint in C#) + + + + + Internal extensions to . + + This interface is available in the shared CodeStyle and Workspaces layer to allow + sharing internal generator methods between them. Once the methods are ready to be + made public APIs, they can be moved to . + + + + + Creates a statement that declares a single local variable with an optional initializer. + + + + + Creates a statement that declares a single local variable. + + + + + Wraps with parens. + + + + + Creates a statement that can be used to yield a value from an iterator method. + + An expression that can be yielded. + + + + if the language requires a "TypeExpression" + (including ) to be stated when making a + . + if the language allows the type node to be entirely elided. + + + + + Produces an appropriate TypeSyntax for the given . The + flag controls how this should be created depending on if this node is intended for use in a type-only + context, or an expression-level context. In the former case, both C# and VB will create QualifiedNameSyntax + nodes for dotted type names, whereas in the latter case both languages will create MemberAccessExpressionSyntax + nodes. The final stringified result will be the same in both cases. However, the structure of the trees + will be substantively different, which can impact how the compilation layers analyze the tree and how + transformational passes affect it. + + + Passing in the right value for is necessary for correctness and for use + of compilation (and other) layers in a supported fashion. For example, if a QualifiedTypeSyntax is + sed in a place the compiler would have parsed out a MemberAccessExpression, then it is undefined behavior + what will happen if that tree is passed to any other components. + + + + + Abstract implementation of the C# and VB embedded language providers. + + + + + A 'fallback' embedded language that can classify normal escape sequences in + C# or VB strings if no other embedded languages produce results. + + + + + Services related to a specific embedded language. + + + + + A optional classifier that can produce s for an embedded language string. + + + + + Service that returns all the embedded languages supported. Each embedded language can expose + individual language services through the interface. + + + + + Represents an error in a embedded language snippet. The error contains the message to show + a user as well as the span of the error. This span is in actual user character coordinates. + For example, if the user has the string "...\\p{0}..." then the span of the error would be + for the range of characters for '\\p{0}' (even though the regex engine would only see the \\ + translated as a virtual char to the single \ character. + + + + + Retrieves only nodes, skipping the separator tokens + + + + + Root of the embedded language syntax hierarchy. EmbeddedSyntaxNodes are very similar to + Roslyn Red-Nodes in concept, though there are differences for ease of implementation. + + Similarities: + 1. Fully representative of the original source. All source VirtualChars are contained + in the Regex nodes. + 2. Specific types for Nodes, Tokens and Trivia. + 3. Uniform ways of deconstructing Nodes (i.e. ChildCount + ChildAt). + + Differences: + Note: these differences are not required, and can be changed if felt to be valuable. + 1. No parent pointers. These have not been needed yet. + 2. No Update methods. These have not been needed yet. + 3. No direct ways to get Positions/Spans of node/token/trivia. Instead, that information can + be acquired from the VirtualChars contained within those constructs. This does mean that + an empty node (for example, an empty RegexSequenceNode) effect has no way to simply ascertain + its location. So far that hasn't been a problem. + 4. No null nodes. Haven't been needed so far, and it keeps things extremely simple. For + example where Roslyn might have chosen an optional null child, the Regex hierarchy just + has multiple nodes. For example there are distinct nodes to represent the very similar + {a} {a,} {a,b} constructs. + + + + + Returns the string representation of this node, not including its leading and trailing trivia. + + The string representation of this node, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + + Returns full string representation of this node including its leading and trailing trivia. + + The full string representation of this node including its leading and trailing trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the node to a stringbuilder. + + If false, leading trivia will not be added + If false, trailing trivia will not be added + + + + Returns the value of the token. For example, if the token represents an integer capture, + then this property would return the actual integer. + + + + + Writes the token to a stringbuilder. + + If false, leading trivia will not be added + If false, trailing trivia will not be added + + + + Trivia on an . + + + + + A place for diagnostics to be stored during parsing. Not intended to be accessed + directly. These will be collected and aggregated into + + + + + Returns if the next two characters at tokenText[index] are {{ or + }}. If so, will contain the span of those two characters (based on starting at ). + + + + + Helper to convert simple string literals that escape quotes by doubling them. This is + how normal VB literals and c# verbatim string literals work. + + The start characters string. " in VB and @" in C# + + + + Helper service that takes the raw text of a string token and produces the individual + characters that raw string token represents (i.e. with escapes collapsed). The difference + between this and the result from token.ValueText is that for each collapsed character + returned the original span of text in the original token can be found. i.e. if you had the + following in C#: + + "G\u006fo" + + Then you'd get back: + + 'G' -> [0, 1) 'o' -> [1, 7) 'o' -> [7, 1) + + This allows for embedded language processing that can refer back to the users' original code + instead of the escaped value we're processing. + + + + + Takes in a string token and return the s corresponding to each + char of the tokens . In other words, for each char + in ValueText there will be a VirtualChar in the resultant array. Each VirtualChar will + specify what char the language considers them to represent, as well as the span of text + in the original that the language created that char from. + + For most chars this will be a single character span. i.e. 'c' -> 'c'. However, for + escapes this may be a multi character span. i.e. 'c' -> '\u0063' + + If the token is not a string literal token, or the string literal has any diagnostics on + it, then will be returned. Additionally, because a + VirtualChar can only represent a single char, while some escape sequences represent + multiple chars, will also be returned in those cases. All + these cases could be relaxed in the future. But they greatly simplify the + implementation. + + If this function succeeds, certain invariants will hold. First, each character in the + sequence of characters in .ValueText will become a single + VirtualChar in the result array with a matching property. + Similarly, each VirtualChar's will abut each other, and + the union of all of them will cover the span of the token's + *not* including the start and quotes. + + In essence the VirtualChar array acts as the information explaining how the of the token between the quotes maps to each character in the + token's . + + + + + Produces the appropriate escape version of to be placed in a + normal string literal. For example if is the tab + character, then this would produce t as \t is what would go into a string + literal. + + + + + provides a uniform view of a language's string token characters regardless if they + were written raw in source, or are the production of a language escape sequence. For example, in C#, in a + normal "" string a Tab character can be written either as the raw tab character (value 9 in + ASCII), or as \t. The format is a single character in the source, while the latter is two characters + (\ and t). will represent both, providing the raw + value of 9 as well as what in the original they occupied. + + + A core consumer of this system is the Regex parser. That parser wants to work over an array of characters, + however this array of characters is not the same as the array of characters a user types into a string in C# or + VB. For example In C# someone may write: @"\z". This should appear to the user the same as if they wrote "\\z" + and the same as "\\\u007a". However, as these all have wildly different presentations for the user, there needs + to be a way to map back the characters it sees ( '\' and 'z' ) back to the ranges of characters the user wrote. + + + + + The value of this as a if such a represention is possible. + s can represent Unicode codepoints that can appear in a except for + unpaired surrogates. If an unpaired high or low surrogate character is present, this value will be . The value of this character can be retrieved from + . + + + + + The unpaired high or low surrogate character that was encountered that could not be represented in . If is not , this will be 0. + + + + + The span of characters in the original that represent this . + + + + + Creates a new from the provided . This operation cannot + fail. + + + + + Creates a new from an unpaired high or low surrogate character. This will throw + if is not actually a surrogate character. The resultant + value will be . + + + + + Retrieves the scaler value of this character as an . If this is an unpaired surrogate + character, this will be the value of that surrogate. Otherwise, this will be the value of our . + + + + + Represents the individual characters that raw string token represents (i.e. with escapes collapsed). + The difference between this and the result from token.ValueText is that for each collapsed character + returned the original span of text in the original token can be found. i.e. if you had the + following in C#: + + "G\u006fo" + + Then you'd get back: + + 'G' -> [0, 1) 'o' -> [1, 7) 'o' -> [7, 1) + + This allows for embedded language processing that can refer back to the user's original code + instead of the escaped value we're processing. + + + + + Abstraction over a contiguous chunk of s. This + is used so we can expose s over an + or over a . The latter is especially useful for reducing + memory usage in common cases of string tokens without escapes. + + + + + Thin wrapper over an actual . + This will be the common construct we generate when getting the + for a string token that has escapes in it. + + + + + Represents a on top of a normal + string. This is the common case of the type of the sequence we would + create for a normal string token without any escapes in it. + + + + + The underlying string that we're returning virtual chars from. Note: + this will commonly include things like quote characters. Clients who + do not want that should then ask for an appropriate + back that does not include those characters. + + + + + The actual characters that this is a portion of. + + + + + The portion of that is being exposed. This span + is `[inclusive, exclusive)`. + + + + + Combines two s, producing a final + sequence that points at the same underlying data, but spans from the + start of to the end of . + + + + + Name of the host to be used in error messages (e.g. "Visual Studio"). + + + + + Show global error info. + + this kind error info should be something that affects whole roslyn such as + background compilation is disabled due to memory issue and etc + + + + + Show global info bar + + + + + The name to pattern match against, and to show in a final presentation layer. + + + + + An optional suffix to be shown in a presentation layer appended to . + Can be null. + + + + + Container of the symbol that can be shown in a final presentation layer. + For example, the container of a type "KeyValuePair" might be + "System.Collections.Generic.Dictionary<TKey, TValue>". This can + then be shown with something like "type System.Collections.Generic.Dictionary<TKey, TValue>" + to indicate where the symbol is located. + + + + + Dotted container name of the symbol, used for pattern matching. For example + The fully qualified container of a type "KeyValuePair" would be + "System.Collections.Generic.Dictionary" (note the lack of type parameters). + This way someone can search for "D.KVP" and have the "D" part of the pattern + match against this. This should not be shown in a presentation layer. + + + + + The names directly referenced in source that this type inherits from. + + + + + Provides helper methods for finding dependent projects across a solution that a given symbol can be referenced within. + + + + + This method computes the dependent projects that need to be searched for references of the given . + This computation depends on the given symbol's visibility: + 1) Public: Dependent projects include the symbol definition project and all the referencing projects. + 2) Internal: Dependent projects include the symbol definition project and all the referencing projects that have internals access to the definition project. + 3) Private: Dependent projects include the symbol definition project and all the referencing submission projects (which are special and can reference private fields of the previous submission). + + We perform this computation in two stages: + 1) Compute all the dependent projects (submission + non-submission) and their InternalsVisibleTo semantics to the definition project. + 2) Filter the above computed dependent projects based on symbol visibility. + Dependent projects computed in stage (1) are cached to avoid recomputation. + + + + + Returns a pair of data bout where originates from. It's for both source and metadata symbols, and an optional if this + was a symbol from source. + + + + + Provides helper methods for finding dependent types (derivations, implementations, etc.) across a solution. This + is effectively a graph walk between INamedTypeSymbols walking down the inheritance hierarchy to find related + types based either on or . + + + While walking up the inheritance hierarchy is trivial (as the information is directly contained on the 's themselves), walking down is complicated. The general way this works is by using + out-of-band indices that are built that store this type information in a weak manner. Specifically, for both + source and metadata types we have indices that map between the base type name and the inherited type name. i.e. + for the case class A { } class B : A { } the index stores a link saying "There is a type 'A' somewhere + which has derived type called 'B' somewhere". So when the index is examined for the name 'A', it will say + 'examine types called 'B' to see if they're an actual match'. + + These links are then continually traversed to get the full set of results. + + + + + Walks down a 's inheritance tree looking for more 's + that match the provided predicate. + + Called when a new match is found to check if that type's inheritance + tree should also be walked down. Can be used to stop the search early if a type could have no types that + inherit from it that would match this search. + If this search after finding the direct inherited types that match the provided + predicate, or if the search should continue recursively using those types as the starting point. + + + + Moves all the types in to . If these are types we + haven't seen before, and the caller says we on them, then add + them to for the next round of searching. + + + + + Finds all the documents in the provided project that contain the requested string + values + + + + + Finds all the documents in the provided project that contain a global attribute in them. + + + + + If the `node` implicitly matches the `symbol`, then it will be added to `locations`. + + + + + Find references to a symbol inside global suppressions. + For example, consider a field 'Field' defined inside a type 'C'. + This field's documentation comment ID is 'F:C.Field' + A reference to this field inside a global suppression would be as following: + [assembly: SuppressMessage("RuleCategory", "RuleId', Scope = "member", Target = "~F:C.Field")] + + + + + Validate and split a documentation comment ID into a prefix and complete symbol ID. For the + ~M:C.X(System.String), the would be + ~M: and would be C.X(System.String). + + + + + Split a full documentation symbol ID into the core symbol ID and optional parameter list. For the + C.X(System.String), the would be + C.X and would be (System.String). + + + + + Validate and split symbol documentation comment ID. + For example, "~M:C.X(System.String)" represents the documentation comment ID of a method named 'X' + that takes a single string-typed parameter and is contained in a type named 'C'. + + We divide the ID into 3 groups: + 1. Prefix: + - Starts with an optional '~' + - Followed by a single capital letter indicating the symbol kind (for example, 'M' indicates method symbol) + - Followed by ':' + 2. Core symbol ID, which is its fully qualified name before the optional parameter list and return type (i.e. before the '(' or '[' tokens) + 3. Optional parameter list and/or return type that begins with a '(' or '[' tokens. + + For the above example, "~M:" is the prefix, "C.X" is the core symbol ID and "(System.String)" is the parameter list. + + + + + Finds references to in this , but + only if it referenced though (which might be the actual name + of the type, or a global alias to it). + + + + + The actual node that we found the reference on. Normally the 'Name' portion + of any piece of syntax. Might also be something like a 'foreach' statement node + when finding results for something like GetEnumerator. + + + + + The location we want want to return through the FindRefs API. The location contains + additional information (like if this was a Write, or if it was Implicit). This value + also has a property. Importantly, this value + is not necessarily the same location you would get by calling .. Instead, this location is where we want to navigate + the user to. A case where this can be different is with an indexer reference. The will be the node for the full 'ElementAccessExpression', whereas the + location we will take the user to will be the zero-length position immediately preceding + the `[` character. + + + + + Extensibility interface to allow individual languages to extend the 'Find References' service. + Languages can use this to provide specialized cascading logic between symbols that 'Find + References' is searching for. + + + + + Extensibility interface to allow extending the IFindReferencesService service. Implementations + must be thread-safe as the methods on this interface may be called on multiple threads + simultaneously. Implementations should also respect the provided cancellation token and + should try to cancel themselves quickly when requested. + + + + + Determines what, if any, global alias names could potentially map this symbol in this project. + Note that this result is allowed to return global aliases that don't actually map to this symbol. + For example, given symbol A.X and global alias G = B.X, G might be returned + in a search for A.X because they both end in X. + + + + + Called by the find references search engine when a new symbol definition is found. + Implementations can then choose to request more symbols be searched for. For example, an + implementation could choose for the find references search engine to cascade to + constructors when searching for standard types. + + Implementations of this method must be thread-safe. + + + + + Called by the find references search engine to determine which documents in the supplied + project need to be searched for references. Only projects returned by + DetermineProjectsToSearch will be passed to this method. + + Implementations should endeavor to keep the list of returned documents as small as + possible to keep search time down to a minimum. Returning the entire list of documents + in a project is not recommended (unless, of course, there is reasonable reason to + believe there are references in every document). + + Implementations of this method must be thread-safe. + + + + + Called by the find references search engine to determine the set of reference locations + in the provided document. Only documents returned by DetermineDocumentsToSearch will be + passed to this method. + + Implementations of this method must be thread-safe. + + + + + Looks for documents likely containing in them. That name will either be the actual + name of the named type we're looking for, or it might be a global alias to it. + + + + + Finds references to in this , but + only if it referenced though (which might be the actual name + of the type, or a global alias to it). + + + + + Finds references to in this , but + only if it referenced though (which might be the actual name + of the type, or a global alias to it). + + + + + The list of common reference finders. + + + + + A does-nothing version of the . Useful for + clients that have no need to report progress as they work. + + + + + Symbol set used when is . This symbol set will cascade up *and* down the inheritance hierarchy for all symbols we + are searching for. This is the symbol set used for features like 'Rename', where all cascaded symbols must + be updated in order to keep the code compiling. + + + + + When we're cascading in both direction, we can just keep all symbols in a single set. We'll always be + examining all of them to go in both up and down directions in every project we process. Any time we + add a new symbol to it we'll continue to cascade in both directions looking for more. + + + + + Scheduler to run our tasks on. If we're in mode, we'll + run all our tasks concurrently. Otherwise, we will run them serially using + + + + + Mapping from symbols (unified across metadata/retargeting) and the set of symbols that was produced for + them in the case of linked files across projects. This allows references to be found to any of the unified + symbols, while the user only gets a single reported group back that corresponds to that entire set. + + + + + Notify the caller of the engine about the definitions we've found that we're looking for. We'll only notify + them once per symbol group, but we may have to notify about new symbols each time we expand our symbol set + when we walk into a new project. + + + + + A symbol set used when the find refs caller does not want cascading. This is a trivial impl that basically + just wraps the initial symbol provided and doesn't need to do anything beyond that. + + + + + Represents the set of symbols that the engine is searching for. While the find-refs engine is passed an + initial symbol to find results for, the engine will often have to 'cascade' that symbol to many more symbols + that clients will also need. This includes: + + Cascading to all linked symbols for the requested symbol. This ensures a unified set of results for a + particular symbol, regardless of what project context it was originally found in. + Symbol specific cascading. For example, when searching for a named type, references to that named + type will be found through its constructors. + Cascading up and down the inheritance hierarchy for members (e.g. methods, properties, events). This + is controllable through the + option. + + + + + + Get a copy of all the symbols in the set. Cannot be called concurrently with + + + + + Update the set of symbols in this set with any appropriate symbols in the inheritance hierarchy brought + in within . For example, given a project 'A' with interface interface IGoo + { void Goo(); }, and a project 'B' with class class Goo : IGoo { public void Goo() { } }, + then initially the symbol set will only contain IGoo.Goo. However, when project 'B' is processed, this + will add Goo.Goo is added to the set as well so that references to it can be found. + + + This method is non threadsafe as it mutates the symbol set instance. As such, it should only be + called serially. should not be called concurrently with this. + + + + + Determines the initial set of symbols that we should actually be finding references for given a request + to find refs to . This will include any symbols that a specific cascades to, as well as all the linked symbols to those across any + multi-targetting/shared-project documents. This will not include symbols up or down the inheritance + hierarchy. + + + + + Finds all the symbols 'down' the inheritance hierarchy of in the given + project. The symbols found are added to . If did not + contain that symbol, then it is also added to to allow fixed point + algorithms to continue. + + will always be a single project. We just pass this in as a set to + avoid allocating a fresh set every time this calls into FindMemberImplementationsArrayAsync. + + + + + Finds all the symbols 'up' the inheritance hierarchy of in the solution. The + symbols found are added to . If did not contain that symbol, + then it is also added to to allow fixed point algorithms to continue. + + + + + Symbol set used when is . This symbol set will only cascade in a uniform direction once it walks either up or down + from the initial set of symbols. This is the symbol set used for features like 'Find Refs', where we only + want to return location results for members that could feasible actually end up calling into that member at + runtime. See the docs of for more + information on this. + + + + + When we're doing a unidirectional find-references, the initial set of up-symbols can never change. + That's because we have computed the up set entirely up front, and no down symbols can produce new + up-symbols (as going down then up would not be unidirectional). + + + + + When searching for property, associate specific references we find to the relevant + accessor symbol (if there is one). For example, in C#, this would result in: + + P = 0; // A reference to the P.set accessor + var v = P; // A reference to the P.get accessor + P++; // A reference to P.get and P.set accessors + nameof(P); // A reference only to P. Not associated with a particular accessor. + + The default for this is false. With that default, all of the above references + are associated with the property P and not the accessors. + + + + + Whether or not we should cascade from the original search symbol to new symbols as we're + doing the find-references search. + + + + + Whether or not this find ref operation was explicitly invoked or not. If explicit invoked, the find + references operation may use more resources to get the results faster. + + + Features that run automatically should consider setting this to to avoid + unnecessarily impacting the user while they are doing other work. + + + + + When cascading if we should only travel in a consistent direction away from the starting symbol. For + example, starting on a virtual method, this would cascade upwards to implemented interface methods, and + downwards to overridden methods. However, it would not then travel back down to other implementations of + those interface methods. This is useful for cases where the client only wants references that could lead to + this symbol actually being called into at runtime. + + + There are cases where a client will not want this behavior. An example of that is 'Rename'. In rename, + there is a implicit link between members in a hierarchy with the same name (and appropriate signature). For example, in: + + + interface I { void Goo(); } + class C1 : I { public void Goo() { } } + class C2 : I { public void Goo() { } } + + + If C1.Goo is renamed, this will need to rename C2.Goo as well to keep the code properly + compiling. So, by default 'Rename' will cascade to all of these so it can appropriately update them. This + option is the more relevant with knowing if a particular reference would actually result in a call to the + original member, not if it has a relation to the original member. + + + + + Returns the appropriate options for a given symbol for the specific 'Find References' feature. This should + not be used for other features (like 'Rename'). For the 'Find References' feature, if the user starts + searching on an accessor, then we want to give results associated with the specific accessor. Otherwise, if + they search on a property, then associate everything with the property. We also only want to travel an + inheritance hierarchy unidirectionally so that we only see potential references that could actually reach + this particular member. + + + + + A does-nothing version of the . Useful for + clients that have no need to report progress as they work. + + + + + Wraps an into an + so it can be used from the new streaming find references APIs. + + + + + Reports the progress of the FindReferences operation. Note: these methods may be called on + any thread. + + + + + Represents a group of s that should be treated as a single entity for + the purposes of presentation in a Find UI. For example, when a symbol is defined in a file + that is linked into multiple project contexts, there will be several unique symbols created + that we search for. Placing these in a group allows the final consumer to know that these + symbols can be merged together. + + + + + All the symbols in the group. + + + + + Reports the progress of the FindReferences operation. Note: these methods may be called on + any thread. + + + + + Represents a single result of the call to the synchronous + IFindReferencesService.FindReferences method. Finding the references to a symbol will result + in a set of definitions being returned (containing at least the symbol requested) as well as + any references to those definitions in the source. Multiple definitions may be found due to + how C# and VB allow a symbol to be both a definition and a reference at the same time (for + example, a method which implements an interface method). + + + + + The symbol definition that these are references to. + + + + + Same as but exposed as an for performance. + + + + + The set of reference locations in the solution. + + + + + Information about a reference to a symbol. + + + + + The document that the reference was found in. + + + + + If the symbol was bound through an alias, then this is the alias that was used. + + + + + The actual source location for a given symbol. + + + + + Indicates if this is an implicit reference to the definition. i.e. the definition wasn't + explicitly stated in the source code at this position, but it was still referenced. For + example, this can happen with special methods like GetEnumerator that are used + implicitly by a 'for each' statement. + + + + + Indicates if this is a location where the reference is written to. + + + + + Symbol usage info for this reference. + + + + + Additional properties for this reference + + + + + If this reference location is within a string literal, then this property + indicates the location of the containing string literal token. + Otherwise, . + + + + + Creates a reference location with the given properties. + + + + + Creates a reference location within a string literal. + For example, location inside the target string of a global SuppressMessageAttribute. + + + + + Indicates if this was not an exact reference to a location, but was instead a possible + location that was found through error tolerance. For example, a call to a method like + "Goo()" could show up as an error tolerance location to a method "Goo(int i)" if no + actual "Goo()" method existed. + + + + + Use an case-sensitive comparison when searching for matching items. + + + + + Use a case-insensitive comparison when searching for matching items. + + + + + Use a fuzzy comparison when searching for matching items. Fuzzy matching allows for + a certain amount of misspellings, missing words, etc. See for + more details. + + + + + Search term is matched in a custom manner (i.e. with a user provided predicate). + + + + The name being searched for. Is null in the case of custom predicate searching.. But + can be used for faster index based searching when it is available. + + + The kind of search this is. Faster index-based searching can be used if the + SearchKind is not . + + + The predicate to fall back on if faster index searching is not possible. + + + + Collects all the definitions and + references that are reported independently and packages them up into the final list + of . This is used by the old non-streaming Find-References + APIs to return all the results at the end of the operation, as opposed to broadcasting + the results as they are found. + + + + + Contains information about a call from one symbol to another. The symbol making the call is + stored in CallingSymbol and the symbol that the call was made to is stored in CalledSymbol. + Whether or not the call is direct or indirect is also stored. A direct call is a call that + does not go through any other symbols in the inheritance hierarchy of CalledSymbol, while an + indirect call does go through the inheritance hierarchy. For example, calls through a base + member that this symbol overrides, or through an interface member that this symbol + implements will be considered 'indirect'. + + + + + The symbol that is calling the symbol being called. + + + + + The locations inside the calling symbol where the called symbol is referenced. + + + + + The symbol being called. + + + + + True if the CallingSymbol is directly calling CalledSymbol. False if it is calling a + symbol in the inheritance hierarchy of the CalledSymbol. For example, if the called + symbol is a class method, then an indirect call might be through an interface method that + the class method implements. + + + + + Obsolete. Use . + + + + + Finds the symbol that is associated with a position in the text of a document. + + The semantic model associated with the document. + The character position within the document. + A workspace to provide context. + A CancellationToken. + + + + Finds the definition symbol declared in source code for a corresponding reference symbol. + Returns null if no such symbol can be found in the specified solution. + + + + + Finds symbols in the given compilation that are similar to the specified symbol. + + A found symbol may be the exact same symbol instance if the compilation is the origin of the specified symbol, + or it may be a different symbol instance if the compilation is not the originating compilation. + + Multiple symbols may be returned if there are ambiguous matches. + No symbols may be returned if the compilation does not define or have access to a similar symbol. + + The symbol to find corresponding matches for. + A compilation to find the corresponding symbol within. The compilation may or may not be the origin of the symbol. + A CancellationToken. + + + + + If is declared in a linked file, then this function returns all the symbols that + are defined by the same symbol's syntax in the all projects that the linked file is referenced from. + + In order to be returned the other symbols must have the same and as . This matches general user intuition that these are all + the 'same' symbol, and should be examined, regardless of the project context and they + originally started with. + + + + + Callback object we pass to the OOP server to hear about the result + of the FindReferencesEngine as it executes there. + + + + + Finds all the callers of a specified symbol. + + + + + Finds all the callers of a specified symbol. + + + + + Find the declared symbols from either source, referenced projects or metadata assemblies with the specified name. + + + + + Find the declared symbols from either source, referenced projects or metadata assemblies with the specified name. + + + + + Find the symbols for declarations made in source with a matching name. + + + + + Find the symbols for declarations made in source with a matching name. + + + + + Find the symbols for declarations made in source with a matching name. + + + + + Find the symbols for declarations made in source with a matching name. + + + + + Find the symbols for declarations made in source with the specified name. + + + + + Find the symbols for declarations made in source with the specified name. + + + + + Find the symbols for declarations made in source with the specified name. + + + + + Find the symbols for declarations made in source with the specified name. + + + + + Find the symbols for declarations made in source with the specified pattern. This pattern is matched + using heuristics that may change from release to release. So, the set of symbols matched by a given + pattern may change between releases. For example, new symbols may be matched by a pattern and/or + symbols previously matched by a pattern no longer are. However, the set of symbols matched by a + specific release will be consistent for a specific pattern. + + + + + Find the symbols for declarations made in source with the specified pattern. This pattern is matched + using heuristics that may change from release to release. So, the set of symbols matched by a given + pattern may change between releases. For example, new symbols may be matched by a pattern and/or + symbols previously matched by a pattern no longer are. However, the set of symbols matched by a + specific release will be consistent for a specific pattern. + + + + + Find the symbols for declarations made in source with the specified pattern. This pattern is matched + using heuristics that may change from release to release. So, the set of symbols matched by a given + pattern may change between releases. For example, new symbols may be matched by a pattern and/or + symbols previously matched by a pattern no longer are. However, the set of symbols matched by a + specific release will be consistent for a specific pattern. + + + + + Find the symbols for declarations made in source with the specified pattern. This pattern is matched + using heuristics that may change from release to release. So, the set of symbols matched by a given + pattern may change between releases. For example, new symbols may be matched by a pattern and/or + symbols previously matched by a pattern no longer are. However, the set of symbols matched by a + specific release will be consistent for a specific pattern. + + + + + Finds all references to a symbol throughout a solution + + The symbol to find references to. + The solution to find references within. + A cancellation token. + + + + Finds all references to a symbol throughout a solution + + The symbol to find references to. + The solution to find references within. + A set of documents to be searched. If documents is null, then that means "all documents". + A cancellation token. + + + + Finds all references to a symbol throughout a solution + + The symbol to find references to. + The solution to find references within. + An optional progress object that will receive progress + information as the search is undertaken. + An optional set of documents to be searched. If documents is null, then that means "all documents". + An optional cancellation token. + + + + Verifies that all pairs of named types in equivalentTypesWithDifferingAssemblies are equivalent forwarded types. + + + + + Returns if was forwarded to in + 's . + + + + + Find symbols for members that override the specified member symbol. + + + + + + Use this overload to avoid boxing the result into an . + + + + + Find symbols for declarations that implement members of the specified interface symbol + + + + + + Use this overload to avoid boxing the result into an . + + + + + Finds all the derived classes of the given type. Implementations of an interface are not considered + "derived", but can be found with . + + The symbol to find derived types of. + The solution to search in. + The projects to search. Can be null to search the entire solution. + + The derived types of the symbol. The symbol passed in is not included in this list. + + + + Finds the derived classes of the given type. Implementations of an interface are not considered + "derived", but can be found with . + + The symbol to find derived types of. + The solution to search in. + If the search should stop at immediately derived classes, or should continue past that. + The projects to search. Can be null to search the entire solution. + + The derived types of the symbol. The symbol passed in is not included in this list. + + + + Use this overload to avoid boxing the result into an . + + + + Finds the derived interfaces of the given interfaces. + + The symbol to find derived types of. + The solution to search in. + If the search should stop at immediately derived interfaces, or should continue past that. + The projects to search. Can be null to search the entire solution. + The derived interfaces of the symbol. The symbol passed in is not included in this list. + + + + Use this overload to avoid boxing the result into an . + + + + Finds the accessible or types that implement the given + interface. + + The symbol to find derived types of. + The solution to search in. + If the search should stop at immediately derived interfaces, or should continue past that. + The projects to search. Can be null to search the entire solution. + + + + Use this overload to avoid boxing the result into an . + + + + Finds all the accessible symbols that implement an interface or interface member. For an this will be both immediate and transitive implementations. + + + + + + Use this overload to avoid boxing the result into an . + + + + + Returns null if the info cannot be retrieved from the cache. + + + + + Returns null if the info cannot be retrieved from the cache. + + + + + The list of nodes that represent symbols. The primary key into the sorting of this + list is the name. They are sorted case-insensitively with the . + Finding case-sensitive matches can be found by binary searching for something that + matches insensitively, and then searching around that equivalence class for one that + matches. + + + + + Inheritance information for the types in this assembly. The mapping is between + a type's simple name (like 'IDictionary') and the simple metadata names of types + that implement it or derive from it (like 'Dictionary'). + + Note: to save space, all names in this map are stored with simple ints. These + ints are the indices into _nodes that contain the nodes with the appropriate name. + + This mapping is only produced for metadata assemblies. + + + + + Maps the name of receiver type name to its . + for the definition of simple/complex methods. + For non-array simple types, the receiver type name would be its metadata name, e.g. "Int32". + For any array types with simple type as element, the receiver type name would be just "ElementTypeName[]", e.g. "Int32[]" for int[][,] + For non-array complex types, the receiver type name is "". + For any array types with complex type as element, the receier type name is "[]" + + + + + The task that produces the spell checker we use for fuzzy match queries. + We use a task so that we can generate the + without having to wait for the spell checker construction to finish. + + Features that don't need fuzzy matching don't want to incur the cost of + the creation of this value. And the only feature which does want fuzzy + matching (add-using) doesn't want to block waiting for the value to be + created. + + + + + Finds symbols in this assembly that match the provided name in a fuzzy manner. + + + + + Get all symbols that have a name matching the specified name. + + + + + Gets all the node indices with matching names per the . + + + + + Searches for a name in the ordered list that matches per the . + + + + + Cache the symbol tree infos for assembly symbols that share the same underlying metadata. Generating symbol + trees for metadata can be expensive (in large metadata cases). And it's common for us to have many threads + to want to search the same metadata simultaneously. As such, we use an AsyncLazy to compute the value that + can be shared among all callers. + + + + + Used to produce the simple-full-name components of a type from metadata. + The name is 'simple' in that it does not contain things like backticks, + generic arguments, or nested type + separators. Instead just hte name + of the type, any containing types, and the component parts of its namespace + are added. For example, for the type "X.Y.O`1.I`2, we will produce [X, Y, O, I] + + + + + + s are produced when initially creating our indices. + They store Names of symbols and the index of their parent symbol. When we + produce the final though we will then convert + these to s. + + + + + The Name of this Node. + + + + + Index in of the parent Node of this Node. + Value will be if this is the + Node corresponding to the root symbol. + + + + + This is the type name of the parameter when is false. + For array types, this is just the elemtent type name. + e.g. `int` for `int[][,]` + + + + + Indicate if the type of parameter is any kind of array. + This is relevant for both simple and complex types. For example: + - array of simple type like int[], int[][], int[][,], etc. are all ultimately represented as "int[]" in index. + - array of complex type like T[], T[][], etc are all represented as "[]" in index, + in contrast to just "" for non-array types. + + + + + Similar to , we divide extension methods into simple + and complex categories for filtering purpose. Whether a method is simple is determined based on if we + can determine it's receiver type easily with a pure text matching. For complex methods, we will need to + rely on symbol to decide if it's feasible. + + Simple types include: + - Primitive types + - Types which is not a generic method parameter + - By reference type of any types above + - Array types with element of any types above + + + + + Name of the extension method. + This can be used to retrive corresponding symbols via + + + + + Fully qualified name for the type that contains this extension method. + + + + + Produces a for a given . + Note: will never return null; + + + + + Only applies to member kind. Represents the type info of the first parameter. + + + + + Loads the SpellChecker for a given assembly symbol (metadata or project). If the + info can't be loaded, it will be created (and persisted if possible). + + + + + Generalized function for loading/creating/persisting data. Used as the common core + code for serialization of SymbolTreeInfos and SpellCheckers. + + + + + Cache of project to the checksum for it so that we don't have to expensively recompute + this each time we get a project. + + + + + Name of the extension method's receiver type to the index of its DeclaredSymbolInfo in `_declarationInfo`. + + For simple types, the receiver type name is it's metadata name. All predefined types are converted to its metadata form. + e.g. int => Int32. For generic types, type parameters are ignored. + + For complex types, the receiver type name is "". + + For any kind of array types, it's "{element's receiver type name}[]". + e.g. + int[][,] => "Int32[]" + T (where T is a type parameter) => "" + T[,] (where T is a type parameter) => "T[]" + + + + + Returns true when the identifier is probably (but not guaranteed) to be within the + syntax tree. Returns false when the identifier is guaranteed to not be within the + syntax tree. + + + + + Returns true when the identifier is probably (but not guaranteed) escaped within the + text of the syntax tree. Returns false when the identifier is guaranteed to not be + escaped within the text of the syntax tree. An identifier that is not escaped within + the text can be found by searching the text directly. An identifier that is escaped can + only be found by parsing the text and syntactically interpreting any escaping + mechanisms found in the language ("\uXXXX" or "@XXXX" in C# or "[XXXX]" in Visual + Basic). + + + + + Returns true when the identifier is probably (but not guaranteed) to be within the + syntax tree. Returns false when the identifier is guaranteed to not be within the + syntax tree. + + + + + String interning table so that we can share many more strings in our DeclaredSymbolInfo + buckets. Keyed off a Project instance so that we share all these strings as we create + the or load the index items for this a specific Project. This helps as we will generally + be creating or loading all the index items for the documents in a Project at the same time. + Once this project is let go of (which happens with any solution change) then we'll dump + this string table. The table will have already served its purpose at that point and + doesn't need to be kept around further. + + + + + Same as , just stored as a set for easy containment checks. + + + + + Gets the set of global aliases that point to something with the provided name and arity. + For example of there is global alias X = A.B.C<int>, then looking up with + name="C" and arity=1 will return X. + + + + + Base implementation of C# and VB formatting services. + + + + + Formats whitespace in documents or syntax trees. + + + + + The annotation used to mark portions of a syntax tree to be formatted. + + + + + Gets the formatting rules that would be applied if left unspecified. + + + + + Gets the formatting rules that would be applied if left unspecified. + + + + + Formats the whitespace in a document. + + The document to format. + An optional set of formatting options. If these options are not supplied the current set of options from the document's workspace will be used. + An optional cancellation token. + The formatted document. + + + + Formats the whitespace in an area of a document corresponding to a text span. + + The document to format. + The span of the document's text to format. + An optional set of formatting options. If these options are not supplied the current set of options from the document's workspace will be used. + An optional cancellation token. + The formatted document. + + + + Formats the whitespace in areas of a document corresponding to multiple non-overlapping spans. + + The document to format. + The spans of the document's text to format. + An optional set of formatting options. If these options are not supplied the current set of options from the document's workspace will be used. + An optional cancellation token. + The formatted document. + + + + Formats the whitespace in areas of a document corresponding to annotated nodes. + + The document to format. + The annotation used to find on nodes to identify spans to format. + An optional set of formatting options. If these options are not supplied the current set of options from the document's workspace will be used. + An optional cancellation token. + The formatted document. + + + + Formats the whitespace in areas of a syntax tree corresponding to annotated nodes. + + The root node of a syntax tree to format. + The annotation used to find nodes to identify spans to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The formatted tree's root node. + + + + Formats the whitespace of a syntax tree. + + The root node of a syntax tree to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The formatted tree's root node. + + + + Formats the whitespace in areas of a syntax tree identified by a span. + + The root node of a syntax tree to format. + The span within the node's full span to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The formatted tree's root node. + + + + Formats the whitespace in areas of a syntax tree identified by multiple non-overlapping spans. + + The root node of a syntax tree to format. + The spans within the node's full span to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The formatted tree's root node. + + + + Determines the changes necessary to format the whitespace of a syntax tree. + + The root node of a syntax tree to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The changes necessary to format the tree. + + + + Determines the changes necessary to format the whitespace of a syntax tree. + + The root node of a syntax tree to format. + The span within the node's full span to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The changes necessary to format the tree. + + + + Determines the changes necessary to format the whitespace of a syntax tree. + + The root node of a syntax tree to format. + The spans within the node's full span to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The changes necessary to format the tree. + + + + Organizes the imports in the document. + + The document to organize. + The cancellation token that the operation will observe. + The document with organized imports. If the language does not support organizing imports, or if no changes were made, this method returns . + + + + Solution-wide formatting options. + + + + + Default value of 120 was picked based on the amount of code in a github.com diff at 1080p. + That resolution is the most common value as per the last DevDiv survey as well as the latest + Steam hardware survey. This also seems to a reasonable length default in that shorter + lengths can often feel too cramped for .NET languages, which are often starting with a + default indentation of at least 16 (for namespace, class, member, plus the final construct + indentation). + + TODO: Currently the option has no storage and always has its default value. See https://github.com/dotnet/roslyn/pull/30422#issuecomment-436118696. + + + + + TODO: Currently the option has no storage and always has its default value. + + + + + + + + + + + + + + + + + + + + + + + Formats the whitespace in areas of a document corresponding to multiple non-overlapping spans. + + The document to format. + The spans of the document's text to format. If null, the entire document should be formatted. + An optional set of formatting options. If these options are not supplied the current set of options from the document's workspace will be used. + An optional cancellation token. + The formatted document. + + + + Provide a custom formatting operation provider that can intercept/filter/replace default formatting operations. + + All methods defined in this class can be called concurrently. Must be thread-safe. + + + + Returns SuppressWrappingIfOnSingleLineOperations under a node either by itself or by + filtering/replacing operations returned by NextOperation + + + + + returns AnchorIndentationOperations under a node either by itself or by filtering/replacing operations returned by NextOperation + + + + + returns IndentBlockOperations under a node either by itself or by filtering/replacing operations returned by NextOperation + + + + + returns AlignTokensOperations under a node either by itself or by filtering/replacing operations returned by NextOperation + + + + + returns AdjustNewLinesOperation between two tokens either by itself or by filtering/replacing a operation returned by NextOperation + + + + + returns AdjustSpacesOperation between two tokens either by itself or by filtering/replacing a operation returned by NextOperation + + + + + Returns SuppressWrappingIfOnSingleLineOperations under a node either by itself or by + filtering/replacing operations returned by NextOperation + + + + + returns AnchorIndentationOperations under a node either by itself or by filtering/replacing operations returned by NextOperation + + + + + returns IndentBlockOperations under a node either by itself or by filtering/replacing operations returned by NextOperation + + + + + returns AlignTokensOperations under a node either by itself or by filtering/replacing operations returned by NextOperation + + + + + returns AdjustNewLinesOperation between two tokens either by itself or by filtering/replacing a operation returned by NextOperation + + + + + returns AdjustSpacesOperation between two tokens either by itself or by filtering/replacing a operation returned by NextOperation + + + + + indicate how many lines are needed between two tokens + + + + + Options for . + + + + + the operation will leave lineBreaks as it is if original lineBreaks are equal or greater than given lineBreaks + + + + the operation will force existing lineBreaks to the given lineBreaks + + + + + + + indicate how many spaces are needed between two spaces + + + + + Options for . + + + + + Preserve spaces as it is + + + + + means a default space operation created by the formatting + engine by itself. It has its own option kind to indicates that this is an operation + generated by the engine itself. + + + + + means forcing the specified spaces between two tokens if two + tokens are on a single line. + + + + + means forcing the specified spaces regardless of positions of two tokens. + + + + + If two tokens are on a single line, second token will be placed at current indentation if possible + + + + + align first tokens on lines among the given tokens to the base token + + + + + option to control behavior + + + + + preserve relative spaces between anchor token and first tokens on lines within the given text span + as long as it doesn't have explicit line operations associated with them + + + + + create anchor indentation region around start and end token + start token will act as anchor token and right after anchor token to end of end token will become anchor region + + + + + create anchor indentation region more explicitly by providing all necessary information. + + + + + create suppress region around start and end token + + + + + create suppress region around the given text span + + + + + create indent block region around the start and end token with the given indentation delta added to the existing indentation at the position of the start token + + + + + create indent block region around the given text span with the given indentation delta added to the existing indentation at the position of the start token + + + + + create indent block region around the start and end token with the given indentation delta added to the column of the base token + + + + + create indent block region around the given text span with the given indentation delta added to the column of the base token + + + + + instruct the engine to try to align first tokens on the lines among the given tokens to be aligned to the base token + + + + + instruct the engine to try to put the give lines between two tokens + + + + + instruct the engine to try to put the given spaces between two tokens + + + + + return SuppressOperation for the node provided by the given formatting rules + + + + + return AnchorIndentationOperation for the node provided by the given formatting rules + + + + + return IndentBlockOperation for the node provided by the given formatting rules + + + + + return AlignTokensOperation for the node provided by the given formatting rules + + + + + return AdjustNewLinesOperation for the node provided by the given formatting rules + + + + + return AdjustSpacesOperation for the node provided by the given formatting rules + + + + + set indentation level for the given text span. it can be relative, absolute or dependent to other tokens + + + + + Options for . + + + + + This indentation will be a delta to the first token in the line in which the base token is present + + + + + will be interpreted as delta of its enclosing indentation + + + + + will be interpreted as absolute position + + + + + Mask for relative position options + + + + + Mask for position options. + + + Each specifies one of the position options to indicate the primary + behavior for the operation. + + + + + Increase the if the block is part of a + condition of the anchor token. For example: + + + if (value is + { // This open brace token is part of a condition of the 'if' token. + Length: 2 + }) + + + + + + suppress formatting operations within the given text span + + + + + Options for . + + + + + no wrapping if given tokens are on same line + + + + no wrapping regardless of relative positions of two tokens + + + + no spacing regardless of relative positions of two tokens + + + + + + + Completely disable formatting within a span. + + + + + a tweaked version of our interval tree to meet the formatting engine's need + + it now has an ability to return a smallest span that contains a position rather than + all Intersecting or overlapping spans + + + + + this class maintain contextual information such as + indentation of current position, based token to follow in current position and etc. + + + + + data that will be used in an interval tree related to Anchor. + + + + + data that will be used in an interval tree related to indentation. + + + + + data that will be used in an interval tree related to suppressing spacing operations. + + + + + data that will be used in an interval tree related to suppressing wrapping operations. + + + + + rewrite the node with the given trivia information in the map + + + + + return summary for current formatting work + + + + + this actually applies formatting operations to trivia between two tokens + + + + + span in the tree to format + + + + + rewrite the tree info root node with the trivia information in the map + + + + + represents a general trivia between two tokens. slightly more expensive than others since it + needs to calculate stuff unlike other cases + + + + + this collector gathers formatting operations that are based on a node + + + + + it represents a token that is inside of token stream not also outside of token stream + + it uses an index to navigate previous and after tokens in the stream to make navigation faster. and regular + Previous/NextToken for tokens outside of the stream. + + this object is supposed to be live very short but created a lot of time. that is why it is struct. + (same reason why SyntaxToken is struct - to reduce heap allocation) + + + + + it holds onto space and wrapping operation need to run between two tokens. + + + + + This class takes care of tokens consumed in the formatting engine. + + It will maintain information changed compared to original token information. and answers + information about tokens. + + + + + Thread-safe collection that holds onto changes + + + + + Get column of the token + * column means text position on a line where all tabs are converted to spaces that first position on a line becomes 0 + + + + + this provides information about the syntax tree formatting service is formatting. + this provides necessary abstraction between different kinds of syntax trees so that ones that contain + actual text or cache can answer queries more efficiently. + + + + + it holds onto trivia information between two tokens + + + + + This is the ID reported for formatting diagnostics. + + + + + This special diagnostic can be suppressed via #pragma to prevent the formatter from making changes to + code formatting within the span where the diagnostic is suppressed. + + + + + Formatting options stored in editorconfig. + + + + + Contains changes that can be either applied to different targets such as a buffer or a tree + or examined to be used in other places such as quick fix. + + + + + set up space string caches + + + + + format the trivia at the line column and put changes to the changes + + + + + create whitespace for the delta at the line column and put changes to the changes + + + + + return whether this formatting succeeded or not + for example, if there is skipped tokens in one of trivia between tokens + we consider formatting this region is failed + + + + + check whether given trivia is whitespace trivia or not + + + + + check whether given trivia is end of line trivia or not + + + + + true if previoustrivia is _ and nextTrivia is a Visual Basic comment + + + + + check whether given trivia is a Comment in VB or not + It is never reachable in C# since it follows a test for + LineContinuation Character. + + + + + check whether given string is either null or whitespace + + + + + check whether given char is whitespace + + + + + check whether given char is new line char + + + + + create whitespace trivia + + + + + create end of line trivia + + + + + return line column rule for the given two trivia + + + + + format the given trivia at the line column position and put result to the changes list + + + + + format the given trivia at the line column position and put text change result to the changes list + + + + + returns true if the trivia contains a Line break + + + + + get line column rule between two trivia + + + + + if the given trivia is the very first or the last trivia between two normal tokens and + if the trivia is structured trivia, get one token that belongs to the structured trivia and one belongs to the normal token stream + + + + + check whether string between start and end position only contains whitespace + + + + + check whether first line between two tokens contains only whitespace + + + + + return 0 or 1 based on line column of the trivia1's end point + this is based on our structured trivia's implementation detail that some structured trivia can have + one new line at the end of the trivia + + + + + absolute line number from first token + + + + + absolute column from beginning of a line + + + + + there is only whitespace on this line + + + + + relative line number between calls + + + + + relative spaces between calls + + + + + there is only whitespace in this space + + + + + force text change regardless line and space changes + + + + + Returns if the language specific should be deferred to figure out indentation. If so, it + will be asked to the resultant + provided by this method. + + + + + An indentation result represents where the indent should be placed. It conveys this through + a pair of values. A position in the existing document where the indent should be relative, + and the number of columns after that the indent should be placed at. + + This pairing provides flexibility to the implementor to compute the indentation results in + a variety of ways. For example, one implementation may wish to express indentation of a + newline as being four columns past the start of the first token on a previous line. Another + may wish to simply express the indentation as an absolute amount from the start of the + current line. With this tuple, both forms can be expressed, and the implementor does not + have to convert from one to the other. + + + + + The base position in the document that the indent should be relative to. This position + can occur on any line (including the current line, or a previous line). + + + + + The number of columns the indent should be at relative to the BasePosition's column. + + + + + Determines the desired indentation of a given line. + + + + + Gets the correct indentation to be used for the document. Depending on the host, there may be smarts to compensate for lack of an editorconfig if there + isn't one present. + + + + + Get the name of the target type of specified extension method declaration. + The node provided must be an extension method declaration, i.e. calling `TryGetDeclaredSymbolInfo()` + on `node` should return a `DeclaredSymbolInfo` of kind `ExtensionMethod`. + If the return value is null, then it means this is a "complex" method (as described at ). + + + + + Retrieves all symbols that could collide with a symbol at the specified location. + A symbol can possibly collide with the location if it is available to that location and/or + could cause a compiler error if its name is re-used at that location. + + + + + True if this language supports implementing an interface by signature only. If false, + implementations must specific explicitly which symbol they're implementing. + + + + + True if anonymous functions in this language have signatures that include named + parameters that can be referenced later on when the function is invoked. Or, if the + anonymous function is simply a signature that will be assigned to a delegate, and the + delegate's parameter names are used when invoking. + + For example, in VB one can do this: + + dim v = Sub(x as Integer) Blah() + v(x:=4) + + However, in C# that would need to be: + + Action<int> v = (int x) => Blah(); + v(obj:=4) + + Note that in VB one can access 'x' outside of the declaration of the anonymous type. + While in C# 'x' can only be accessed within the anonymous type. + + + + + True if a write is performed to the given expression. Note: reads may also be performed + to the expression as well. For example, "++a". In this expression 'a' is both read from + and written to. + + + + + True if a write is performed to the given expression. Note: unlike IsWrittenTo, this + will not return true if reads are performed on the expression as well. For example, + "++a" will return 'false'. However, 'a' in "out a" or "a = 1" will return true. + + + + + return speculative semantic model for supported node. otherwise, it will return null + + + + + get all alias names defined in the semantic model + + + + + Checks if the position is on the header of a type (from the start of the type up through it's name). + + + + + Tries to get an ancestor of a Token on current position or of Token directly to left: + e.g.: tokenWithWantedAncestor[||]tokenWithoutWantedAncestor + + + + + controls how much of the type header should be considered. If only the span up through the type name will be considered. If + then the span through the base-list will be considered. + + + + + Contains helpers to allow features and other algorithms to run over C# and Visual Basic code in a uniform fashion. + It should be thought of a generalized way to apply type-pattern-matching and syntax-deconstruction in a uniform + fashion over the languages. Helpers in this type should only be one of the following forms: + + + 'IsXXX' where 'XXX' exactly matches one of the same named syntax (node, token, trivia, list, etc.) constructs that + both C# and VB have. For example 'IsSimpleName' to correspond to C# and VB's SimpleNameSyntax node. These 'checking' + methods should never fail. For non leaf node types this should be implemented as a typecheck ('is' in C#, 'typeof ... is' + in VB). For leaf nodes, this should be implemented by deffering to to check against the + raw kind of the node. + + + 'GetPartsOfXXX(SyntaxNode node, out SyntaxNode/SyntaxToken part1, ...)' where 'XXX' one of the same named Syntax constructs + that both C# and VB have, and where the returned parts correspond to the members those nodes have in common across the + languages. For example 'GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken dotToken, out SyntaxNode right)' + VB. These functions should throw if passed a node that the corresponding 'IsXXX' did not return for. + For nodes that only have a single child, 'GetPartsOfXXX' is not not needed and can be replaced with the easier to use + 'GetXXXOfYYY' to get that single child. + + + 'GetXxxOfYYY' where 'XXX' matches the name of a property on a 'YYY' syntax construct that both C# and VB have. For + example 'GetExpressionOfMemberAccessExpression' corresponding to MemberAccessExpressionsyntax.Expression in both C# and + VB. These functions should throw if passed a node that the corresponding 'IsYYY' did not return for. + For nodes that only have a single child, these functions can stay here. For nodes with multiple children, these should migrate + to and be built off of 'GetPartsOfXXX'. + + + Absolutely trivial questions that relate to syntax and can be asked sensibly of each language. For example, + if certain constructs (like 'patterns') are supported in that language or not. + + + + Importantly, avoid: + + + + Functions that attempt to blur the lines between similar constructs in the same language. For example, a QualifiedName + is not the same as a MemberAccessExpression (despite A.B being representable as either depending on context). + Features that need to handle both should make it clear that they are doing so, showing that they're doing the right + thing for the contexts each can arise in (for the above example in 'type' vs 'expression' contexts). + + + Functions which are effectively specific to a single feature are are just trying to find a place to place complex + feature logic in a place such that it can run over VB or C#. For example, a function to determine if a position + is on the 'header' of a node. a 'header' is a not a well defined syntax concept that can be trivially asked of + nodes in either language. It is an excapsulation of a feature (or set of features) level idea that should be in + its own dedicated service. + + + Functions that mutate or update syntax constructs for example 'WithXXX'. These should be on SyntaxGenerator or + some other feature specific service. + + + Functions that a single item when one language may allow for multiple. For example 'GetIdentifierOfVariableDeclarator'. + In VB a VariableDeclarator can itself have several names, so calling code must be written to check for that and handle + it apropriately. Functions like this make it seem like that doesn't need to be considered, easily allowing for bugs + to creep in. + + + Abbreviating or otherwise changing the names that C# and VB share here. For example use 'ObjectCreationExpression' + not 'ObjectCreation'. This prevents accidental duplication and keeps consistency with all members. + + + + + Many helpers in this type currently violate the above 'dos' and 'do nots'. They should be removed and either + inlined directly into the feature that needs if (if only a single feature), or moved into a dedicated service + for that purpose if needed by multiple features. + + + + + Returns 'true' if this a 'reserved' keyword for the language. A 'reserved' keyword is a + identifier that is always treated as being a special keyword, regardless of where it is + found in the token stream. Examples of this are tokens like and + in C# and VB respectively. + + Importantly, this does *not* include contextual keywords. If contextual keywords are + important for your scenario, use or . Also, consider using + if all you need is the ability to know + if this is effectively any identifier in the language, regardless of whether the language + is treating it as a keyword or not. + + + + + Returns if this a 'contextual' keyword for the language. A + 'contextual' keyword is a identifier that is only treated as being a special keyword in + certain *syntactic* contexts. Examples of this is 'yield' in C#. This is only a + keyword if used as 'yield return' or 'yield break'. Importantly, identifiers like , and are *not* + 'contextual' keywords. This is because they are not treated as keywords depending on + the syntactic context around them. Instead, the language always treats them identifiers + that have special *semantic* meaning if they end up not binding to an existing symbol. + + Importantly, if is not in the syntactic construct where the + language thinks an identifier should be contextually treated as a keyword, then this + will return . + + Or, in other words, the parser must be able to identify these cases in order to be a + contextual keyword. If identification happens afterwards, it's not contextual. + + + + + The set of identifiers that have special meaning directly after the `#` token in a + preprocessor directive. For example `if` or `pragma`. + + + + + Get the node on the left side of the dot if given a dotted expression. + + + In VB, we have a member access expression with a null expression, this may be one of the + following forms: + 1) new With { .a = 1, .b = .a .a refers to the anonymous type + 2) With obj : .m .m refers to the obj type + 3) new T() With { .a = 1, .b = .a 'a refers to the T type + If `allowImplicitTarget` is set to true, the returned node will be set to approperiate node, otherwise, it will return null. + This parameter has no affect on C# node. + + + + + Gets the containing expression that is actually a language expression and not just typed + as an ExpressionSyntax for convenience. For example, NameSyntax nodes on the right side + of qualified names and member access expressions are not language expressions, yet the + containing qualified names or member access expressions are indeed expressions. + + + + + Call on the `.y` part of a `x?.y` to get the entire `x?.y` conditional access expression. This also works + when there are multiple chained conditional accesses. For example, calling this on '.y' or '.z' in + `x?.y?.z` will both return the full `x?.y?.z` node. This can be used to effectively get 'out' of the RHS of + a conditional access, and commonly represents the full standalone expression that can be operated on + atomically. + + + + + Returns the expression node the member is being accessed off of. If + is , this will be the node directly to the left of the dot-token. If + is , then this can return another node in the tree that the member will be accessed + off of. For example, in VB, if you have a member-access-expression of the form ".Length" then this + may return the expression in the surrounding With-statement. + + + + + True if this is an argument with just an expression and nothing else (i.e. no ref/out, + no named params, no omitted args). + + + + + Returns true for nodes that represent the body of a method. + + For VB this will be + MethodBlockBaseSyntax. This will be true for things like constructor, method, operator + bodies as well as accessor bodies. It will not be true for things like sub() function() + lambdas. + + For C# this will be the BlockSyntax or ArrowExpressionSyntax for a + method/constructor/deconstructor/operator/accessor. It will not be included for local + functions. + + + + + Returns true if the given character is a character which may be included in an + identifier to specify the type of a variable. + + + + + A block that has no semantics other than introducing a new scope. That is only C# BlockSyntax. + + + + + A node that contains a list of statements. In C#, this is BlockSyntax and SwitchSectionSyntax. + In VB, this includes all block statements such as a MultiLineIfBlockSyntax. + + + + + A node that can host a list of statements or a single statement. In addition to + every "executable block", this also includes C# embedded statement owners. + + + + + Given a , return the representing the span of the member body + it is contained within. This is used to determine whether speculative binding should be + used in performance-critical typing scenarios. Note: if this method fails to find a relevant span, it returns + an empty at position 0. + + + + + Returns the parent node that binds to the symbols that the IDE prefers for features like Quick Info and Find + All References. For example, if the token is part of the type of an object creation, the parenting object + creation expression is returned so that binding will return constructor symbols. + + + + + Given a , that represents and argument return the string representation of + that arguments name. + + + + + Given a , that represents an attribute argument return the string representation of + that arguments name. + + + + + Determines if there is preprocessor trivia *between* any of the + provided. The will be deduped and then ordered by position. + Specifically, the first token will not have it's leading trivia checked, and the last + token will not have it's trailing trivia checked. All other trivia will be checked to + see if it contains a preprocessor directive. + + + + + Gets the statement container node for the statement . + + The implementation. + The statement. + The statement container for . + + + + Similar to , this gets the containing + expression that is actually a language expression and not just typed as an ExpressionSyntax for convenience. + However, this goes beyond that that method in that if this expression is the RHS of a conditional access + (i.e. a?.b()) it will also return the root of the conditional access expression tree. + The intuition here is that this will give the topmost expression node that could realistically be + replaced with any other expression. For example, with a?.b() technically .b() is an + expression. But that cannot be replaced with something like (1 + 1) (as a?.(1 + 1) is not + legal). However, in a?.b(), then a itself could be replaced with (1 + 1)?.b() to form + a legal expression. + + + + + Provides a uniform view of SyntaxKinds over C# and VB for constructs they have + in common. + + + + + Gets the syntax kind for a multi-line comment. + + + The raw syntax kind for a multi-line comment; otherwise, if the language does not + support multi-line comments. + + + + + Provides a uniform view of SyntaxKinds over C# and VB for constructs they have + in common. + + + + + Helper service for telling you what type can be inferred to be viable in a particular + location in code. This is useful for features that are starting from code that doesn't bind, + but would like to know type that code should be in the location that it can be found in. For + example: + + int i = Here(); + + If 'Here()' doesn't bind, then this class can be used to say that it is currently in a + location whose type has been inferred to be 'int' from the surrounding context. Note: this + is simply a best effort guess. 'byte/short/etc.' as well as any user convertible types to + int would also be valid here, however 'int' seems the most reasonable when considering user + intuition. + + + + + Given a symbol in source, returns the syntax nodes that compromise its declarations. + This differs from symbol.Locations in that Locations returns a list of ILocations that + normally correspond to the name node of the symbol. + + + + + a logger that aggregate multiple loggers + + + + + a logger that doesn't do anything + + + + + A logger that publishes events to ETW using an EventSource. + + + + + A logger that publishes events to a log file. + + + + + Task queue to serialize all the IO to the log file. + + + + + Defines a log aggregator to create a histogram + + + + + An interaction class defines how much time is expected to reach a time point, the response + time point being the most commonly used. The interaction classes correspond to human perception, + so, for example, all interactions in the Fast class are perceived as fast and roughly feel like + they have the same performance. By defining these interaction classes, we can describe + performance using adjectives that have a precise, consistent meaning. + + + + + LogMessage that creates key value map lazily + + + + + Creates a with default , since + KV Log Messages are by default more informational and should be logged as such. + + + + + Type of log it is making. + + + + + Log some traces of an activity (default) + + + + + Log an user explicit action + + + + + Represents telemetry data that's classified as personally identifiable information. + + + + + This EventSource exposes our events to ETW. + RoslynEventSource GUID is {bf965e67-c7fb-5c5b-d98f-cdf68f8154c2}. + + When updating this class, use the following to also update Main\Source\Test\Performance\Log\RoslynEventSourceParser.cs: + Main\Tools\Source\TraceParserGen\bin\Debug\TraceParserGen.exe Microsoft.CodeAnalysis.Workspaces.dll -eventsource:RoslynEventSource + + Use this command to register the ETW manifest on any machine where you need to decode events in xperf/etlstackbrowse: + "\\clrmain\tools\managed\etw\eventRegister\bin\Debug\eventRegister.exe" Microsoft.CodeAnalysis.Workspaces.dll + + + + + Logs an informational block with given 's representation as the message + and specified . + On dispose of the returned disposable object, it logs the 'tick' count between the start and end of the block. + Unlike other logging methods on , this method does not check + if the specified was explicitly enabled. + Instead it checks if the was enabled at level. + + + + + Logs an informational message block with the given > and specified . + On dispose of the returned disposable object, it logs the 'tick' count between the start and end of the block. + Unlike other logging methods on , this method does not check + if the specified was explicitly enabled. + Instead it checks if the was enabled at level. + + + + + This tracks the logged message. On instantiation, it logs 'Started block' with other event data. + On dispose, it logs 'Ended block' with the same event data so we can track which block started and ended when looking at logs. + + + + + next unique block id that will be given to each LogBlock + + + + + return next unique pair id + + + + + Implementation of that produce timing debug output. + + + + + no op log block + + + + + Enum to uniquely identify each function location. + + + + + logger interface actual logger should implements + + + + + answer whether it is enabled or not for the specific function id + + + + + log a specific event with context message + + + + + log a start event with context message + + + + + log an end event + + + + + provide a way to log activities to various back end such as etl, code marker and etc + + + + + next unique block id that will be given to each LogBlock + + + + + give a way to explicitly set/replace the logger + + + + + ensure we have a logger by putting one from workspace service if one is not there already. + + + + + log a specific event with a simple context message which should be very cheap to create + + + + + log a specific event with a context message that will only be created when it is needed. + the messageGetter should be cheap to create. in another word, it shouldn't capture any locals + + + + + log a specific event with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a specific event with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a specific event with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a specific event with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a specific event with a context message. + + + + + return next unique pair id + + + + + simplest way to log a start and end pair + + + + + simplest way to log a start and end pair with a simple context message which should be very cheap to create + + + + + log a start and end pair with a context message that will only be created when it is needed. + the messageGetter should be cheap to create. in another word, it shouldn't capture any locals + + + + + log a start and end pair with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a start and end pair with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a start and end pair with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a start and end pair with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a start and end pair with a context message. + + + + + This tracks the logged message. On instantiation, it logs 'Started block' with other event data. + On dispose, it logs 'Ended block' with the same event data so we can track which block started and ended when looking at logs. + + + + + Defines logging severity levels. Each logger may choose to report differently based on the level of the message being logged. + + Copied from Microsoft.Extensions.Logging https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.loglevel + + + + + + Logs that contain the most detailed messages. These messages may contain sensitive application data. These messages are disabled by default and should never be enabled in a production environment. + + + + + Logs that are used for interactive investigation during development. These logs should primarily contain information useful for debugging and have no long-term value. + + + + + Logs that track the general flow of the application. These logs should have long-term value. + + + + + Logs that highlight an abnormal or unexpected event in the application flow, but do not otherwise cause the application execution to stop. + + + + + Logs that highlight when the current flow of execution is stopped due to a failure. These should indicate a failure in the current activity, not an application-wide failure. + + + + + Logs that describe an unrecoverable application or system crash, or a catastrophic failure that requires immediate attention. + + + + + Not used for writing log messages. Specifies that a logging category should not write any messages. + + + + + log message that can generate string lazily + + + + + Logger will call this to return LogMessage to its pool + + + + + helper class to aggregate some numeric value log in client side + + + + + maximum value + + + + + minimum value + + + + + middle value of the total data set + + + + + average value of the total data set + + + + + most frequent value in the total data set + + + + + difference between max and min value + + + + + number of data points in the total data set + + + + + Used to indicate that the global operation completed fully. The only effect this has is how this operation + will be logged when is called. If this has been called, then + will log that we completed without cancellation. If this has not been called, then + will log that we were canceled. + + + + + raised when global operation is started + + + + + raised when global operation is stopped + + + + + start new global operation + + + + + An that comes from . It behaves just like a normal + but remembers which language the is, so you don't have to + pass that information redundantly when calling . + + + + + Creates a new that contains the changed value. + + + + + Creates a new that contains the changed value. + + + + + Gets force computed serializable options with prefetched values for all the registered options applicable to the given by quering the option persisters. + + + + + Returned from a + + + + + Attempts to fetch the value for the given option. + + + The value returned. May be null even if the function returns true as "null" may be valid value for some options. + True if this provider had a specific value for this option. False to indicate other providers should be queried. + + + + Implemented to provide options that apply to specific documents, like from .editorconfig files. + + + This is passed to to activate it + for a workspace. This instance then lives around for the lifetime of the workspace. + + + + + Fetches a for the given document. Any asynchronous work (looking for config files, etc.) + should be done here. Can return a null-valued task to mean there is no options being provided for this document. + + + + + A MEF-exported factory which produces s for s. + + + + + Provides services for reading and writing options. + This will provide support for options at the global level (i.e. shared among + all workspaces/services). + + In general you should not import this type directly, and should instead get an + from + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current values of specified options. + All options are read atomically. + + + + + Applies a set of options. + If any option changed its value invokes registered option persisters, updates current solutions of all registered workspaces and triggers . + + + + + Sets and persists the value of a global option. + Sets the value of a global option. + Invokes registered option persisters. + Triggers . + Does not update any workspace (since this option is not a solution option). + + + + + Atomically sets the values of specified global options. The option values are persisted. + Triggers . + Does not update any workspace (since this option is not a solution option). + + + + + Gets force computed serializable options snapshot with prefetched values for the registered options applicable to the given by quering the option persisters. + + + + + Returns the set of all registered options. + + + + + Map an .editorconfig key to a corresponding and + that can be used to read and write the value stored in an . + + The .editorconfig key. + The language to use for the , if the matching option has + set. + The for the key. + The for the key and language. + if a matching option was found; otherwise, . + + + + Returns the set of all registered serializable options applicable for the given . + + + + + Refreshes the stored value of a serialized option. This should only be called from serializers. + + + + + Registers a workspace with the option service. + + + + + Unregisters a workspace from the option service. + + + + + Exportable by a host to specify the save and restore behavior for a particular set of + values. + + + + + Gets the . If the persister does not already exist, it is created. + + + This method is safe for concurrent use from any thread. No guarantees are made regarding the use of the UI + thread. + + A cancellation token the operation may observe. + The option persister. + + + + Provides services for reading and writing options. This will provide support for + customizations workspaces need to perform around options. Note that + options will normally still be offered through + implementations of this. However, implementations may customize things differently + depending on their needs. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Fetches an immutable set of all current options. + + + + + Gets a serializable option set snapshot with force computed values for all registered serializable options applicable for the given by quering the option persisters. + + + + + Applies a set of options. + + New options to set. + + + + Returns the set of all registered options. + + + + + + + + Returns the set of all registered serializable options applicable for the given . + + + + + Registers a provider that can modify the result of . Providers registered earlier are queried first + for options, and the first provider to give a value wins. + + + + + Returns the that applies to a specific document, given that document and the global options. + + + + + Registers a workspace with the option service. + + + + + Unregisters a workspace from the option service. + + + + + Interface used for exposing functionality from the option service that we don't want to + ever be public. + + + + + An global option. An instance of this class can be used to access an option value from an OptionSet. + + + + + + + + + + + + + + + + + + + + Storage locations for the option. + + + + + + + + + + + + + + Wraps an underlying and exposes its data to workspace + clients. Also takes the notifications + and forwards them along using the same used by the + this is connected to. i.e. instead of synchronously just passing + along the underlying events, these will be enqueued onto the workspace's eventing queue. + + + + + Gate guarding and . + + + + + Map from language name to the wrapper. + + + + + Gets the value of the option, or the default value if not otherwise set. + + + + + Gets the value of the option cast to type , or the default value if not otherwise set. + + + + + Gets the value of the option, or the default value if not otherwise set. + + + + + Gets the value of the option cast to type , or the default value if not otherwise set. + + + + + Gets the value of the option, or the default value if not otherwise set. + + + + + Gets the value of the option, or the default value if not otherwise set. + + + + + Gets the value of the option, or the default value if not otherwise set. + + + + + Gets the value of the option, or the default value if not otherwise set. + + + + + Creates a new that contains the changed value. + + + + + Creates a new that contains the changed value. + + + + + Creates a new that contains the changed value. + + + + + Creates a new that contains the changed value. + + + + + Creates a new that contains the changed value. + + + + + Creates a new that contains the changed value. + + + + + The base type of all types that specify where options are stored. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An option that can be specified once per language. + + + + + + + + + + + + + + + + + + + + + Storage locations for the option. + + + + + The name of the providers for .editorconfig. Both the current and legacy providers will use this name, so that way any other clients can + order relative to the pair. The two factories are unordered themselves because only one ever actually gives a real provider. + + + + + Optional source language for language specific option providers. See . + This will be empty string for language agnostic option providers. + + + + + True if the option is a client global option provided by . + + + + + Global client-only options. + + + + + Options that are part of the solution snapshot. + Some of these options may be configurable per document via editorconfig. + + + + + Serializable implementation of for . + It contains prepopulated fetched option values for all serializable options and values, and delegates to for non-serializable values. + It ensures a contract that values are immutable from this instance once observed. + + + + + Fallback option set for non-serializable options. See comments on for more details. + + + + + Prefetched option values applicable for . + + + + + Set of changed options in this option set which are serializable. + + + + + Set of changed options in this option set which are non-serializable. + + + + + Set of languages referenced in . Cached + only so we can shortcircuit . + + + + + Returns an option set with all the serializable option values prefetched for given , + while also retaining all the explicitly changed option values in this option set for any language. + Note: All the provided must be . + + + + + Gets a list of all the options that were changed. + + + + + An implementation of for non-serializable options that are defined in VS layers. + It fetches values it doesn't know about to the workspace's option service. It ensures a contract + that values are immutable from this instance once observed. + TODO: Remove this type once we move all the options from the VS layers into Workspaces/Features, so the entire + option set is serializable and becomes pure data snapshot for options. + + + + + Gets a list of all the options that were changed. + + + + + Specifies that the option is stored in feature flag storage. + + + + + Specifies that an option should be read from an .editorconfig file. + + + + + Gets the editorconfig string representation for this storage location. + + + + + Gets the editorconfig string representation for this storage location. The result is a complete line of the + .editorconfig file, such as the following: + + dotnet_sort_system_directives_first = true + + + + + + Gets the editorconfig string representation for this storage location. The result only includes the value + for the .editorconfig entry. + + + + + + Internal base option type that is available in both the Workspaces layer and CodeStyle layer. + Its definition in Workspaces layer sub-types "IOption" and its definition in CodeStyle layer + explicitly defines all the members from "IOption" type as "IOption" is not available in CodeStyle layer. + This ensures that all the sub-types of in either layer see an identical + set of interface members. + + + + + Group/sub-feature associated with an . + + + + + Group/sub-feature for this option. + + + + + Specifies that the option should be stored into the user's local registry hive. + + + + + Group/sub-feature associated with an option. + + + + + A localizable resource description string for the option group. + + + + + Relative priority of the option group with respect to other option groups within the same feature. + + + + + Feature this option is associated with. + + + + + Optional group/sub-feature for this option. + + + + + The name of the option. + + + + + The default value of the option. + + + + + The type of the option value. + + + + + Flag indicating if this is a per-language option or a language specific option. + + + + + The base type of all types that specify where options are stored. + + + + + Marker interface for language specific options. + + + + + Marker interface for language specific options. + + + + + Marker interface for + + + + + Marker interface for + + + + + Specifies that the option should be stored into a roamed profile across machines. + + + + + Creates a that has different key names for different languages. + + A function that maps from a value to the key name. + + + + Attempts to get the package sources applicable to the workspace. Note: this call is made on a best effort + basis. If the results are not available (for example, they have not been computed, and doing so would + require switching to the UI thread), then an empty array can be returned. + + + A collection of package sources. + + + + + The pattern matcher is not thread-safe. Do not use the pattern matcher across mutiple threads concurrently. It + also keeps an internal cache of data for speeding up operations. As such, it should be disposed when done to + release the cached data back. and release the matcher appropriately once you no longer need it. Also, while the + pattern matcher is culture aware, it uses the culture specified in the constructor. + + + + + Encapsulated matches responsible for matching an all lowercase pattern against + a candidate using CamelCase matching. i.e. this code is responsible for finding the + match between "cofipro" and "CodeFixProvider". + + + + + Returns null if no match was found, 1 if a contiguous match was found, 2 if a + match as found that starts at the beginning of the candidate, and 3 if a contiguous + match was found that starts at the beginning of the candidate. + + + + + Updates the currently stored 'best result' if the current result is better. + Returns 'true' if no further work is required and we can break early, or + 'false' if we need to keep on going. + + If 'weight' is better than 'bestWeight' and matchSpanToAdd is not null, then + matchSpanToAdd will be added to matchedSpansInReverse. + + + + + Construct a new PatternMatcher using the specified culture. + + The culture to use for string searching and comparison. + Whether or not the matching parts of the candidate should be supplied in results. + Whether or not close matches should count as matches. + + + + Internal helper for MatchPatternInternal + + + PERF: Designed to minimize allocations in common cases. + If there's no match, then null is returned. + If there's a single match, or the caller only wants the first match, then it is returned (as a Nullable) + If there are multiple matches, and the caller wants them all, then a List is allocated. + + The word being tested. + The segment of the pattern to check against the candidate. + The result array to place the matches in. + If a fuzzy match should be performed + If there's only one match, then the return value is that match. Otherwise it is null. + + + + Do the two 'parts' match? i.e. Does the candidate part start with the pattern part? + + The candidate text + The span within the text + The pattern text + The span within the text + Options for doing the comparison (case sensitive or not) + True if the span identified by within starts with + the span identified by within . + + + + Does the given part start with the given pattern? + + The candidate text + The span within the text + The pattern text + Options for doing the comparison (case sensitive or not) + True if the span identified by within starts with + + + + First we break up the pattern given by dots. Each portion of the pattern between the + dots is a 'Segment'. The 'Segment' contains information about the entire section of + text between the dots, as well as information about any individual 'Words' that we + can break the segment into. + + + + + Information about a chunk of text from the pattern. The chunk is a piece of text, with + cached information about the character spans within in. Character spans separate out + capitalized runs and lowercase runs. i.e. if you have AAbb, then there will be two + character spans, one for AA and one for BB. + + + + + Character spans separate out + capitalized runs and lowercase runs. i.e. if you have AAbb, then there will be two + character spans, one for AA and one for BB. + + + + + Determines if a given candidate string matches under a multiple word query text, as you + would find in features like Navigate To. + + If this was a match, a set of match types that occurred while matching the + patterns. If it was not a match, it returns null. + + + + True if this was a case sensitive match. + + + + + The type of match that occurred. + + + + + The spans in the original text that were matched. Only returned if the + pattern matcher is asked to collect these spans. + + + + + Note(cyrusn): this enum is ordered from strongest match type to weakest match type. + + + + + The candidate string matched the pattern exactly. + + + + + The pattern was a prefix of the candidate string. + + + + + The pattern was a substring of the candidate string, but in a way that wasn't a CamelCase match. The + pattern had to have at least one non lowercase letter in it, and the match needs to be case sensitive. + This will match 'savedWork' against 'FindUnsavedWork'. + + + + + The pattern was a substring of the candidate string, starting at a word within that candidate. The pattern + can be all lowercase here. This will match 'save' or 'Save' in 'FindSavedWork' + + + + + All camel-humps in the pattern matched a camel-hump in the candidate. All camel-humps + in the candidate were matched by a camel-hump in the pattern. + + Example: "CFPS" matching "CodeFixProviderService" + Example: "cfps" matching "CodeFixProviderService" + Example: "CoFiPrSe" matching "CodeFixProviderService" + + + + + All camel-humps in the pattern matched a camel-hump in the candidate. The first camel-hump + in the pattern matched the first camel-hump in the candidate. There was no gap in the camel- + humps in the candidate that were matched. + + Example: "CFP" matching "CodeFixProviderService" + Example: "cfp" matching "CodeFixProviderService" + Example: "CoFiPRo" matching "CodeFixProviderService" + + + + + All camel-humps in the pattern matched a camel-hump in the candidate. The first camel-hump + in the pattern matched the first camel-hump in the candidate. There was at least one gap in + the camel-humps in the candidate that were matched. + + Example: "CP" matching "CodeFixProviderService" + Example: "cp" matching "CodeFixProviderService" + Example: "CoProv" matching "CodeFixProviderService" + + + + + All camel-humps in the pattern matched a camel-hump in the candidate. The first camel-hump + in the pattern did not match the first camel-hump in the pattern. There was no gap in the camel- + humps in the candidate that were matched. + + Example: "FP" matching "CodeFixProviderService" + Example: "fp" matching "CodeFixProviderService" + Example: "FixPro" matching "CodeFixProviderService" + + + + + All camel-humps in the pattern matched a camel-hump in the candidate. The first camel-hump + in the pattern did not match the first camel-hump in the pattern. There was at least one gap in + the camel-humps in the candidate that were matched. + + Example: "FS" matching "CodeFixProviderService" + Example: "fs" matching "CodeFixProviderService" + Example: "FixSer" matching "CodeFixProviderService" + + + + + The pattern matches the candidate in a fuzzy manner. Fuzzy matching allows for + a certain amount of misspellings, missing words, etc. See for + more details. + + + + + The pattern was a substring of the candidate and wasn't either or . This can happen when the pattern is allow lowercases and matches some non + word portion of the candidate. For example, finding 'save' in 'GetUnsavedWork'. This will not match across + word boundaries. i.e. it will not match 'save' to 'VisaVerify' even though 'saVe' is in that candidate. + + + + + Callback the host (VS) passes to the OOP service to allow it to send batch notifications + about telemetry. + + + + + Interface to allow host (VS) to inform the OOP service to start incrementally analyzing and + reporting results back to the host. + + + + + Serialization typed used to pass information to/from OOP and VS. + + + + + Service which can analyze a span of a document and identify all locations of parameters or locals that are ever + reassigned. Note that the locations provided are not the reassignment points. Rather if a local or parameter + is ever reassigned, these are all the locations of those locals or parameters within that span. + + + + + Tries to get a type of its' lambda parameter of argument for each candidate symbol. + + symbols corresponding to or + Here, some_args can be multi-variables lambdas as well, e.g. f((a,b) => a+b, (a,b,c)=>a*b*c.Length) + + ordinal of the arguments of function: (a,b) or (a,b,c) in the example above + ordinal of the lambda parameters, e.g. a, b or c. + + + + + If container is a tuple type, any of its tuple element which has a friendly name will cause + the suppression of the corresponding default name (ItemN). + In that case, Rest is also removed. + + + + + The named symbols to recommend. + + + + + The unnamed symbols to recommend. For example, operators, conversions and indexers. + + + + + Returns a that a user can use to communicate with a remote host (i.e. ServiceHub) + + + + + Get to current RemoteHost + + + + + Token signaled when the host starts to shut down. + + + + + Information related to pinned solution + + + + + Unique ID for this pinned solution + + This later used to find matching solution between VS and remote host + + + + + This indicates whether this scope is for primary branch or not (not forked solution) + + Features like OOP will use this flag to see whether caching information related to this solution + can benefit other requests or not + + + + + This indicates a Solution.WorkspaceVersion of this solution. remote host engine uses this version + to decide whether caching this solution will benefit other requests or not + + + + + An optional project that we are pinning information for. This is used for features that only need + information for a project (and its dependencies) and not the entire solution. + + + + + This represents client in client/server model. + + user can create a connection to communicate with the server (remote host) through this client + + + + + Equivalent to + except that only the project (and its dependent projects) will be sync'ed to the remote host before executing. + This is useful for operations that don't every do any work outside of that project-cone and do not want to pay + the high potential cost of a full sync. + + + + + Equivalent to + except that only the project (and its dependent projects) will be sync'ed to the remote host before executing. + This is useful for operations that don't every do any work outside of that project-cone and do not want to pay + the high potential cost of a full sync. + + + + + Equivalent to + except that only the project (and its dependent projects) will be sync'ed to the remote host before executing. + This is useful for operations that don't every do any work outside of that project-cone and do not want to pay + the high potential cost of a full sync. + + + + + Equivalent to + except that only the project (and its dependent projects) will be sync'ed to the remote host before executing. + This is useful for operations that don't every do any work outside of that project-cone and do not want to pay + the high potential cost of a full sync. + + + + + Invokes a remote API that streams data back to the caller via a pipe. + + + + + Equivalent to + except that only the project (and its dependent projects) will be sync'ed to the remote host before executing. + This is useful for operations that don't every do any work outside of that project-cone and do not want to pay + the high potential cost of a full sync. + + + + + Abstracts a connection to a service implementing type . + + Remote interface type of the service. + + + + Given two solution snapshots ( and ), determines + the set of document text changes necessary to convert to . + + + + + Applies the result of to to produce + a solution textually equivalent to the newSolution passed to . + + + + + Enables logging of using loggers of the specified . + + + + + Initializes telemetry session. + + + + + This deal with serializing/deserializing language specific data + + + + + This lets consumer to get to inner temporary storage that references use + as its shadow copy storage + + + + + This is just internal utility type to reduce allocations and reduntant code + + + + + Represents a which can be serialized for sending to another process. The text is not + required to be a live object in the current process, and can instead be held in temporary storage accessible by + both processes. + + + + + The storage location for . + + + Exactly one of or will be non-. + + + + + The in the current process. + + + + + + + + serialize and deserialize objects to stream. + some of these could be moved into actual object, but putting everything here is a bit easier to find I believe. + + + serialize and deserialize objects to straem. + some of these could be moved into actual object, but putting everything here is a bit easier to find I believe. + + + + + collection which children is checksum. + + + + + this is a collection that has its own checksum and contains only checksum or checksum collection as its children. + + + + + hold onto object checksum that currently doesn't have a place to hold onto checksum + + + + + The core data structure of the tracker. This is a dictionary of variable name to the + current identifier tokens that are declaring variables. This should only ever be updated + via the AddIdentifier and RemoveIdentifier helpers. + + + + + Used to find the symbols associated with the Invocation Expression surrounding the Token + + + + + Computes an adds conflicts relating to declarations, which are independent of + location-based checks. Examples of these types of conflicts include renaming a member to + the same name as another member of a type: binding doesn't change (at least from the + perspective of find all references), but we still need to track it. + + + + + Gives the First Location for a given Symbol by ordering the locations using DocumentId first and Location starting position second + + + + + Helper class to track the state necessary for finding/resolving conflicts in a + rename session. + + + + + Find conflicts in the new solution + + + + + Gets the list of the nodes that were annotated for a conflict check + + + + + The method determines the set of documents that need to be processed for Rename and also determines + the possible set of names that need to be checked for conflicts. + + + + We try to rewrite all locations that are invalid candidate locations. If there is only + one location it must be the correct one (the symbol is ambiguous to something else) + and we always try to rewrite it. If there are multiple locations, we only allow it + if the candidate reason allows for it). + + + + We try to compute the sub-spans to rename within the given . + If we are renaming within a string, the locations to rename are always within this containing string location + and we can identify these sub-spans. + However, if we are renaming within a comment, the rename locations can be anywhere in trivia, + so we return null and the rename rewriter will perform a complete regex match within comment trivia + and rename all matches instead of specific matches. + + + + + The result of the conflict engine. Can be made immutable by calling . + + + + + The base workspace snapshot + + + + + Whether the text that was resolved with was even valid. This may be false if the + identifier was not valid in some language that was involved in the rename. + + + + + The original text that is the rename replacement. + + + + + The solution snapshot as it is being updated with specific rename steps. + + + + + Gives information about an identifier span that was affected by Rename (Reference or Non reference) + + + + + The Span of the original identifier if it was in source, otherwise the span to check for implicit + references. + + + + + If there was a conflict at ConflictCheckSpan during rename, then the next phase in rename uses + ComplexifiedTargetSpan span to be expanded to resolve the conflict. + + + + + There was no conflict. + + + + + A conflict was resolved at a location that references the symbol being renamed. + + + + + A conflict was resolved in a piece of code that does not reference the symbol being + renamed. + + + + + There was a conflict that could not be resolved. + + + + + These are the conflicts that cannot be resolved. E.g.: Declaration Conflict + + + + + Tracks the text spans that were modified as part of a rename operation + + + + + Information to track deltas of complexified spans + + Consider the following example where renaming a->b causes a conflict + and Goo is an extension method: + "a.Goo(a)" is rewritten to "NS1.NS2.Goo(NS3.a, NS3.a)" + + The OriginalSpan is the span of "a.Goo(a)" + + The NewSpan is the span of "NS1.NS2.Goo(NS3.a, NS3.a)" + + The ModifiedSubSpans are the pairs of complexified symbols sorted + according to their order in the original source code span: + "a", "NS3.a" + "Goo", "NS1.NS2.Goo" + "a", "NS3.a" + + + + + + This annotation will be used by rename to mark all places where it needs to rename an identifier (token replacement) and where to + check if the semantics have been changes (conflict detection). + + This annotation should be put on tokens only. + + + + The span this token occupied in the original syntax tree. Can be used to show e.g. conflicts in the UI. + + + + + A flag indicating whether this is a location that needs to be renamed or just tracked for conflicts. + + + + + A flag indicating whether the token at this location has the same ValueText then the original name + of the symbol that gets renamed. + + + + + When replacing the annotated token this string will be prepended to the token's value. This is used when renaming compiler + generated fields and methods backing properties (e.g. "get_X" or "_X" for property "X"). + + + + + When replacing the annotated token this string will be appended to the token's value. This is used when renaming compiler + generated types whose names are derived from user given names (e.g. "XEventHandler" for event "X"). + + + + + A single dimensional array of annotations to verify after rename. + + + + + States if this token is a Namespace Declaration Reference + + + + + States if this token is a member group reference, typically found in NameOf expressions + + + + + States if this token is annotated as a part of the Invocation Expression that needs to be checked for the Conflicts + + + + + This class is used to refer to a Symbol definition which could be in source or metadata + it has a metadata name. + + + + + The metadata name for this symbol. + + + + + Count of symbol location (Partial Types, Constructors, etc). + + + + + A flag indicating that the associated symbol is an override of a symbol from metadata + + + + + The final solution snapshot. Including any renamed documents. + + + + + The list of all document ids of documents that have been touched for this rename operation. + + + + + Runs the entire rename operation OOP and returns the final result. More efficient (due to less back and + forth marshaling) when the intermediary results of rename are not needed. To get the individual parts of + rename remoted use and . + + + + + A helper class that contains some of the methods and filters that must be used when + processing the raw results from the FindReferences API. + + + Holds the Locations of a symbol that should be renamed, along with the symbol and Solution + for the set. + + + + + Given a symbol in a document, returns the "right" symbol that should be renamed in + the case the name binds to things like aliases _and_ the underlying type at once. + + + + + Given a symbol, finds the symbol that actually defines the name that we're using. + + + + + Given a ISymbol, returns the renameable locations for a given symbol. + + + + + Find the locations that need to be renamed. + + + + + Performs the renaming of the symbol in the solution, identifies renaming conflicts and automatically + resolves them where possible. + + The new name of the identifier + Used after renaming references. References that now bind to any of these + symbols are not considered to be in conflict. Useful for features that want to rename existing references to + point at some existing symbol. Normally this would be a conflict, but this can be used to override that + behavior. + The cancellation token. + A conflict resolution containing the new solution. + + + + This method annotates the given syntax tree with all the locations that need to be checked for conflict + after the rename operation. It also renames all the reference locations and expands any conflict locations. + + The options describing this rename operation + The root of the annotated tree. + + + + Based on the kind of the symbol and the new name, this function determines possible conflicting names that + should be tracked for semantic changes during rename. + + The symbol that gets renamed. + The new name for the symbol. + List where possible conflicting names will be added to. + + + + Identifies the conflicts caused by the new declaration created during rename. + + The replacementText as given from the user. + The new symbol (after rename). + The original symbol that got renamed. + All referenced symbols that are part of this rename session. + The original solution when rename started. + The resulting solution after rename. + A mapping from new to old locations. + The cancellation token. + All locations where conflicts were caused because the new declaration. + + + + Identifies the conflicts caused by implicitly referencing the renamed symbol. + + The original symbol that got renamed. + The new symbol (after rename). + All implicit reference locations. + The cancellation token. + A list of implicit conflicts. + + + + Identifies the conflicts caused by implicitly referencing the renamed symbol. + + The new symbol (after rename). + The SemanticModel of the document in the new solution containing the renamedSymbol + The location of the renamedSymbol in the old solution + The starting position of the renamedSymbol in the new solution + The cancellation token. + A list of implicit conflicts. + + + + Identifies potential Conflicts into the inner scope locals. This may give false positives. + + The Token that may introduce errors else where + The symbols that this token binds to after the rename + has been applied + Returns if there is a potential conflict + + + + Used to find if the replacement Identifier is valid + + + + + + + + Gets the top most enclosing statement as target to call MakeExplicit on. + It's either the enclosing statement, or if this statement is inside of a lambda expression, the enclosing + statement of this lambda. + + The token to get the complexification target for. + + + + + mentions that the result is for the base symbol of the rename + + + + + mentions that the result is for the overloaded symbols of the rename + + + + + Set to true if the file name should match the type name after a rename operation + + + + + Call to perform a rename of document or change in document folders. Returns additional code changes related to the document + being modified, such as renaming symbols in the file. + + Each change is added as a in the returned . + + Each action may individually encounter errors that prevent it from behaving correctly. Those are reported in . + + + + Current supported actions that may be returned: + + Rename symbol action that will rename the type to match the document name. + Sync namespace action that will sync the namespace(s) of the document to match the document folders. + + + + The document to be modified + The new name for the document. Pass null or the same name to keep unchanged. + The new set of folders for the property + + + + Individual action from RenameDocument APIs in . Represents + changes that will be done to one or more document contents to help facilitate + a smooth experience while moving documents around. + + See on use case and how to apply them to a solution. + + + + + Get any errors that have been noted for this action before it is applied. + Can be used to present to a user. + + + + + Gets the description of the action. Can be used to present to a user to describe + what extra actions will be taken. + + + + + Information about rename document calls that allows them to be applied as individual actions. Actions are individual units of work + that can change the contents of one or more document in the solution. Even if the is empty, the + document metadata will still be updated by calling + + To apply all actions use , or use a subset + of the actions by calling . + Actions can be applied in any order. + Each action has a description of the changes that it will apply that can be presented to a user. + + + + + All applicable actions computed for the action. Action set may be empty, which represents updates to document + contents rather than metadata. Document metadata will still not be updated unless + is called. + + + + + Same as calling with + as the argument + + + + + Applies each in order and returns the final solution. + All actions must be contained in + + + An empty action set is still allowed and will return a modified solution + that will update the document properties as appropriate. This means we + can still support when is empty. It's desirable + that consumers can call a rename API to produce a and + immediately call without + having to inspect the returned . + + + + + Attempts to find the document in the solution. Tries by documentId first, but + that's not always reliable between analysis and application of the rename actions + + + + + Action that will rename a type to match the current document name. Works by finding a type matching the origanl name of the document (case insensitive) + and updating that type. + + + + + Finds a matching type such that the display name of the type matches the name passed in, ignoring case. Case isn't used because + documents with name "Foo.cs" and "foo.cs" should still have the same type name + + + + + Name of the document that the action was produced for. + + + + + The new document name that will be used. + + + + + The original name of the symbol that will be changed. + + + + + The new name for the symbol. + + + + + Action that will sync the namespace of the document to match the folders property + of that document, similar to if a user performed the "Sync Namespace" code refactoring. + + For example, if a document is moved from "Bat/Bar/Baz" folder structure to "Bat/Bar/Baz/Bat" and contains + a namespace definition of Bat.Bar.Baz in the document, then it would update that definition to + Bat.Bar.Baz.Bat and update the solution to reflect these changes. Uses + + + + + Renaming a private symbol typically confines the set of references and potential + conflicts to that symbols declaring project. However, rename may cascade to + non-public symbols which may then require other projects be considered. + + + + + Determine whether we can change the namespace for given in the document. + Linked documents are not supported, except for a regular document in a multi-targeting project, + where the container node must be consistent among all linked documents. + Here's the additional requirements on to use this service: + + - If is a namespace declaration node: + 1. Doesn't contain or is nested in other namespace declarations + 2. The name of the namespace is valid (i.e. no errors) + 3. No partial type declared in the namespace. Otherwise its multiple declarations will + end up in different namespace. + + - If is a compilation unit node: + 1. It must contain no namespace declaration + 2. No partial type declared in the document. Otherwise its multiple declarations will + end up in different namespace. + + - Otherwise, an will be thrown. + + Returns only when all the requirements above are met. + + + While this service might be used by features that change namespace based on some property of the document + (e.g. Sync namespace refactoring), those logic is implemented by those individual features and isn't part + of the IChangeNamespaceService service. + + + + + Change namespace for given to the name specified by . + Everything declared in the will be moved to the new namespace. + Change will only be made if returns and + is a valid name for namespace. Use "" for to specify the global namespace. + + An will be thrown if: + 1. is not a namespace declaration or a compilation unit node. + 2. is null or contains an invalid character. + + + If the declared namespace for is already identical to , then it will be + a no-op and original solution will be returned. + + + + + Using only the top level namespace declarations of a document, change all of them to the target namespace. Will only + use namespace containers considered valid by + + + + + Used to make sure we only report one watson per sessoin here. + + + + + Interface only for use by . Includes language specific + implementations on how to get an appropriate speculated semantic model given an older semantic model and a + changed method body. + + + + + Given a node, returns the parent method-body-esque node that we can get a new speculative semantic model + for. Returns if not in such a location. + + + + + Given a previous semantic model, and a method-eque node in the current tree for that same document, attempts + to create a new speculative semantic model using the top level symbols of but the new body level symbols produced for . + + Note: it is critical that no top level changes have occurred between the syntax tree that points at and the syntax tree that points + at. In other words, they must be (..., topLevel: true). This + function is undefined if they are not. + + + + + + The original non-speculative semantic model we retrieved for this document at some point. + + + + + The current semantic model we retrieved for the . Could + be speculative or non-speculative. + + + + + The current method body we retrieved the for. + + + + + The top level version of the project when we retrieved . As long as this is the + same we can continue getting speculative models to use. + + + + + A mapping from a document id to the last semantic model we produced for it, along with the top level + semantic version that that semantic model corresponds to. We can continue reusing the semantic model as + long as no top level changes occur. + + In general this dictionary will only contain a single key-value pair. However, in the case of linked + documents, there will be a key-value pair for each of the independent document links that a document + has. + + + A value simply means we haven't cached any information for that particular id. + + + + + + a service that provides a semantic model that will re-use last known compilation if + semantic version hasn't changed. + + + + + Don't call this directly. use (or an overload). + + + + + Gets a mutable reference to a stored in a using variable. + + + This supporting method allows , a non-copyable + implementing , to be used with using statements while still allowing them to + be passed by reference in calls. The following two calls are equivalent: + + + using var array = TemporaryArray<T>.Empty; + + // Using the 'Unsafe.AsRef' method + Method(ref Unsafe.AsRef(in array)); + + // Using this helper method + Method(ref array.AsRef()); + + + ⚠ Do not move or rename this method without updating the corresponding + RS0049 + analyzer. + + The type of element stored in the temporary array. + A read-only reference to a temporary array which is part of a using statement. + A mutable reference to the temporary array. + + + + Provides temporary storage for a collection of elements. This type is optimized for handling of small + collections, particularly for cases where the collection will eventually be discarded or used to produce an + . + + + This type stores small collections on the stack, with the ability to transition to dynamic storage if/when + larger number of elements are added. + + The type of elements stored in the collection. + + + + The number of elements the temporary can store inline. Storing more than this many elements requires the + array transition to dynamic storage. + + + + + The first inline element. + + + This field is only used when is . In other words, this type + stores elements inline or stores them in , but does not use both approaches + at the same time. + + + + + The second inline element. + + + + + + The third inline element. + + + + + + The fourth inline element. + + + + + + The number of inline elements held in the array. This value is only used when is + . + + + + + A builder used for dynamic storage of collections that may exceed the limit for inline elements. + + + This field is initialized to non- the first time the + needs to store more than four elements. From that point, is used instead of inline + elements, even if items are removed to make the result smaller than four elements. + + + + + Create an with the elements currently held in the temporary array, and clear + the array. + + + + + + Transitions the current from inline storage to dynamic storage storage. An + instance is taken from the shared pool, and all elements currently in inline + storage are added to it. After this point, dynamic storage will be used instead of inline storage. + + + + + Throws . + + + This helper improves the ability of the JIT to inline callers. + + + + + An interval tree represents an ordered tree data structure to store intervals of the form + [start, end). It allows you to efficiently find all intervals that intersect or overlap + a provided interval. + + + + The number of matching intervals found by the method. + + + The number of matching intervals found by the method. + + + + Warning. Mutates the tree in place. + + + + + + Warning. Mutates the tree in place. + + + + + Returns the semantic model for this document that may be produced from partial semantics. The semantic model + is only guaranteed to contain the syntax tree for and nothing else. + + + + + Attempts to return an speculative semantic model for if possible if is contained within a method body in the tree. Specifically, this will attempt to get an + existing cached semantic model for . If it can find one, and the top-level semantic + version for this project matches the cached version, and the position is within a method body, then it will + be returned, just with the previous corresponding method body swapped out with the current method body. + + If this is not possible, the regular semantic model for will be returned. + + When using this API, semantic model should only be used to ask questions about nodes inside of the member + that contains the given . + + As a speculative semantic model may be returned, location based information provided by it may be innacurate. + + + + + Attempts to return an speculative semantic model for if possible if is contained within a method body in the tree. Specifically, this will attempt to get an + existing cached semantic model . If it can find one, and the top-level semantic + version for this project matches the cached version, and the position is within a method body, then it will + be returned, just with the previous corresponding method body swapped out with the current method body. + + If this is not possible, the regular semantic model for will be returned. + + When using this API, semantic model should only be used to ask questions about nodes inside of the + member that contains the given . + + As a speculative semantic model may be returned, location based information provided by it may be innacurate. + + + + + Attempts to return an speculative semantic model for if possible if is contained within a method body in the tree. Specifically, this will attempt to get an + existing cached semantic model . If it can find one, and the top-level semantic + version for this project matches the cached version, and the position is within a method body, then it will + be returned, just with the previous corresponding method body swapped out with the current method body. + + If this is not possible, the regular semantic model for will be returned. + + When using this API, semantic model should only be used to ask questions about nodes inside of the + member that contains the given . + + As a speculative semantic model may be returned, location based information provided by it may be innacurate. + + + + + Get mapped file path if exist, otherwise return null. + + + + + Returns the methodSymbol and any partial parts. + + + + + Returns true for void returning methods with two parameters, where + the first parameter is of type and the second + parameter inherits from or equals type. + + + + + Gets the set of members in the inheritance chain of that + are overridable. The members will be returned in furthest-base type to closest-base + type order. i.e. the overridable members of will be at the start + of the list, and the members of the direct parent type of + will be at the end of the list. + + If a member has already been overridden (in or any base type) + it will not be included in the list. + + + + + Searches the namespace for namespaces with the provided name. + + + + + Checks a given symbol for browsability based on its declaration location, attributes + explicitly limiting browsability, and whether showing of advanced members is enabled. + The optional editorBrowsableInfo parameters may be used to specify the symbols of the + constructors of the various browsability limiting attributes because finding these + repeatedly over a large list of symbols can be slow. If these are not provided, + they will be found in the compilation. + + + + + First, remove symbols from the set if they are overridden by other symbols in the set. + If a symbol is overridden only by symbols outside of the set, then it is not removed. + This is useful for filtering out symbols that cannot be accessed in a given context due + to the existence of overriding members. Second, remove remaining symbols that are + unsupported (e.g. pointer types in VB) or not editor browsable based on the EditorBrowsable + attribute. + + + + + Returns if the signature of this symbol requires the modifier. For example a method that takes List<int*[]> + is unsafe, as is int* Goo { get; }. This will return for + symbols that cannot have the modifier on them. + + + + + Returns true if symbol is a local variable and its declaring syntax node is + after the current position, false otherwise (including for non-local symbols) + + + + + If the is a method symbol, returns if the method's return type is "awaitable", but not if it's . + If the is a type symbol, returns if that type is "awaitable". + An "awaitable" is any type that exposes a GetAwaiter method which returns a valid "awaiter". This GetAwaiter method may be an instance method or an extension method. + + + + + Returns true for symbols whose name starts with an underscore and + are optionally followed by an integer, such as '_', '_1', '_2', etc. + These are treated as special discard symbol names. + + + + + Returns , if the symbol is marked with the . + + + if the symbol is marked with the . + + + + Visits types or members that have signatures (i.e. methods, fields, etc.) and determines + if any of them reference a pointer type and should thus have the modifier on them. + + + + + Checks if 'symbol' is accessible from within 'within'. + + + + + Checks if 'symbol' is accessible from within assembly 'within'. + + + + + Checks if 'symbol' is accessible from within name type 'within', with an optional + qualifier of type "throughTypeOpt". + + + + + Checks if 'symbol' is accessible from within assembly 'within', with an qualifier of + type "throughTypeOpt". Sets "failedThroughTypeCheck" to true if it failed the "through + type" check. + + + + + Checks if 'symbol' is accessible from within 'within', which must be a INamedTypeSymbol + or an IAssemblySymbol. If 'symbol' is accessed off of an expression then + 'throughTypeOpt' is the type of that expression. This is needed to properly do protected + access checks. Sets "failedThroughTypeCheck" to true if this protected check failed. + + + + + Returns the corresponding symbol in this type or a base type that implements + interfaceMember (either implicitly or explicitly), or null if no such symbol exists + (which might be either because this type doesn't implement the container of + interfaceMember, or this type doesn't supply a member that successfully implements + interfaceMember). + + + + + Gets extended host language services, which includes language services from . + + + + + Acquires a lease on a safe handle. The lease increments the reference count of the + to ensure the handle is not released prior to the lease being released. + + + This method is intended to be used in the initializer of a using statement. Failing to release the + lease will permanently prevent the underlying from being released by the garbage + collector. + + The to lease. + A , which must be disposed to release the resource. + If the lease could not be acquired. + + + + Represents a lease of a . + + + + + + Releases the lease. The behavior of this method is unspecified if called more than + once. + + + + + Fetches the ITypeSymbol that should be used if we were generating a parameter or local that would accept . If + expression is a type, that's returned; otherwise this will see if it's something like a method group and then choose an appropriate delegate. + + + + + Gets semantic information, such as type, symbols, and diagnostics, about the parent of a token. + + The SemanticModel object to get semantic information + from. + The token to get semantic information from. This must be part of the + syntax tree associated with the binding. + A cancellation token. + + + + Returns the leading whitespace of the line located at the specified position in the given snapshot. + + + + + Same as OverlapsHiddenPosition but doesn't throw on cancellation. Instead, returns false + in that case. + + + + + Generates a call to a method *through* an existing field or property symbol. + + + + + + Generates an override of similar to the one + generated for anonymous types. + + + + + In VB it's more idiomatic to write things like Dim t = TryCast(obj, SomeType) + instead of Dim t As SomeType = TryCast(obj, SomeType), so we just elide the type + from the decl. For C# we don't want to do this though. We want to always include the + type and let the simplifier decide if it should be var or not. + + + + + Returns true if the binaryExpression consists of an expression that can never be negative, + such as length or unsigned numeric types, being compared to zero with greater than, + less than, or equals relational operator. + + + + + Gets a type by its metadata name to use for code analysis within a . This method + attempts to find the "best" symbol to use for code analysis, which is the symbol matching the first of the + following rules. + + + + If only one type with the given name is found within the compilation and its referenced assemblies, that + type is returned regardless of accessibility. + + + If the current defines the symbol, that symbol is returned. + + + If exactly one referenced assembly defines the symbol in a manner that makes it visible to the current + , that symbol is returned. + + + Otherwise, this method returns . + + + + The to consider for analysis. + The fully-qualified metadata type name to find. + The symbol to use for code analysis; otherwise, . + + + + Gets project-level effective severity of the given accounting for severity configurations from both the following sources: + 1. Compilation options from ruleset file, if any, and command line options such as /nowarn, /warnaserror, etc. + 2. Analyzer config documents at the project root directory or in ancestor directories. + + + + + Tries to get configured severity for the given + from bulk configuration analyzer config options, i.e. + 'dotnet_analyzer_diagnostic.category-%RuleCategory%.severity = %severity%' + or + 'dotnet_analyzer_diagnostic.severity = %severity%' + Docs: https://docs.microsoft.com/visualstudio/code-quality/use-roslyn-analyzers?view=vs-2019#set-rule-severity-of-multiple-analyzer-rules-at-once-in-an-editorconfig-file for details + + + + + Update a list in place, where a function has the ability to either transform or remove each item. + + The type of items in the list. + The type of state argument passed to the transformation callback. + The list to update. + A function which transforms each element. The function returns the transformed list + element, or to remove the current item from the list. + The state argument to pass to the transformation callback. + + + + Attempts to remove the first item selected by . + + + True if any item has been removed. + + + + + check whether the given span is intersects with the tree + + + + + Returns true if is a given token is a child token of a certain type of parent node. + + The type of the parent node. + The node that we are testing. + A function that, when given the parent node, returns the child token we are interested in. + + + + Returns true if this node is found underneath the specified child in the given parent. + + + + + create a new root node from the given root after adding annotations to the tokens + + tokens should belong to the given root + + + + + create a new root node from the given root after adding annotations to the nodes + + nodes should belong to the given root + + + + + Creates a new tree of nodes from the existing tree with the specified old nodes replaced with a newly computed nodes. + + The root of the tree that contains all the specified nodes. + The nodes from the tree to be replaced. + A function that computes a replacement node for + the argument nodes. The first argument is one of the original specified nodes. The second argument is + the same node possibly rewritten with replaced descendants. + + + + + Creates a new tree of tokens from the existing tree with the specified old tokens replaced with a newly computed tokens. + + The root of the tree that contains all the specified tokens. + The tokens from the tree to be replaced. + A function that computes a replacement token for + the argument tokens. The first argument is one of the originally specified tokens. The second argument is + the same token possibly rewritten with replaced trivia. + + + + + Look inside a trivia list for a skipped token that contains the given position. + + + + + Look inside a trivia list for a skipped token that contains the given position. + + + + + Look inside a trivia list for a skipped token that contains the given position. + + + + + Look inside a trivia list for a skipped token that contains the given position. + + + + + If the position is inside of token, return that token; otherwise, return the token to the right. + + + + + If the position is inside of token, return that token; otherwise, return the token to the left. + + + + + Creates a new token with the leading trivia removed. + + + + + Creates a new token with the trailing trivia removed. + + + + + Gets a list of ancestor nodes (including this node) + + + + + Returns the identifier, keyword, contextual keyword or preprocessor keyword touching this + position, or a token of Kind = None if the caret is not touching either. + + + + + If the position is inside of token, return that token; otherwise, return the token to the right. + + + + + If the position is inside of token, return that token; otherwise, return the token to the left. + + + + + Returns the first non-whitespace position on the given line, or null if + the line is empty or contains only whitespace. + + + + + Returns the first non-whitespace position on the given line as an offset + from the start of the line, or null if the line is empty or contains only + whitespace. + + + + + Determines whether the specified line is empty or contains whitespace only. + + + + + merge provided spans to each distinct group of spans in ascending order + + + + + Returns true if the span encompasses the specified node or token and is contained within its trivia. + + + + + Returns true if the span encompasses a span between the specified nodes or tokens + and is contained within trivia around them. + + + + + Lazily returns all nested types contained (recursively) within this namespace or type. + In case of a type, it is included itself as the first result. + + + + + Standard format for displaying to the user. + + + No return type. + + + + + Contains enough information to determine whether two symbols have the same signature. + + + + + The token to the left of . This token may be touching the position. + + + + + The first token to the left of that we're not touching. Equal to + if we aren't touching . + + + + + Performs several edits to a document. If multiple edits are made within the same + expression context, then the document/semantic-model will be forked after each edit + so that further edits can see if they're still safe to apply. + + + + + Performs several edits to a document. If multiple edits are made within the same + expression context, then the document/semantic-model will be forked after each edit + so that further edits can see if they're still safe to apply. + + + + + Performs several edits to a document. If multiple edits are made within the same + expression context, then the document/semantic-model will be forked after each edit + so that further edits can see if they're still safe to apply. + + + + + Performs several edits to a document. If multiple edits are made within a method + body then the document/semantic-model will be forked after each edit so that further + edits can see if they're still safe to apply. + + + + + Performs several edits to a document. If multiple edits are made within a method + body then the document/semantic-model will be forked after each edit so that further + edits can see if they're still safe to apply. + + + + + Helper function for fix-all fixes where individual fixes may affect the viability + of another. For example, consider the following code: + + if ((double)x == (double)y) + + In this code either cast can be removed, but at least one cast must remain. Even + though an analyzer marks both, a fixer must not remove both. One way to accomplish + this would be to have the fixer do a semantic check after each application. However + This is extremely expensive, especially for hte common cases where one fix does + not affect each other. + + To address that, this helper groups fixes at certain boundary points. i.e. at + statement boundaries. If there is only one fix within the boundary, it does not + do any semantic verification. However, if there are multiple fixes in a boundary + it will call into to validate if the subsequent fix + can be made or not. + + + + + Creates a new instance of this text document updated to have the text specified. + + + + + Creates a new instance of this additional document updated to have the text specified. + + + + + Creates a new instance of this analyzer config document updated to have the text specified. + + + + + Stores the source information for an value. Helpful when + tracking down tokens which aren't properly disposed. + + + + + use in product code to get + and use + in test to get waiter. + + + + + indicate whether asynchronous listener is enabled or not. + it is tri-state since we want to retrieve this value, if never explicitly set, from environment variable + and then cache it. + we read value from environment variable (RoslynWaiterEnabled) because we want team, that doesn't have + access to Roslyn code (InternalVisibleTo), can use this listener/waiter framework as well. + those team can enable this without using API + + + + + indicate whether is enabled or not + it is tri-state since we want to retrieve this value, if never explicitly set, from environment variable + and then cache it. + we read value from environment variable (RoslynWaiterDiagnosticTokenEnabled) because we want team, that doesn't have + access to Roslyn code (InternalVisibleTo), can use this listener/waiter framework as well. + those team can enable this without using API + + + + + Provides a default value for . + + + + + Enable or disable TrackActiveTokens for test + + + + + Get Waiters for listeners for test + + + + + Wait for all of the instances to finish their + work. + + + This is a very handy method for debugging hangs in the unit test. Set a break point in the + loop, dig into the waiters and see all of the active values + representing the remaining work. + + + + + Get all saved DiagnosticAsyncToken to investigate tests failure easier + + + + + Return for the given featureName + + We have this abstraction so that we can have isolated listener/waiter in unit tests + + + + + Get for given feature. + same provider will return a singleton listener for same feature + + + + + Returns a task which completes when all asynchronous operations currently tracked by this waiter are + completed. Asynchronous operations are expedited when possible, meaning artificial delays placed before + asynchronous operations are shortened. + + + + + Returns an awaitable for the specified task that will never throw, even if the source task + faults or is canceled. + + The task whose completion should signal the completion of the returned awaitable. + if set to true the continuation will be scheduled on the caller's context; false to always execute the continuation on the threadpool. + An awaitable. + + + + An awaitable that wraps a task and never throws an exception when waited on. + + + + + The task. + + + + + A value indicating whether the continuation should be scheduled on the current sync context. + + + + + Initializes a new instance of the struct. + + The task. + Whether the continuation should be scheduled on the current sync context. + + + + Gets the awaiter. + + The awaiter. + + + + An awaiter that wraps a task and never throws an exception when waited on. + + + + + The task. + + + + + A value indicating whether the continuation should be scheduled on the current sync context. + + + + + Initializes a new instance of the struct. + + The task. + if set to true [capture context]. + + + + Gets a value indicating whether the task has completed. + + + + + Schedules a delegate for execution at the conclusion of a task's execution. + + The action. + + + + Schedules a delegate for execution at the conclusion of a task's execution + without capturing the ExecutionContext. + + The action. + + + + Does nothing. + + + + + Creates a task that will complete after a time delay, but can be expedited if an operation is waiting for + the task to complete. + + The time to wait before completing the returned task, or TimeSpan.FromMilliseconds(-1) to wait indefinitely. + A cancellation token to observe while waiting for the task to complete. + if the delay compeleted normally; otherwise, if the delay completed due to a request to expedite the delay. + + represents a negative time interval other than TimeSpan.FromMilliseconds(-1). + -or- + The argument's property is greater than . + + The delay has been canceled. + + + + + + + Modification of the murmurhash2 algorithm. Code is simpler because it operates over + strings instead of byte arrays. Because each string character is two bytes, it is known + that the input will be an even number of bytes (though not necessarily a multiple of 4). + + This is needed over the normal 'string.GetHashCode()' because we need to be able to generate + 'k' different well distributed hashes for any given string s. Also, we want to be able to + generate these hashes without allocating any memory. My ideal solution would be to use an + MD5 hash. However, there appears to be no way to do MD5 in .NET where you can: + + a) feed it individual values instead of a byte[] + + b) have the hash computed into a byte[] you provide instead of a newly allocated one + + Generating 'k' pieces of garbage on each insert and lookup seems very wasteful. So, + instead, we use murmur hash since it provides well distributed values, allows for a + seed, and allocates no memory. + + Murmur hash is public domain. Actual code is included below as reference. + + + + + A documentation comment derived from either source text or metadata. + + + + + True if an error occurred when parsing. + + + + + The full XML text of this tag. + + + + + The text in the <example> tag. Null if no tag existed. + + + + + The text in the <summary> tag. Null if no tag existed. + + + + + The text in the <returns> tag. Null if no tag existed. + + + + + The text in the <value> tag. Null if no tag existed. + + + + + The text in the <remarks> tag. Null if no tag existed. + + + + + The names of items in <param> tags. + + + + + The names of items in <typeparam> tags. + + + + + The types of items in <exception> tags. + + + + + The item named in the <completionlist> tag's cref attribute. + Null if the tag or cref attribute didn't exist. + + + + + Used for method, to prevent new allocation of string + + + + + Cache of the most recently parsed fragment and the resulting DocumentationComment + + + + + Parses and constructs a from the given fragment of XML. + + The fragment of XML to parse. + A DocumentationComment instance. + + + + Helper class for parsing XML doc comments. Encapsulates the state required during parsing. + + + + + Parse and construct a from the given fragment of XML. + + The fragment of XML to parse. + A DocumentationComment instance. + + + + Returns the text for a given parameter, or null if no documentation was given for the parameter. + + + + + Returns the text for a given type parameter, or null if no documentation was given for the type parameter. + + + + + Returns the texts for a given exception, or an empty if no documentation was given for the exception. + + + + + An empty comment. + + + + + Finds the constructor which takes exactly one argument, which must be of type EditorBrowsableState. + It does not require that the EditorBrowsableAttribute and EditorBrowsableState types be those + shipped by Microsoft, but it does demand the types found follow the expected pattern. If at any + point that pattern appears to be violated, return null to indicate that an appropriate constructor + could not be found. + + + + + The TypeLib*Attribute classes that accept TypeLib*Flags with FHidden as an option all have two constructors, + one accepting a TypeLib*Flags and the other a short. This methods gets those two constructor symbols for any + of these attribute classes. It does not require that the either of these types be those shipped by Microsoft, + but it does demand the types found follow the expected pattern. If at any point that pattern appears to be + violated, return an empty enumerable to indicate that no appropriate constructors were found. + + + + + Determines, using heuristics, what the next likely value is in this enum. + + + + + Helper for checking whether cycles exist in the extension ordering. + Throws if a cycle is detected. + + A cycle was detected in the extension ordering. + + + + Returns an that will call on + when it is disposed. + + + + + An optional interface which allows an environment to customize the behavior for synchronous methods that need to + block on the result of an asynchronous invocation. An implementation of this is provided in the MEF catalog when + applicable. + + + For Visual Studio, Microsoft.VisualStudio.Threading provides the JoinableTaskFactory.Run method, which is + the expected way to invoke an asynchronous method from a synchronous entry point and block on its completion. + Other environments may choose to use this or any other strategy, or omit an implementation of this interface to + allow callers to simply use . + + New code is expected to use fully-asynchronous programming where possible. In cases where external APIs + restrict ability to be asynchronous, this service allows Roslyn to adhere to environmental policies related to + joining asynchronous work. + + + + + Utility class that can be used to track the progress of an operation in a threadsafe manner. + + + + + Utility class that can be used to track the progress of an operation in a threadsafe manner. + + + + + An XML parser that is designed to parse small fragments of XML such as those that appear in documentation comments. + PERF: We try to re-use the same underlying to reduce the allocation costs of multiple parses. + + + + + Parse the given XML fragment. The given callback is executed until either the end of the fragment + is reached or an exception occurs. + + Type of an additional argument passed to the delegate. + The fragment to parse. + Action to execute while there is still more to read. + Additional argument passed to the callback. + + It is important that the action advances the , + otherwise parsing will never complete. + + + + + A text reader over a synthesized XML stream consisting of a single root element followed by a potentially + infinite stream of fragments. Each time "SetText" is called the stream is rewound to the element immediately + following the synthetic root node. + + + + + Current text to validate. + + + + + Helper class to analyze the semantic effects of a speculated syntax node replacement on the parenting nodes. + Given an expression node from a syntax tree and a new expression from a different syntax tree, + it replaces the expression with the new expression to create a speculated syntax tree. + It uses the original tree's semantic model to create a speculative semantic model and verifies that + the syntax replacement doesn't break the semantics of any parenting nodes of the original expression. + + + + + Creates a semantic analyzer for speculative syntax replacement. + + Original expression to be replaced. + New expression to replace the original expression. + Semantic model of node's syntax tree. + Cancellation token. + + True if semantic analysis should be skipped for the replaced node and performed starting from parent of the original and replaced nodes. + This could be the case when custom verifications are required to be done by the caller or + semantics of the replaced expression are different from the original expression. + + + True if semantic analysis should fail when any of the invocation expression ancestors of in original code has overload resolution failures. + + + + + Original expression to be replaced. + + + + + First ancestor of which is either a statement, attribute, constructor initializer, + field initializer, default parameter initializer or type syntax node. + It serves as the root node for all semantic analysis for this syntax replacement. + + + + + Semantic model for the syntax tree corresponding to + + + + + Node which replaces the . + Note that this node is a cloned version of node, which has been re-parented + under the node to be speculated, i.e. . + + + + + Node created by replacing under node. + This node is used as the argument to the GetSpeculativeSemanticModel API and serves as the root node for all + semantic analysis of the speculated tree. + + + + + Speculative semantic model used for analyzing the semantics of the new tree. + + + + + Determines whether performing the given syntax replacement will change the semantics of any parenting expressions + by performing a bottom up walk from the up to + in the original tree and simultaneously walking bottom up from up to + in the speculated syntax tree and performing appropriate semantic comparisons. + + + + + Checks whether the semantic symbols for the and are non-null and compatible. + + + + + + Determine if removing the cast could cause the semantics of System.Object method call to change. + E.g. Dim b = CStr(1).GetType() is necessary, but the GetType method symbol info resolves to the same with or without the cast. + + + + + Determines if the symbol is a non-overridable, non static method on System.Object (e.g. GetType) + + + + + If the token1 is expected to be part of the leading trivia of the token2 then the trivia + before the token1FullSpanEnd, which the fullspan end of the token1 should be ignored + + + + + this will create a span that includes its trailing trivia of its previous token and leading trivia of its next token + for example, for code such as "class A { int ...", if given tokens are "A" and "{", this will return span [] of "class[ A { ]int ..." + which included trailing trivia of "class" which is previous token of "A", and leading trivia of "int" which is next token of "{" + + + + + Given a set of folders from build the namespace that would match + the folder structure. If a document is located in { "Bat" , "Bar", "Baz" } then the namespace could be + "Bat.Bar.Baz". If a rootNamespace is provided, it is prepended to the generated namespace. + + Returns null if the folders contain parts that are invalid identifiers for a namespace. + + + + + Helper as VB's CType doesn't work without arithmetic overflow. + + + + + Helper class to allow one to do simple regular expressions over a sequence of objects (as + opposed to a sequence of characters). + + + + + Matcher equivalent to (m*) + + + + + Matcher equivalent to (m+) + + + + + Matcher equivalent to (m_1|m_2|...|m_n) + + + + + Matcher equivalent to (m_1 ... m_n) + + + + + Matcher that matches an element if the provide predicate returns true. + + + + + Breaks an identifier string into constituent parts. + + + + + Provides a way to test two symbols for equivalence. While there are ways to ask for + different sorts of equivalence, the following must hold for two symbols to be considered + equivalent. + + The kinds of the two symbols must match. + The names of the two symbols must match. + The arity of the two symbols must match. + If the symbols are methods or parameterized properties, then the signatures of the two + symbols must match. + Both symbols must be definitions or must be instantiations. If they are instantiations, + then they must be instantiated in the same manner. + The containing symbols of the two symbols must be equivalent. + Nullability of symbols is not involved in the comparison. + + Note: equivalence does not concern itself with whole symbols. Two types are considered + equivalent if the above hold, even if one type has different members than the other. Note: + type parameters, and signature parameters are not considered 'children' when comparing + symbols. + + Options are provided to tweak the above slightly. For example, by default, symbols are + equivalent only if they come from the same assembly or different assemblies of the same simple name. + However, one can ask if two symbols are equivalent even if their assemblies differ. + + + + + Compares given symbols and for equivalence. + + + + + Compares given symbols and for equivalence and populates + with equivalent non-nested named type key-value pairs that are contained in different assemblies. + These equivalent named type key-value pairs represent possibly equivalent forwarded types, but this API doesn't perform any type forwarding equivalence checks. + + This API is only supported for . + + + + Worker for comparing two named types for equivalence. Note: The two + types must have the same TypeKind. + + The first type to compare + The second type to compare + + Map of equivalent non-nested types to be populated, such that each key-value pair of named types are equivalent but reside in different assemblies. + This map is populated only if we are ignoring assemblies for symbol equivalence comparison, i.e. is true. + + True if the two types are equivalent. + + + + Opens a scope that will call on once + disposed. This is useful to easily wrap a series of operations and now that progress will be reported no + matter how it completes. + + + + + Transforms baseName into a name that does not conflict with any name in 'reservedNames' + + + + + Ensures that any 'names' is unique and does not collide with any other name. Names that + are marked as IsFixed can not be touched. This does mean that if there are two names + that are the same, and both are fixed that you will end up with non-unique names at the + end. + + + + + Updates the names in to be unique. A name at a particular + index i will not be touched if isFixed[i] is . All + other names will not collide with any other in and will all + return for canUse(name). + + + + + Initializes a new instance of that is + empty. + + + + + Initializes a new instance of that contains the specified span. + + TextSpan contained by the span set. + + + + Initializes a new instance of that contains the specified list of spans. + + The spans to be added. + + The list of spans will be sorted and normalized (overlapping and adjoining spans will be combined). + This constructor runs in O(N log N) time, where N = spans.Count. + is null. + + + + Finds the union of two span sets. + + + The first span set. + + + The second span set. + + + The new span set that corresponds to the union of and . + + This operator runs in O(N+M) time where N = left.Count, M = right.Count. + Either or is null. + + + + Finds the overlap of two span sets. + + The first span set. + The second span set. + The new span set that corresponds to the overlap of and . + This operator runs in O(N+M) time where N = left.Count, M = right.Count. + or is null. + + + + Finds the intersection of two span sets. + + The first span set. + The second span set. + The new span set that corresponds to the intersection of and . + This operator runs in O(N+M) time where N = left.Count, M = right.Count. + is null. + is null. + + + + Finds the difference between two sets. The difference is defined as everything in the first span set that is not in the second span set. + + The first span set. + The second span set. + The new span set that corresponds to the difference between and . + + Empty spans in the second set do not affect the first set at all. This method returns empty spans in the first set that are not contained by any set in + the second set. + + is null. + is null. + + + + Determines whether two span sets are the same. + + The first set. + The second set. + true if the two sets are equivalent, otherwise false. + + + + Determines whether two span sets are not the same. + + The first set. + The second set. + true if the two sets are not equivalent, otherwise false. + + + + Determines whether this span set overlaps with another span set. + + The span set to test. + true if the span sets overlap, otherwise false. + is null. + + + + Determines whether this span set overlaps with another span. + + The span to test. + true if this span set overlaps with the given span, otherwise false. + + + + Determines whether this span set intersects with another span set. + + Set to test. + true if the span sets intersect, otherwise false. + is null. + + + + Determines whether this span set intersects with another span. + + true if this span set intersects with the given span, otherwise false. + + + + Gets a unique hash code for the span set. + + A 32-bit hash code associated with the set. + + + + Determines whether this span set is the same as another object. + + The object to test. + true if the two objects are equal, otherwise false. + + + + Provides a string representation of the set. + + The string representation of the set. + + + + Private constructor for use when the span list is already normalized. + + An already normalized span list. + + + + Contains the options that needs to be drilled down to the Simplification Engine + + + + + This option tells the simplification engine if the Qualified Name should be replaced by Alias + if the user had initially not used the Alias + + + + + This option influences the name reduction of members of a module in VB. If set to true, the + name reducer will e.g. reduce Namespace.Module.Member to Namespace.Member. + + + + + This option says that if we should simplify the Generic Name which has the type argument inferred + + + + + This option says if we should simplify the Explicit Type in Local Declarations + + + + + This option says if we should simplify to NonGeneric Name rather than GenericName + + + + + This option says if we should simplify from Derived types to Base types in Static Member Accesses + + + + + This option says if we should simplify away the or in member access expressions. + + + + + This option says if we should simplify away the . or . in field access expressions. + + + + + This option says if we should simplify away the . or . in property access expressions. + + + + + This option says if we should simplify away the . or . in method access expressions. + + + + + This option says if we should simplify away the . or . in event access expressions. + + + + + This option says if we should prefer keyword for Intrinsic Predefined Types in Declarations + + + + + This option says if we should prefer keyword for Intrinsic Predefined Types in Member Access Expression + + + + + Expands and Reduces subtrees. + + Expansion: + 1) Makes inferred names explicit (on anonymous types and tuples). + 2) Replaces names with fully qualified dotted names. + 3) Adds parentheses around expressions + 4) Adds explicit casts/conversions where implicit conversions exist + 5) Adds escaping to identifiers + 6) Rewrites extension method invocations with explicit calls on the class containing the extension method. + + Reduction: + 1) Shortens dotted names to their minimally qualified form + 2) Removes unnecessary parentheses + 3) Removes unnecessary casts/conversions + 4) Removes unnecessary escaping + 5) Rewrites explicit calls to extension methods to use dot notation + 6) Removes unnecessary tuple element names and anonymous type member names + + + + + The annotation the reducer uses to identify sub trees to be reduced. + The Expand operations add this annotation to nodes so that the Reduce operations later find them. + + + + + This is the annotation used by the simplifier and expander to identify Predefined type and preserving + them from over simplification + + + + + The annotation used to identify sub trees to look for symbol annotations on. + It will then add import directives for these symbol annotations. + + + + + Expand qualifying parts of the specified subtree, annotating the parts using the annotation. + + + + + Expand qualifying parts of the specified subtree, annotating the parts using the annotation. + + + + + Expand qualifying parts of the specified subtree, annotating the parts using the annotation. + + + + + Expand qualifying parts of the specified subtree, annotating the parts using the annotation. + + + + + Reduce all sub-trees annotated with found within the document. The annotated node and all child nodes will be reduced. + + + + + Reduce the sub-trees annotated with found within the subtrees identified with the specified . + The annotated node and all child nodes will be reduced. + + + + + Reduce the sub-trees annotated with found within the specified span. + The annotated node and all child nodes will be reduced. + + + + + Reduce the sub-trees annotated with found within the specified spans. + The annotated node and all child nodes will be reduced. + + + + + This option describes the naming rules that should be applied to specified categories of symbols, + and the level to which those rules should be enforced. + + + + + This annotation will be used by the expansion/reduction to annotate expanded syntax nodes to store the information that an + alias was used before expansion. + + + + + When applied to a SyntaxNode, prevents the simplifier from converting a type to 'var'. + + + + + An annotation that holds onto information about a type or namespace symbol. + + + + + Resets all the document state cached by the analyzer. + + + + + Resets all the document state cached by the analyzer. + + + + + Register a solution crawler for a particular workspace + + + + + null implementation of the service. it doesn't do anything since there is no way to observe + its impact in this layer. + + + + + Option to turn configure background analysis scope for the current user. + + + + + Option to turn configure background analysis scope for the current solution. + + + + + This option is used by TypeScript and F#. + + + + + Enables forced scope when low VM is detected to improve performance. + + + + + Gets the background analysis scope configured through Tools → Options... + + This value is not affected by the solution-specific configuration set through + . + + + + + Gets the effective background analysis scope for the specified project. + + Gets the solution-specific analysis scope set through + , or the default analysis scope if no solution-specific + scope is set. + + + + + Gets the effective background analysis scope for the current solution. + + Gets the solution-specific analysis scope set through + , or the default analysis scope if no solution-specific + scope is set. + + + + + A service that enables storing and retrieving of information associated with solutions, + projects or documents across runtime sessions. + + + + + This lock guards all mutable fields in this type. + + + + + Can throw. If it does, the caller () will attempt + to delete the database and retry opening one more time. If that fails again, the instance will be used. + + + + + A trivial wrapper that we can hand out for instances from the + that wraps the underlying singleton. + + + + + Obsolete. Roslyn no longer supports a mechanism to perform arbitrary persistence of data. If such functionality + is needed, consumers are responsible for providing it themselves with whatever semantics are needed. + + + + + Handle that can be used with to read data for a + without needing to have the entire snapshot available. + This is useful for cases where acquiring an entire snapshot might be expensive (for example, during + solution load), but querying the data is still desired. + + + + + Handle that can be used with to read data for a + without needing to have the entire snapshot available. + This is useful for cases where acquiring an entire snapshot might be expensive (for example, during + solution load), but querying the data is still desired. + + + + + Handle that can be used with to read data for a + without needing to have the entire snapshot available. + This is useful for cases where acquiring an entire snapshot might be expensive (for example, during + solution load), but querying the data is still desired. + + + + + encoded bytes of a text value. Span + should not be NUL-terminated. + + + + + The database that is stored on disk and actually persists data across VS sessions. + + + + + An in-memory database that caches values before being transferred to . Does not persist across VS sessions. + + + + + Name of the different dbs. + + 1. "main" is the default that sqlite uses. This just allows us to be explicit that we + want this db. + + 2. "writecache" is the name for the in-memory write-cache db. Writes will be staged + there and will be periodically flushed to the real on-disk db to help with perf. + + Perf measurements show this as significantly better than all other design options. It's + also one of the simplest in terms of the design. + + The design options in order of performance (slowest to fastest) are: + + 1. send writes directly to the main db. this is incredibly slow (since each write incurs + the full IO overhead of a transaction). It is the absolute simplest in terms of + implementation though. + + 2. send writes to a temporary on-disk db (with synchronous=off and journal_mode=memory), + then flush those to the main db. This is also quite slow due to their still needing to + be disk IO with each write. Implementation is fairly simple, with writes just going to + the temp db and reads going to both. + + 3. Buffer writes in (.net) memory and flush them to disk. This is much faster than '1' + or '2' but requires a lot of manual book-keeping and extra complexity. For example, any + reads go to the db. So that means that reads have to ensure that any writes to the same + rows have been persisted so they can observe them. + + 4. send writes to an sqlite in-memory cache DB. This is extremely fast for sqlite as + there is no actual IO that is performed. It is also easy in terms of bookkeeping as + both DBs have the same schema and are easy to move data between. '4' is faster than all + of the above. Complexity is minimized as reading can be done just by examining both DBs + in the same way. It's not as simple as '1' but it's much simpler than '3'. + + + + + Simple wrapper struct for a that helps ensure that the statement is always has it's + bindings cleared () and is after it is + used. + + See https://sqlite.org/c3ref/stmt.html: + The life-cycle of a prepared statement object usually goes like this: + 1) Create the prepared statement object using sqlite3_prepare_v2(). + 2) Bind values to parameters using the sqlite3_bind_* () interfaces. + 3) Run the SQL by calling sqlite3_step() one or more times. + 4) Reset the prepared statement using sqlite3_reset() then go back to step 2. Do this zero or more times. + 5) Destroy the object using sqlite3_finalize(). + + This type helps ensure that '4' happens properly by clients executing statement. + Note that destroying/finalizing a statement is not the responsibility of a client + as it will happen to all prepared statemnets when the is + d. + + + + + Encapsulates a connection to a sqlite database. On construction an attempt will be made + to open the DB if it exists, or create it if it does not. + + Connections are considered relatively heavyweight and are pooled until the + is d. Connections can be used by different threads, + but only as long as they are used by one thread at a time. They are not safe for concurrent + use by several threads. + + s can be created through the user of . + These statements are cached for the lifetime of the connection and are only finalized + (i.e. destroyed) when the connection is closed. + + + + + The raw handle to the underlying DB. + + + + + Our cache of prepared statements for given sql strings. + + + + + Whether or not we're in a transaction. We currently don't supported nested transactions. + If we want that, we can achieve it through sqlite "save points". However, that's adds a + lot of complexity that is nice to avoid. + + + + + Represents a prepared sqlite statement. s can be + ed (i.e. executed). Executing a statement can result in + either if the command completed and produced no + value, or if it evaluated out to a sql row that can + then be queried. + + If a statement is parameterized then parameters can be provided by the + BindXXX overloads. Bind is 1-based (to match sqlite). + + When done executing a statement, the statement should be . + The easiest way to ensure this is to just use a 'using' statement along with + a . By resetting the statement, it can + then be used in the future with new bound parameters. + + Finalization/destruction of the underlying raw sqlite statement is handled + by . + + + + + Gets a from the connection pool, or creates one if none are available. + + + Database connections have a large amount of overhead, and should be returned to the pool when they are no + longer in use. In particular, make sure to avoid letting a connection lease cross an + boundary, as it will prevent code in the asynchronous operation from using the existing connection. + + + + + + Only use this overload if it is safe to bypass the normal scheduler check. Only startup code (which runs + before any reads/writes/flushes happen) should use this. + + + + + Maps from database file path to connection pool. + + + Access to this field is synchronized through . + + + + + Use a to simulate a reader-writer lock. + Read operations are performed on the + and writes are performed on the . + + We use this as a condition of using the in-memory shared-cache sqlite DB. This DB + doesn't busy-wait when attempts are made to lock the tables in it, which can lead to + deadlocks. Specifically, consider two threads doing the following: + + Thread A starts a transaction that starts as a reader, and later attempts to perform a + write. Thread B is a writer (either started that way, or started as a reader and + promoted to a writer first). B holds a RESERVED lock, waiting for readers to clear so it + can start writing. A holds a SHARED lock (it's a reader) and tries to acquire RESERVED + lock (so it can start writing). The only way to make progress in this situation is for + one of the transactions to roll back. No amount of waiting will help, so when SQLite + detects this situation, it doesn't honor the busy timeout. + + To prevent this scenario, we control our access to the db explicitly with operations that + can concurrently read, and operations that exclusively write. + + All code that reads or writes from the db should go through this. + + + + + Returns null in the case where an IO exception prevented us from being able to acquire + the db lock file. + + + + + Implementation of an backed by SQLite. + + + + + Abstracts out access to specific tables in the DB. This allows us to share overall + logic around cancellation/pooling/error-handling/etc, while still hitting different + db tables. + + + + + Gets the internal sqlite db-id (effectively the row-id for the doc or proj table, or just the string-id + for the solution table) for the provided caller key. This db-id will be looked up and returned if a + mapping already exists for it in the db. Otherwise, a guaranteed unique id will be created for it and + stored in the db for the future. This allows all associated data to be cheaply associated with the + simple ID, avoiding lots of db bloat if we used the full in numerous places. + + Whether or not the caller owns the write lock and thus is ok with the DB id + being generated and stored for this component key when it currently does not exist. If then failing to find the key will result in being returned. + + + + + Mapping from the workspace's ID for a document, to the ID we use in the DB for the document. + Kept locally so we don't have to hit the DB for the common case of trying to determine the + DB id for a document. + + + + + Given a document, and the name of a stream to read/write, gets the integral DB ID to + use to find the data inside the DocumentData table. + + + + + responsible for storing and + retrieving data from . + + + + + A queue to batch up flush requests and ensure that we don't issue then more often than every . + + + + + Amount of time to wait between flushing writes to disk. 500ms means we can flush + writes to disk two times a second. + + + + + We use a pool to cache reads/writes that are less than 4k. Testing with Roslyn, + 99% of all writes (48.5k out of 49.5k) are less than that size. So this helps + ensure that we can pool as much as possible, without caching excessively large + arrays (for example, Roslyn does write out nearly 50 chunks that are larger than + 100k each). + + + + + The max amount of byte[]s we cache. This caps our cache at 4MB while allowing + us to massively speed up writing (by batching writes). Because we can write to + disk two times a second. That means a total of 8MB/s that can be written to disk + using only our cache. Given that Roslyn itself only writes about 50MB to disk + after several minutes of analysis, this amount of bandwidth is more than sufficient. + + + + + Mapping from the workspace's ID for a project, to the ID we use in the DB for the project. + Kept locally so we don't have to hit the DB for the common case of trying to determine the + DB id for a project. + + + + + Given a project, and the name of a stream to read/write, gets the integral DB ID to + use to find the data inside the ProjectData table. + + + + + responsible for storing and + retrieving data from . + + + + + responsible for storing and + retrieving data from . Note that with the Solution + table there is no need for key->id translation. i.e. the key acts as the ID itself. + + + + + Inside the DB we have a table dedicated to storing strings that also provides a unique + integral ID per string. This allows us to store data keyed in a much more efficient + manner as we can use those IDs instead of duplicating strings all over the place. For + example, there may be many pieces of data associated with a file. We don't want to + key off the file path in all these places as that would cause a large amount of bloat. + + Because the string table can map from arbitrary strings to unique IDs, it can also be + used to create IDs for compound objects. For example, given the IDs for the FilePath + and Name of a Project, we can get an ID that represents the project itself by just + creating a compound key of those two IDs. This ID can then be used in other compound + situations. For example, a Document's ID is creating by compounding its Project's + ID, along with the IDs for the Document's FilePath and Name. + + The format of the table is: + + StringInfo + -------------------------------------------------------------- + | Id (integer, primary key, auto increment) | Data (varchar) | + -------------------------------------------------------------- + + + + + Inside the DB we have a table for data corresponding to the . The + data is just a blob that is keyed by a string Id. Data with this ID can be retrieved + or overwritten. + + The format of the table is: + + SolutionData + ------------------------------------------------------------------- + | DataId (primary key, varchar) | | Checksum (blob) | Data (blob) | + ------------------------------------------------------------------- + + + + + Inside the DB we have a table for data that we want associated with a . + The data is keyed off of an integral value produced by combining the ID of the Project and + the ID of the name of the data (see . + + This gives a very efficient integral key, and means that the we only have to store a + single mapping from stream name to ID in the string table. + + The format of the table is: + + ProjectData + ------------------------------------------------------------------- + | DataId (primary key, integer) | | Checksum (blob) | Data (blob) | + ------------------------------------------------------------------- + + + + + Inside the DB we have a table for data that we want associated with a . + The data is keyed off of an integral value produced by combining the ID of the Document and + the ID of the name of the data (see . + + This gives a very efficient integral key, and means that the we only have to store a + single mapping from stream name to ID in the string table. + + The format of the table is: + + DocumentData + ------------------------------------------------------------------- + | DataId (primary key, integer) | | Checksum (blob) | Data (blob) | + ------------------------------------------------------------------- + + + + + Used so we can mock out logging in unit tests. + + + + + Searches for packages that contain a type with the provided name and arity. + Note: Implementations are free to return the results they feel best for the + given data. Specifically, they can do exact or fuzzy matching on the name. + They can use or ignore the arity depending on their capabilities. + + Implementations should return results in order from best to worst (from their + perspective). + + + + + Searches for packages that contain an assembly with the provided name. + Note: Implementations are free to return the results they feel best for the + given data. Specifically, they can do exact or fuzzy matching on the name. + + Implementations should return results in order from best to worst (from their + perspective). + + + + + Searches for reference assemblies that contain a type with the provided name and arity. + Note: Implementations are free to return the results they feel best for the + given data. Specifically, they can do exact or fuzzy matching on the name. + They can use or ignore the arity depending on their capabilities. + + Implementations should return results in order from best to worst (from their + perspective). + + + + + Service that allows you to query the SymbolSearch database and which keeps + the database up to date. + + + + + Provides access to the telemetry service to workspace services. + Abstract away the actual implementation of the telemetry service (e.g. Microsoft.VisualStudio.Telemetry). + + + + + True if a telemetry session has started. + + + + + Serialized the current telemetry settings. Returns if session hasn't started. + + + + + Adds a used to log unexpected exceptions. + + + + + Removes a used to log unexpected exceptions. + + + + + Reports telemetry on API usage. + + + + + Feature name used in telemetry. + + + + + Interface to allow host (VS) to inform the OOP service to start incrementally analyzing and + reporting results back to the host. + + + + + Callback the host (VS) passes to the OOP service to allow it to send batch notifications about todo comments. + + + + + Serialization type used to pass information to/from OOP and VS. + + + + + The documentation provider used to lookup xml docs for any metadata reference we pass out. They'll + all get the same xml doc comment provider (as different references to the same compilation don't + see the xml docs any differently). This provider does root a Compilation around. However, this should + not be an issue in practice as the compilation we are rooting is a clone of the acutal compilation of + project, and not the compilation itself. This clone doesn't share any symbols/semantics with the main + compilation, and it can dump syntax trees whenever necessary. What is does store is the compact + decl-table which is safe and cheap to hold onto long term. When some downstream consumer of this + metadata-reference then needs to get xml-doc comments, it will resolve a doc-comment-id against this + decl-only-compilation. Resolution is very cheap, only causing the necessary symbols referenced directly + in the ID to be created. As downstream consumers are only likely to resolve a small handful of these + symbols in practice, this should not be expensive to hold onto. Importantly, semantic models and + complex method binding/caching should never really happen with this compilation. + + + + + A class used to provide XML documentation to the compiler for members from metadata from an XML document source. + + + + + Gets the source stream for the XML document. + + The cancellation token. + + + + + Creates an from bytes representing XML documentation data. + + The XML document bytes. + An . + + + + Creates an from an XML documentation file. + + The path to the XML file. + An . + + + + A trivial XmlDocumentationProvider which never returns documentation. + + + + + The name the underlying naming system came up with based on the argument itself. + This might be a name like "_value". We pass this along because it can help + later parts of the GenerateConstructor process when doing things like field hookup. + + + + + The name we think should actually be used for this parameter. This will include + stripping the name of things like underscores. + + + + + Returns true if a type name matches a document name. We use + case insensitive matching to determine this match so that files + "a.cs" and "A.cs" both match a class called "A" + + + + + Standard way to get the display name from a SyntaxNode. If the display + name is null, returns false. Otherwise uses + + + + + Gets a type name based on a document name. Returns null + if the document has no name or the document has invalid characters in the name + such that would throw. + + + + + A workspace that allows full manipulation of projects and documents, + but does not persist changes. + + + + + Returns true, signifiying that you can call the open and close document APIs to add the document into the open document list. + + + + + Clears all projects and documents from the workspace. + + + + + Adds an entire solution to the workspace, replacing any existing solution. + + + + + Adds a project to the workspace. All previous projects remain intact. + + + + + Adds a project to the workspace. All previous projects remain intact. + + + + + Adds multiple projects to the workspace at once. All existing projects remain intact. + + + + + + Adds a document to the workspace. + + + + + Adds a document to the workspace. + + + + + Puts the specified document into the open state. + + + + + Puts the specified document into the closed state. + + + + + Puts the specified additional document into the open state. + + + + + Puts the specified additional document into the closed state + + + + + Puts the specified analyzer config document into the open state. + + + + + Puts the specified analyzer config document into the closed state + + + + + Create a structure initialized from a compilers command line arguments. + + + + + Create a structure initialized with data from a compiler command line. + + + + + Hidden registry key to control maximum size of a text file we will read into memory. + we have this option to reduce a chance of OOM when user adds massive size files to the solution. + Default threshold is 100MB which came from some internal data on big files and some discussion. + + User can override default value by setting DWORD value on FileLengthThreshold in + "[VS HIVE]\Roslyn\Internal\Performance\Text" + + + + + Absolute path of the file. + + + + + Specifies an encoding to be used if the actual encoding of the file + can't be determined from the stream content (the stream doesn't start with Byte Order Mark). + If null auto-detect heuristics are used to determine the encoding. + Note that if the stream starts with Byte Order Mark the value of is ignored. + + + + + Creates a content loader for specified file. + + An absolute file path. + + Specifies an encoding to be used if the actual encoding can't be determined from the stream content (the stream doesn't start with Byte Order Mark). + If not specified auto-detect heuristics are used to determine the encoding. + Note that if the stream starts with Byte Order Mark the value of is ignored. + + is null. + is not an absolute path. + + + + Load a text and a version of the document in the workspace. + + + + + + + Load a text and a version of the document in the workspace. + + + + + + + Represents an additional file passed down to analyzers. + + + + + solution branch Id + + + + + Checksum of data can be used later to see whether two data are same or not + without actually comparing data itself + + + + + The intended size of the structure. + + + + + Create Checksum from given byte array. if byte array is bigger than , it will be + truncated to the size. + + + + + Create Checksum from given byte array. if byte array is bigger than , it will be + truncated to the size. + + + + + This structure stores the 20-byte hash as an inline value rather than requiring the use of + byte[]. + + + + + Paths of files produced by the compilation. + + + + + Full path to the assembly or module produced by the compilation, or if unknown. + + + + + for regular C#/VB files. + + + + + Represents a source code document that is part of a project. + It provides access to the source text, parsed syntax tree and the corresponding semantic model. + + + + + A cached reference to the . + + + + + A cached task that can be returned once the tree has already been created. This is only set if returns true, + so the inner value can be non-null. + + + + + The kind of source code this document contains. + + + + + True if the info of the document change (name, folders, file path; not the content) + + + + + Get the current syntax tree for the document if the text is already loaded and the tree is already parsed. + In almost all cases, you should call to fetch the tree, which will parse the tree + if it's not already parsed. + + + + + Get the current syntax tree version for the document if the text is already loaded and the tree is already parsed. + In almost all cases, you should call to fetch the version, which will load the tree + if it's not already available. + + + + + Gets the version of the document's top level signature if it is already loaded and available. + + + + + Gets the version of the syntax tree. This is generally the newer of the text version and the project's version. + + + + + if this Document supports providing data through the + and methods. + + If then these methods will return instead. + + + + + if this Document supports providing data through the + method. + + If then that method will return instead. + + + + + Gets the for this document asynchronously. + + + The returned syntax tree can be if the returns . This function may cause computation to occur the first time it is called, but will return + a cached result every subsequent time. 's can hold onto their roots lazily. So calls + to or may end up causing computation + to occur at that point. + + + + + Gets the root node of the current syntax tree if the syntax tree has already been parsed and the tree is still cached. + In almost all cases, you should call to fetch the root node, which will parse + the document if necessary. + + + + + Gets the root node of the syntax tree asynchronously. + + + The returned will be if returns . This function will return + the same value if called multiple times. + + + + + Only for features that absolutely must run synchronously (probably because they're + on the UI thread). Right now, the only feature this is for is Outlining as VS will + block on that feature from the UI thread when a document is opened. + + + + + Gets the current semantic model for this document if the model is already computed and still cached. + In almost all cases, you should call , which will compute the semantic model + if necessary. + + + + + Gets the semantic model for this document asynchronously. + + + The returned may be if returns . This function will + return the same value if called multiple times. + + + + + Creates a new instance of this document updated to have the source code kind specified. + + + + + Creates a new instance of this document updated to have the text specified. + + + + + Creates a new instance of this document updated to have a syntax tree rooted by the specified syntax node. + + + + + Creates a new instance of this document updated to have the specified name. + + + + + Creates a new instance of this document updated to have the specified folders. + + + + + Creates a new instance of this document updated to have the specified file path. + + + + + + Get the text changes between this document and a prior version of the same document. + The changes, when applied to the text of the old document, will produce the text of the current document. + + + + + Gets the list of s that are linked to this + . s are considered to be linked if they + share the same . This is excluded from the + result. + + + + + Creates a branched version of this document that has its semantic model frozen in whatever state it is available at the time, + assuming a background process is constructing the semantics asynchronously. Repeated calls to this method may return + documents with increasingly more complete semantics. + + Use this method to gain access to potentially incomplete semantics quickly. + + + + + Returns the options that should be applied to this document. This consists of global options from , + merged with any settings the user has specified at the document levels. + + + This method is async because this may require reading other files. In files that are already open, this is expected to be cheap and complete synchronously. + + + + + An identifier that can be used to retrieve the same across versions of the + workspace. + + + + + Creates a new instance. + + The project id this document id is relative to. + An optional name to make this id easier to recognize while debugging. + + + + A class that represents all the arguments necessary to create a new document instance. + + + + + The Id of the document. + + + + + The name of the document. + + + + + The names of the logical nested folders the document is contained in. + + + + + The kind of the source code. + + + + + The file path of the document. + + + + + True if the document is a side effect of the build. + + + + + A loader that can retrieve the document text. + + + + + A associated with this document + + + + + Create a new instance of a . + + + + + type that contains information regarding this document itself but + no tree information such as document info + + + + + The Id of the document. + + + + + The name of the document. + + + + + The names of the logical nested folders the document is contained in. + + + + + The kind of the source code. + + + + + The file path of the document. + + + + + True if the document is a side effect of the build. + + + + + True if the source code contained in the document is only used in design-time (e.g. for completion), + but is not passed to the compiler when the containing project is built, e.g. a Razor view + + + + + A source for constructed from an syntax tree. + + + + + Indicates whether a type has checksum or not + + + + + Computes the text changes between two documents. + + The old version of the document. + The new version of the document. + The cancellation token. + An array of changes. + + + + Computes the text changes between two documents. + + The old version of the document. + The new version of the document. + The type of differencing to perform. Not supported by all text differencing services. + The cancellation token. + An array of changes. + + + + The mode in which value is preserved. + + + + + The value is guaranteed to have the same contents across multiple accesses. + + + + + The value is guaranteed to the same instance across multiple accesses. + + + + + Represents a project that is part of a . + + + + + The solution this project is part of. + + + + + The ID of the project. Multiple instances may share the same ID. However, only + one project may have this ID in any given solution. + + + + + The path to the project file or null if there is no project file. + + + + + The path to the output file, or null if it is not known. + + + + + The path to the reference assembly output file, or null if it is not known. + + + + + Compilation output file paths. + + + + + The default namespace of the project ("" if not defined, which means global namespace), + or null if it is unknown or not applicable. + + + Right now VB doesn't have the concept of "default namespace". But we conjure one in workspace + by assigning the value of the project's root namespace to it. So various feature can choose to + use it for their own purpose. + In the future, we might consider officially exposing "default namespace" for VB project + (e.g. through a "defaultnamespace" msbuild property) + + + + + if this supports providing data through the + method. + + If then method will return instead. + + + + + The language services from the host environment associated with this project's language. + + + + + The language associated with the project. + + + + + The name of the assembly this project represents. + + + + + The name of the project. This may be different than the assembly name. + + + + + The list of all other metadata sources (assemblies) that this project references. + + + + + The list of all other projects within the same solution that this project references. + + + + + The list of all other projects that this project references, including projects that + are not part of the solution. + + + + + The list of all the diagnostic analyzer references for this project. + + + + + The options used by analyzers for this project. + + + + + The options used when building the compilation for this project. + + + + + The options used when parsing documents for this project. + + + + + Returns true if this is a submission project. + + + + + True if the project has any documents. + + + + + All the document IDs associated with this project. + + + + + All the additional document IDs associated with this project. + + + + + All the additional document IDs associated with this project. + + + + + All the regular documents associated with this project. Documents produced from source generators are returned by + . + + + + + All the additional documents associated with this project. + + + + + All the s associated with this project. + + + + + True if the project contains a document with the specified ID. + + + + + True if the project contains an additional document with the specified ID. + + + + + True if the project contains an with the specified ID. + + + + + Get the documentId in this project with the specified syntax tree. + + + + + Get the document in this project with the specified syntax tree. + + + + + Get the document in this project with the specified document Id. + + + + + Get the additional document in this project with the specified document Id. + + + + + Get the analyzer config document in this project with the specified document Id. + + + + + Gets a document or a source generated document in this solution with the specified document ID. + + + + + Gets a document, additional document, analyzer config document or a source generated document in this solution with the specified document ID. + + + + + Gets all source generated documents in this project. + + + + + Returns the for a source generated document that has already been generated and observed. + + + This is only safe to call if you already have seen the SyntaxTree or equivalent that indicates the document state has already been + generated. This method exists to implement and is best avoided unless you're doing something + similarly tricky like that. + + + + + Tries to get the cached for this project if it has already been created and is still cached. In almost all + cases you should call which will either return the cached + or create a new one otherwise. + + + + + Get the for this project asynchronously. + + + Returns the produced , or if returns . This function will + return the same value if called multiple times. + + + + + Determines if the compilation returned by and all its referenced compilation are from fully loaded projects. + + + + + Gets an object that lists the added, changed and removed documents between this project and the specified project. + + + + + The project version. This equates to the version of the project file. + + + + + The version of the most recently modified document. + + + + + The most recent version of the project, its documents and all dependent projects and documents. + + + + + The semantic version of this project including the semantics of referenced projects. + This version changes whenever the consumable declarations of this project and/or projects it depends on change. + + + + + The semantic version of this project not including the semantics of referenced projects. + This version changes only when the consumable declarations of this project change. + + + + + Calculates a checksum that contains a project's checksum along with a checksum for each of the project's + transitive dependencies. + + + This checksum calculation can be used for cases where a feature needs to know if the semantics in this project + changed. For example, for diagnostics or caching computed semantic data. The goal is to ensure that changes to + + Files inside the current project + Project properties of the current project + Visible files in referenced projects + Project properties in referenced projects + + are reflected in the metadata we keep so that comparing solutions accurately tells us when we need to recompute + semantic work. + + This method of checking for changes has a few important properties that differentiate it from other methods of determining project version. + + Changes to methods inside the current project will be reflected to compute updated diagnostics. + does not change as it only returns top level changes. + Reloading a project without making any changes will re-use cached diagnostics. + changes as the project is removed, then added resulting in a version change. + + + + + + + Creates a new instance of this project updated to have the new assembly name. + + + + + Creates a new instance of this project updated to have the new default namespace. + + + + + Creates a new instance of this project updated to have the specified compilation options. + + + + + Creates a new instance of this project updated to have the specified parse options. + + + + + Creates a new instance of this project updated to include the specified project reference + in addition to already existing ones. + + + + + Creates a new instance of this project updated to include the specified project references + in addition to already existing ones. + + + + + Creates a new instance of this project updated to no longer include the specified project reference. + + + + + Creates a new instance of this project updated to replace existing project references + with the specified ones. + + + + + Creates a new instance of this project updated to include the specified metadata reference + in addition to already existing ones. + + + + + Creates a new instance of this project updated to include the specified metadata references + in addition to already existing ones. + + + + + Creates a new instance of this project updated to no longer include the specified metadata reference. + + + + + Creates a new instance of this project updated to replace existing metadata reference + with the specified ones. + + + + + Creates a new instance of this project updated to include the specified analyzer reference + in addition to already existing ones. + + + + + Creates a new instance of this project updated to include the specified analyzer references + in addition to already existing ones. + + + + + Creates a new instance of this project updated to no longer include the specified analyzer reference. + + + + + Creates a new instance of this project updated to replace existing analyzer references + with the specified ones. + + + + + Creates a new document in a new instance of this project. + + + + + Creates a new document in a new instance of this project. + + + + + Creates a new document in a new instance of this project. + + + + + Creates a new additional document in a new instance of this project. + + + + + Creates a new additional document in a new instance of this project. + + + + + Creates a new analyzer config document in a new instance of this project. + + + + + Creates a new instance of this project updated to no longer include the specified document. + + + + + Creates a new instance of this project updated to no longer include the specified documents. + + + + + Creates a new instance of this project updated to no longer include the specified additional document. + + + + + Creates a new instance of this project updated to no longer include the specified additional documents. + + + + + Creates a new instance of this project updated to no longer include the specified analyzer config document. + + + + + Creates a new solution instance that no longer includes the specified s. + + + + + Get s of added documents in the order they appear in of the . + + + + + Get s of added dditional documents in the order they appear in of . + + + + + Get s of added analyzer config documents in the order they appear in of . + + + + + Get s of documents with any changes (textual and non-textual) + in the order they appear in of . + + + + + Get changed documents in the order they appear in of . + When is true, only get documents with text changes (we only check text source, not actual content); + otherwise get documents with any changes i.e. , and file path. + + + + + Get s of additional documents with any changes (textual and non-textual) + in the order they appear in of . + + + + + Get s of analyzer config documents with any changes (textual and non-textual) + in the order they appear in of . + + + + + Get s of removed documents in the order they appear in of . + + + + + Get s of removed additional documents in the order they appear in of . + + + + + Get s of removed analyzer config documents in the order they appear in of . + + + + + A models the dependencies between projects in a solution. + + + + + The map of projects to dependencies. This field is always fully initialized. Projects which do not reference + any other projects do not have a key in this map (i.e. they are omitted, as opposed to including them with + an empty value). + + + This field is always fully initialized + Projects which do not reference any other projects do not have a key in this map (i.e. + they are omitted, as opposed to including them with an empty value) + The keys and values in this map are always contained in + + + + + + + The lazily-initialized map of projects to projects which reference them. This field is either null, or + fully-computed. Projects which are not referenced by any other project do not have a key in this map (i.e. + they are omitted, as opposed to including them with an empty value). + + + + + Gets the list of projects that this project directly depends on. + + + + + Gets the list of projects that directly depend on this project. + + + + + Gets the list of projects that directly or transitively this project depends on, if it has already been + cached. + + + + + Gets the list of projects that directly or transitively this project depends on + + + + + Gets the list of projects that directly or transitively depend on this project. + + + + + Returns all the projects for the solution in a topologically sorted order with respect + to their dependencies. Projects that depend on other projects will always show up later in this sequence + than the projects they depend on. + + + + + Returns a sequence of sets, where each set contains items with shared interdependency, + and there is no dependency between sets. Each set returned will sorted in topological order. + + + + + Gets the list of projects that directly or transitively depend on this project, if it has already been + cached. + + + + + Computes a new for the addition of additional project references. + + + + + Computes a new for the addition of additional project references. + + The previous , or + if the reverse references map was not computed for the previous graph. + + + + Computes a new for the addition of additional project references. + + + + + Computes a new for the addition of new projects. + + + + + Computes a new for the removal of a project. + + The prior to the removal. + The prior to the removal. + This map serves as a hint to the removal process; i.e. it is assumed correct if it contains data, but may be + omitted without impacting correctness. + The ID of the project which is being removed. + The for the project dependency graph once the project is removed. + + + + Computes a new for the removal of a project. + + The prior to the removal, + or if the value prior to removal was not computed for the graph. + + + + Computes a new for the removal of a project. + + + + + + Computes a new for the removal of a project. + + + + + + Computes a new for the removal of a project reference. + + The prior to the removal, + or if the reverse references map was not computed for the prior graph. + The project ID from which a project reference is being removed. + The target of the project reference which is being removed. + The updated (complete) reverse references map, or if the reverse references + map could not be incrementally updated. + + + + An identifier that can be used to refer to the same across versions. + + + + + The system generated unique id. + + + + + Create a new ProjectId instance. + + An optional name to make this id easier to recognize while debugging. + + + + A class that represents all the arguments necessary to create a new project instance. + + + + + The unique Id of the project. + + + + + The version of the project. + + + + + The name of the project. This may differ from the project's filename. + + + + + + + + The name of the assembly that this project will create, without file extension. + , + + + + The language of the project. + + + + + The path to the project file or null if there is no project file. + + + + + The path to the output file (module or assembly). + + + + + The path to the reference assembly output file. + + + + + The path to the compiler output file (module or assembly). + + + + + The default namespace of the project ("" if not defined, which means global namespace), + or null if it is unknown or not applicable. + + + Right now VB doesn't have the concept of "default namespace", but we conjure one in workspace + by assigning the value of the project's root namespace to it. So various features can choose to + use it for their own purpose. + In the future, we might consider officially exposing "default namespace" for VB project + (e.g. through a "defaultnamespace" msbuild property) + + + + + True if this is a submission project for interactive sessions. + + + + + True if project information is complete. In some workspace hosts, it is possible + a project only has partial information. In such cases, a project might not have all + information on its files or references. + + + + + True if we should run analyzers for this project. + + + + + The initial compilation options for the project, or null if the default options should be used. + + + + + The initial parse options for the source code documents in this project, or null if the default options should be used. + + + + + The list of source documents initially associated with the project. + + + + + The project references initially defined for the project. + + + + + The metadata references initially defined for the project. + + + + + The analyzers initially associated with this project. + + + + + The list of non-source documents associated with this project. + + + + + The list of analyzerconfig documents associated with this project. + + + + + Type of the host object. + + + + + Create a new instance of a . + + + + + Create a new instance of a . + + + + + type that contains information regarding this project itself but + no tree information such as document info + + + + + Matches names like: Microsoft.CodeAnalysis.Features (netcoreapp3.1) + + + + + The unique Id of the project. + + + + + The version of the project. + + + + + The name of the project. This may differ from the project's filename. + + + + + The name and flavor portions of the project broken out. For example, the project + Microsoft.CodeAnalysis.Workspace (netcoreapp3.1) would have the name + Microsoft.CodeAnalysis.Workspace and the flavor netcoreapp3.1. Values may be null if the name does not contain a flavor. + + + + + The name of the assembly that this project will create, without file extension. + , + + + + The language of the project. + + + + + The path to the project file or null if there is no project file. + + + + + The path to the output file (module or assembly). + + + + + The path to the reference assembly output file. + + + + + Paths to the compiler output files. + + + + + The default namespace of the project. + + + + + True if this is a submission project for interactive sessions. + + + + + True if project information is complete. In some workspace hosts, it is possible + a project only has partial information. In such cases, a project might not have all + information on its files or references. + + + + + True if we should run analyzers for this project. + + + + + The id report during telemetry events. + + + + + Aliases for the reference. Empty if the reference has no aliases. + + + + + True if interop types defined in the referenced project should be embedded into the referencing project. + + + + + The documents in this project. They are sorted by to provide a stable sort for + . + + + + + The additional documents in this project. They are sorted by to provide a stable sort for + . + + + + + The analyzer config documents in this project. They are sorted by to provide a stable sort for + . + + + + + The to be used for analyzer options for specific trees. + + + + + Backing field for ; this is a default ImmutableArray if it hasn't been computed yet. + + + + + + + + Determines whether contains a reference to a specified project. + + The target project of the reference. + if this project references ; otherwise, . + + + + A recoverable TextAndVersion source that saves its text to temporary storage. + + + + + Represents a set of projects and their source code documents. + + + + + The Workspace this solution is associated with. + + + + + The Id of the solution. Multiple solution instances may share the same Id. + + + + + The path to the solution file or null if there is no solution file. + + + + + The solution version. This equates to the solution file's version. + + + + + A list of all the ids for all the projects contained by the solution. + + + + + A list of all the projects contained by the solution. + + + + + The version of the most recently modified project. + + + + + True if the solution contains a project with the specified project ID. + + + + + Gets the project in this solution with the specified project ID. + + If the id is not an id of a project that is part of this solution the method returns null. + + + + + Gets the associated with an assembly symbol. + + + + + Given a returns the of the it came + from. Returns if does not come from any project in this solution. + + + This function differs from in terms of how it + treats s. Specifically, say there is the following: + + + Project-A, containing Symbol-A. + Project-B, with a reference to Project-A, and usage of Symbol-A. + + + It is possible (with retargeting, and other complex cases) that Symbol-A from Project-B will be a different + symbol than Symbol-A from Project-A. However, + will always try to return Project-A for either of the Symbol-A's, as it prefers to return the original + Source-Project of the original definition, not the project that actually produced the symbol. For many + features this is an acceptable abstraction. However, for some cases (Find-References in particular) it is + necessary to resolve symbols back to the actual project/compilation that produced them for correctness. + + + + + + + + True if the solution contains the document in one of its projects + + + + + True if the solution contains the additional document in one of its projects + + + + + True if the solution contains the analyzer config document in one of its projects + + + + + Gets the documentId in this solution with the specified syntax tree. + + + + + Gets the documentId in this solution with the specified syntax tree. + + + + + Gets the document in this solution with the specified document ID. + + + + + Gets a document or a source generated document in this solution with the specified document ID. + + + + + Gets a document, additional document, analyzer config document or a source generated document in this solution with the specified document ID. + + + + + Gets the additional document in this solution with the specified document ID. + + + + + Gets the analyzer config document in this solution with the specified document ID. + + + + + Gets the document in this solution with the specified syntax tree. + + + + + Creates a new solution instance that includes a project with the specified language and names. + Returns the new project. + + + + + Creates a new solution instance that includes a project with the specified language and names. + + + + + Create a new solution instance that includes a project with the specified project information. + + + + + Create a new solution instance without the project specified. + + + + + Creates a new solution instance with the project specified updated to have the new + assembly name. + + + + + Creates a new solution instance with the project specified updated to have the output file path. + + + + + Creates a new solution instance with the project specified updated to have the reference assembly output file path. + + + + + Creates a new solution instance with the project specified updated to have the compiler output file path. + + + + + Creates a new solution instance with the project specified updated to have the default namespace. + + + + + Creates a new solution instance with the project specified updated to have the name. + + + + + Creates a new solution instance with the project specified updated to have the project file path. + + + + + Create a new solution instance with the project specified updated to have + the specified compilation options. + + + + + Create a new solution instance with the project specified updated to have + the specified parse options. + + + + + Create a new solution instance with the project specified updated to have + the specified hasAllInformation. + + + + + Create a new solution instance with the project specified updated to have + the specified runAnalyzers. + + + + + Creates a new solution instance with the project documents in the order by the specified document ids. + The specified document ids must be the same as what is already in the project; no adding or removing is allowed. + + is . + is . + The solution does not contain . + The number of documents specified in is not equal to the number of documents in project . + Document specified in does not exist in project . + + + + Create a new solution instance with the project specified updated to include + the specified project reference. + + is . + is . + The solution does not contain . + The project already references the target project. + + + + Create a new solution instance with the project specified updated to include + the specified project references. + + is . + contains . + contains duplicate items. + The solution does not contain . + The project already references the target project. + Adding the project reference would create a circular dependency. + + + + Create a new solution instance with the project specified updated to no longer + include the specified project reference. + + is . + is . + The solution does not contain . + + + + Create a new solution instance with the project specified updated to contain + the specified list of project references. + + Id of the project whose references to replace with . + New project references. + is . + contains . + contains duplicate items. + The solution does not contain . + + + + Create a new solution instance with the project specified updated to include the + specified metadata reference. + + is . + is . + The solution does not contain . + The project already contains the specified reference. + + + + Create a new solution instance with the project specified updated to include the + specified metadata references. + + is . + contains . + contains duplicate items. + The solution does not contain . + The project already contains the specified reference. + + + + Create a new solution instance with the project specified updated to no longer include + the specified metadata reference. + + is . + is . + The solution does not contain . + The project does not contain the specified reference. + + + + Create a new solution instance with the project specified updated to include only the + specified metadata references. + + is . + contains . + contains duplicate items. + The solution does not contain . + + + + Create a new solution instance with the project specified updated to include the + specified analyzer reference. + + is . + is . + The solution does not contain . + + + + Create a new solution instance with the project specified updated to include the + specified analyzer references. + + is . + contains . + contains duplicate items. + The solution does not contain . + The project already contains the specified reference. + + + + Create a new solution instance with the project specified updated to no longer include + the specified analyzer reference. + + is . + is . + The solution does not contain . + The project does not contain the specified reference. + + + + Create a new solution instance with the project specified updated to include only the + specified analyzer references. + + is . + contains . + contains duplicate items. + The solution does not contain . + + + + Create a new solution instance updated to include the specified analyzer reference. + + is . + + + + Create a new solution instance updated to include the specified analyzer references. + + contains . + contains duplicate items. + The solution already contains the specified reference. + + + + Create a new solution instance with the project specified updated to no longer include + the specified analyzer reference. + + is . + The solution does not contain the specified reference. + + + + Creates a new solution instance with the specified analyzer references. + + contains . + contains duplicate items. + + + + Creates a new solution instance with the corresponding project updated to include a new + document instance defined by its name and text. + + + + + Creates a new solution instance with the corresponding project updated to include a new + document instance defined by its name and text. + + + + + Creates a new solution instance with the corresponding project updated to include a new + document instance defined by its name and root . + + + + + Creates a new solution instance with the project updated to include a new document with + the arguments specified. + + + + + Create a new solution instance with the corresponding project updated to include a new + document instanced defined by the document info. + + + + + Create a new instance with the corresponding s updated to include + the documents specified by . + + A new with the documents added. + + + + Creates a new solution instance with the corresponding project updated to include a new + additional document instance defined by its name and text. + + + + + Creates a new solution instance with the corresponding project updated to include a new + additional document instance defined by its name and text. + + + + + Creates a new solution instance with the corresponding project updated to include a new + analyzer config document instance defined by its name and text. + + + + + Creates a new Solution instance that contains a new compiler configuration document like a .editorconfig file. + + + + + Creates a new solution instance that no longer includes the specified document. + + + + + Creates a new solution instance that no longer includes the specified documents. + + + + + Creates a new solution instance that no longer includes the specified additional document. + + + + + Creates a new solution instance that no longer includes the specified additional documents. + + + + + Creates a new solution instance that no longer includes the specified . + + + + + Creates a new solution instance that no longer includes the specified s. + + + + + Creates a new solution instance with the document specified updated to have the new name. + + + + + Creates a new solution instance with the document specified updated to be contained in + the sequence of logical folders. + + + + + Creates a new solution instance with the document specified updated to have the specified file path. + + + + + Creates a new solution instance with the document specified updated to have the text + specified. + + + + + Creates a new solution instance with the additional document specified updated to have the text + specified. + + + + + Creates a new solution instance with the analyzer config document specified updated to have the text + supplied by the text loader. + + + + + Creates a new solution instance with the document specified updated to have the text + and version specified. + + + + + Creates a new solution instance with the additional document specified updated to have the text + and version specified. + + + + + Creates a new solution instance with the analyzer config document specified updated to have the text + and version specified. + + + + + Creates a new solution instance with the document specified updated to have a syntax tree + rooted by the specified syntax node. + + + + + Creates a new solution instance with the document specified updated to have the source + code kind specified. + + + + + Creates a new solution instance with the document specified updated to have the text + supplied by the text loader. + + + + + Creates a new solution instance with the additional document specified updated to have the text + supplied by the text loader. + + + + + Creates a new solution instance with the analyzer config document specified updated to have the text + supplied by the text loader. + + + + + Creates a branch of the solution that has its compilations frozen in whatever state they are in at the time, assuming a background compiler is + busy building this compilations. + + A compilation for the project containing the specified document id will be guaranteed to exist with at least the syntax tree for the document. + + This not intended to be the public API, use Document.WithFrozenPartialSemantics() instead. + + + + + Formerly, returned a copy of the solution isolated from the original so that they do not share computed state. It now does nothing. + + + + + Creates a new solution instance with all the documents specified updated to have the same specified text. + + + + + Returns a new Solution that will always produce a specific output for a generated file. This is used only in the + implementation of where if a user has a source + generated file open, we need to make sure everything lines up. + + + + + Gets an objects that lists the added, changed and removed projects between + this solution and the specified solution. + + + + + Gets the set of s in this with a + that matches the given file path. + + + + + Gets a that details the dependencies between projects for this solution. + + + + + Returns the options that should be applied to this solution. This is equivalent to when the + instance was created. + + + + + Analyzer references associated with the solution. + + + + + Creates a new solution instance with the specified . + + + + + Creates a new solution instance with the specified serializable . + + + + + Throws if setting the project references of project to specified + would form a cycle in project dependency graph. + + + + + Throws if setting the project references of project to specified + would form an invalid submission project chain. + + Submission projects can reference at most one other submission project. Regular projects can't reference any. + + + + + An identifier that can be used to refer to the same Solution across versions. + + + + + The unique id of the solution. + + + + + Create a new Solution Id + + An optional name to make this id easier to recognize while debugging. + + + + A class that represents all the arguments necessary to create a new solution instance. + + + + + The unique Id of the solution. + + + + + The version of the solution. + + + + + The path to the solution file, or null if there is no solution file. + + + + + A list of projects initially associated with the solution. + + + + + The analyzers initially associated with this solution. + + + + + Create a new instance of a SolutionInfo. + + + + + Create a new instance of a SolutionInfo. + + + + + type that contains information regarding this solution itself but + no tree information such as project info + + + + + The unique Id of the solution. + + + + + The version of the solution. + + + + + The path to the solution file, or null if there is no solution file. + + + + + The id report during telemetry events. + + + + + This class basically holds onto a set of services and gets reused across solution instances. + + + + + Represents a set of projects and their source code documents. + + this is a green node of Solution like ProjectState/DocumentState are for + Project and Document. + + + + + Represents a change that needs to be made to a , , or both in response to + some user edit. + + + + + Whether or not can be called on Compilations that may contain + generated documents. + + + Most translation actions add or remove a single syntax tree which means we can do the "same" change + to a compilation that contains the generated files and one that doesn't; however some translation actions + (like ) will unilaterally remove all trees, and would have unexpected + side effects. This opts those out of operating on ones with generated documents where there would be side effects. + + + + + When changes are made to a solution, we make a list of translation actions. If multiple similar changes happen in rapid + succession, we may be able to merge them without holding onto intermediate state. + + The action prior to this one. May be a different type. + A non-null if we could create a merged one, null otherwise. + + + + Tracks the changes made to a project and provides the facility to get a lazily built + compilation for that project. As the compilation is being built, the partial results are + stored as well so that they can be used in the 'in progress' workspace snapshot. + + + + + When we're working with compilations, we often have two: a compilation that does not contain generated files + (which we might need later to run generators again), and one that has the stale generated files that we might + be able to reuse as well. In those cases we have to do the same transformations to both, and this gives us + a handy way to do precisely that while not forking compilations twice if there are no generated files anywhere. + + + + + The best generated documents we have for the current state. + specifies whether the documents are to be considered final and can be reused, or whether they're from + a prior snapshot which needs to be recomputed. + + + + + The that was used for the last run, to allow for incremental reuse. May + be null if we don't have generators in the first place, haven't ran generators yet for this project, + or had to get rid of our driver for some reason. + + + + + Whether the generated documents in are final and should not be regenerated. + It's important that once we've ran generators once we don't want to run them again. Once we've ran + them the first time, those syntax trees are visible from other parts of the Workspaces model; if we + run them a second time we'd end up with new trees which would confuse our snapshot model -- once the + tree has been handed out we can't make a second tree later. + + + + + Whether the generated documents are frozen and generators should never be ran again, ever, even if a document + is later changed. This is used to ensure that when we produce a frozen solution for partial semantics, + further downstream forking of that solution won't rerun generators. This is because of two reasons: + + Generally once we've produced a frozen solution with partial semantics, we now want speed rather + than accuracy; a generator running in a later path will still cause issues there. + The frozen solution with partial semantics makes no guarantee that other syntax trees exist or + whether we even have references -- it's pretty likely that running a generator might produce worse results + than what we originally had. + + + + + + The base type of all states. The state of a + starts at , and then will progress through the other states until it finally reaches + . + + + + + The base that starts with everything empty. + + + + + The best compilation that is available that source generators have not ran on. May be an + in-progress, full declaration, a final compilation, or . + + + + + Specifies whether and all compilations it depends on contain full information or not. This can return + if the state isn't at the point where it would know, and it's necessary to transition to to figure that out. + + + + + The final compilation is potentially available, otherwise . + + + + + State used when we potentially have some information (like prior generated documents) + but no compilation. + + + + + A state where we are holding onto a previously built compilation, and have a known set of transformations + that could get us to a more final state. + + + + + The list of changes that have happened since we last computed a compilation. The oldState corresponds to + the state of the project prior to the mutation. + + + + + The result of taking the original completed compilation that had generated documents and updating them by + apply the ; this is not a correct snapshot in that + the generators have not been rerun, but may be reusable if the generators are later found to give the + same output. + + + + + A built compilation for the tracker that contains the fully built DeclarationTable, + but may not have references initialized + + + + + The final state a compilation tracker reaches. The real is available. It is a + requirement that any provided to any clients of the + (for example, through or must be from a . This is because stores extra information in it about that compilation that the can be queried for (for example: . If s from other s are passed out, then these other APIs will not function correctly. + + + + + Weak set of the assembly, module and dynamic symbols that this compilation tracker has created. + This can be used to determine which project an assembly symbol came from after the fact. This is + needed as the compilation an assembly came from can be GC'ed and further requests to get that + compilation (or any of it's assemblies) may produce new assembly symbols. + + + + + The final compilation, with all references and source generators run. This is distinct from , which in the case will be the compilation before any + source generators were ran. This ensures that a later invocation of the source generators consumes + which will avoid generators being ran a second time on a compilation that + already contains the output of other generators. If source generators are not active, this is equal + to . + + + + Not held onto + Not held onto + Not held onto + + + + Access via the and methods. + + + + + Creates a tracker for the provided project. The tracker will be in the 'empty' state + and will have no extra information beyond the project itself. + + + + + Creates a new instance of the compilation info, retaining any already built + compilation state as the now 'old' state + + + + + Tries to get the latest snapshot of the compilation without waiting for it to be + fully built. This method takes advantage of the progress side-effect produced during + . + It will either return the already built compilation, any + in-progress compilation or any known old compilation in that order of preference. + The compilation state that is returned will have a compilation that is retained so + that it cannot disappear. + + + + + Gets the final compilation if it is available. + + + + + Builds the compilation matching the project state. In the process of building, also + produce in progress snapshots that can be accessed from other threads. + + + + + Add all appropriate references to the compilation and set it as our final compilation + state. + + The generator info that contains the last run of the documents, if any exists, as + well as the driver that can be used to run if need to. + The compilation from a prior run that contains generated trees, which + match the states included in . If a generator run here produces + the same set of generated documents as are in , and we don't need to make any other + changes to references, we can then use this compilation instead of re-adding source generated files again to the + . + + + + Attempts to get (without waiting) a metadata reference to a possibly in progress + compilation. Only actual compilation references are returned. Could potentially + return null if nothing can be provided. + + + + + Mapping from project-id to the checksums needed to synchronize it (and the projects it depends on) over + to an OOP host. Lock this specific field before reading/writing to it. + + + + + Cache we use to map between unrooted symbols (i.e. assembly, module and dynamic symbols) and the project + they came from. That way if we are asked about many symbols from the same assembly/module we can answer the + question quickly after computing for the first one. Created on demand. + + + + + branch id of this solution + + currently, it only supports one level of branching. there is a primary branch of a workspace and all other + branches that are branched from the primary branch. + + one still can create multiple forked solutions from an already branched solution, but versions among those + can't be reliably used and compared. + + version only has a meaning between primary solution and branched one or between solutions from same branch. + + + + + The Workspace this solution is associated with. + + + + + The Id of the solution. Multiple solution instances may share the same Id. + + + + + The path to the solution file or null if there is no solution file. + + + + + The solution version. This equates to the solution file's version. + + + + + A list of all the ids for all the projects contained by the solution. + + + + + The version of the most recently modified project. + + + + + True if the solution contains a project with the specified project ID. + + + + + True if the solution contains the document in one of its projects + + + + + True if the solution contains the additional document in one of its projects + + + + + True if the solution contains the analyzer config document in one of its projects + + + + + Gets the associated with an assembly symbol. + + + + + Create a new solution instance that includes a project with the specified project information. + + + + + Create a new solution instance without the project specified. + + + + + Creates a new solution instance with the project specified updated to have the new + assembly name. + + + + + Creates a new solution instance with the project specified updated to have the output file path. + + + + + Creates a new solution instance with the project specified updated to have the output file path. + + + + + Creates a new solution instance with the project specified updated to have the compiler output file path. + + + + + Creates a new solution instance with the project specified updated to have the default namespace. + + + + + Creates a new solution instance with the project specified updated to have the name. + + + + + Creates a new solution instance with the project specified updated to have the project file path. + + + + + Create a new solution instance with the project specified updated to have + the specified compilation options. + + + + + Create a new solution instance with the project specified updated to have + the specified parse options. + + + + + Create a new solution instance with the project specified updated to have + the specified hasAllInformation. + + + + + Create a new solution instance with the project specified updated to have + the specified runAnalyzers. + + + + + Create a new solution instance with the project specified updated to include + the specified project references. + + + + + Create a new solution instance with the project specified updated to no longer + include the specified project reference. + + + + + Create a new solution instance with the project specified updated to contain + the specified list of project references. + + + + + Creates a new solution instance with the project documents in the order by the specified document ids. + The specified document ids must be the same as what is already in the project; no adding or removing is allowed. + + + + + Create a new solution instance with the project specified updated to include the + specified metadata references. + + + + + Create a new solution instance with the project specified updated to no longer include + the specified metadata reference. + + + + + Create a new solution instance with the project specified updated to include only the + specified metadata references. + + + + + Create a new solution instance with the project specified updated to include the + specified analyzer references. + + + + + Create a new solution instance with the project specified updated to no longer include + the specified analyzer reference. + + + + + Create a new solution instance with the project specified updated to include only the + specified analyzer references. + + + + + Create a new solution instance with the corresponding projects updated to include new + documents defined by the document info. + + + + + Core helper that takes a set of s and does the application of the appropriate documents to each project. + + The set of documents to add. + Returns the new with the documents added, and the needed as well. + + + + + Creates a new solution instance that no longer includes the specified document. + + + + + Creates a new solution instance that no longer includes the specified additional documents. + + + + + Creates a new solution instance with the document specified updated to have the specified name. + + + + + Creates a new solution instance with the document specified updated to be contained in + the sequence of logical folders. + + + + + Creates a new solution instance with the document specified updated to have the specified file path. + + + + + Creates a new solution instance with the document specified updated to have the text + specified. + + + + + Creates a new solution instance with the additional document specified updated to have the text + specified. + + + + + Creates a new solution instance with the document specified updated to have the text + specified. + + + + + Creates a new solution instance with the document specified updated to have the text + and version specified. + + + + + Creates a new solution instance with the additional document specified updated to have the text + and version specified. + + + + + Creates a new solution instance with the analyzer config document specified updated to have the text + and version specified. + + + + + Creates a new solution instance with the document specified updated to have a syntax tree + rooted by the specified syntax node. + + + + + Creates a new solution instance with the document specified updated to have the source + code kind specified. + + + + + Creates a new solution instance with the additional document specified updated to have the text + supplied by the text loader. + + + + + Creates a new solution instance with the analyzer config document specified updated to have the text + supplied by the text loader. + + + + + Creates a new snapshot with an updated project and an action that will produce a new + compilation matching the new project out of an old compilation. All dependent projects + are fixed-up if the change to the new project affects its public metadata, and old + dependent compilations are forgotten. + + + + + Gets the set of s in this with a + that matches the given file path. + + + + + Creates a branch of the solution that has its compilations frozen in whatever state they are in at the time, assuming a background compiler is + busy building this compilations. + + A compilation for the project containing the specified document id will be guaranteed to exist with at least the syntax tree for the document. + + This not intended to be the public API, use Document.WithFrozenPartialSemantics() instead. + + + + + Creates a new solution instance with all the documents specified updated to have the same specified text. + + + + + Returns the compilation for the specified . Can return when the project + does not support compilations. + + + The compilation is guaranteed to have a syntax tree for each document of the project. + + + + + Returns the compilation for the specified . Can return when the project + does not support compilations. + + + The compilation is guaranteed to have a syntax tree for each document of the project. + + + + + Return reference completeness for the given project and all projects this references. + + + + + Returns the generated document states for source generated documents. + + + + + Returns the for a source generated document that has already been generated and observed. + + + This is only safe to call if you already have seen the SyntaxTree or equivalent that indicates the document state has already been + generated. This method exists to implement and is best avoided unless you're doing something + similarly tricky like that. + + + + + Returns a new SolutionState that will always produce a specific output for a generated file. This is used only in the + implementation of where if a user has a source + generated file open, we need to make sure everything lines up. + + + + + Symbols need to be either or . + + + + + Get a metadata reference for the project's compilation. Returns upon failure, which + can happen when trying to build a skeleton reference that fails to build. + + + + + Get a metadata reference to this compilation info's compilation with respect to + another project. For cross language references produce a skeletal assembly. If the + compilation is not available, it is built. If a skeletal assembly reference is + needed and does not exist, it is also built. + + + + + Attempt to get the best readily available compilation for the project. It may be a + partially built compilation. + + + + + Gets a that details the dependencies between projects for this solution. + + + + + An implementation of that takes a compilation from another compilation tracker and updates it + to return a generated document with a specific content, regardless of what the generator actually produces. In other words, it says + "take the compilation this other thing produced, and pretend the generator gave this content, even if it wouldn't." + + + + + The lazily-produced compilation that has the generated document updated. This is initialized by call to + . + + + + + Returns if this / could produce the + given . The symbol must be a , or . + + + If is true, then will not be considered + when answering this question. In other words, if is an and is then this will only + return true if the symbol is . If is + false, then it can return true if is or any + of the symbols returned by for + any of the references of the . + + + + + Caches the skeleton references produced for a given project/compilation under the varying + it might be referenced by. Skeletons are used in the compilation + tracker to allow cross-language project references with live semantic updating between VB/C# and vice versa. + Specifically, in a cross language case we will build a skeleton ref for the referenced project and have the + referrer use that to understand its semantics. + + This approach works, but has the caveat that live cross-language semantics are only possible when the + skeleton assembly can be built. This should always be the case for correct code, but it may not be the + case for code with errors depending on if the respective language compiler is resilient to those errors or not. + In that case though where the skeleton cannot be built, this type provides mechanisms to fallback to the last + successfully built skeleton so that a somewhat reasonable experience can be maintained. If we failed to do this + and instead returned nothing, a user would find that practically all semantic experiences that depended on + that particular project would fail or be seriously degraded (e.g. diagnostics). To that end, it's better to + limp along with stale date, then barrel on ahead with no data. + + The implementation works by keeping metadata references around associated with a specific + for a project. As long as the for that project + is the same, then all the references of it can be reused. When an forks + itself, it will also this, allowing previously computed references to be used by later forks. + However, this means that later forks (esp. ones that fail to produce a skeleton, or which produce a skeleton for + different semantics) will not leak backward to a prior , causing it to see a view of the world + inapplicable to its current snapshot. + + + + + Lock we take before emitting metadata. Metadata emit is extremely expensive. So we want to avoid cases + where N threads come in and try to get the skeleton for a particular project. This way they will instead + yield if something else is computing and will then use the single instance computed once one thread succeeds. + + + + + Lock around and to ensure they are updated/read + in an atomic fashion. + + + + + The version of the project that the + corresponds to. + + + + + Mapping from metadata-reference-properties to the actual metadata reference for them. + + + + + Produces a copy of the , allowing forks of to + reuse s when their dependent semantic version matches ours. In the case where + the version is different, then the clone will attempt to make a new skeleton reference for that version. If it + succeeds, it will use that. If it fails however, it can still use our skeletons. + + + + + A map to ensure that the streams from the temporary storage service that back the metadata we create stay alive as long + as the metadata is alive. + + + + + The documentation provider used to lookup xml docs for any metadata reference we pass out. See + docs on for why this is safe to hold onto despite it + rooting a compilation internally. + + + + + Use WeakReference so we don't keep MetadataReference's alive if they are not being consumed. + Note: if the weak-reference is actually (not that it points to null), + that means we know we were unable to generate a reference for those properties, and future + calls can early exit. + + + This instance should be locked when being read/written. + + + + + + + + A helper type for mapping back to an originating . + + + In IDE scenarios we have the need to map from an to the that + contained a that could have produced that symbol. This is especially needed with + OOP scenarios where we have to communicate to OOP from VS (And vice versa) what symbol we are referring to. + To do this, we pass along a project where this symbol could be found, and enough information (a ) to resolve that symbol back in that that . + + This is challenging however as symbols do not necessarily have back-pointers to s, + and as such, we can't just see which Project produced the that produced that . In other words, the doesn't root the compilation. Because + of that we keep track of those symbols per project in a weak fashion. Then, we can later see if a + symbol came from a particular project by checking if it is one of those weak symbols. We use weakly held + symbols to that a instance doesn't hold symbols alive. But, we know if we are + holding the symbol itself, then the weak-ref will stay alive such that we can do this containment check. + + + + + + The produced directly by . + + + + + The produced directly by . Only + valid for . + + + + + The s or s produced through for all the references exposed by . Sorted by the hash code produced by so that it can be binary searched efficiently. + + + + Gets the checksum for only the requested project (and any project it depends on) + + + Gets the checksum for only the requested project (and any project it depends on) + + + Cone of projects to compute a checksum for. Pass in + to get a checksum for the entire solution + + + + A that was generated by an . + + + + + A small struct that holds the values that define the identity of a source generated document, and don't change + as new generations happen. This is mostly for convenience as we are reguarly working with this combination of values. + + + + + A class that represents both a source text and its version stamp. + + + + + The source text. + + + + + The version of the source text + + + + + An optional file path that identifies the origin of the source text. Empty if not available. + + + + + If an error occurred while loading the text the corresponding diagnostic, otherwise null. + + + + + Create a new instance. + + The text + The version + An optional file path that identifies the original of the source text. + + + + + Create a new instance. + + The text + The version + An optional file path that identifies the original of the source text. + Diagnostic describing failure to load the source text. + + + + + A bitwise combination of the enumeration values to use when computing differences with + . + + + Since computing differences can be slow with large data sets, you should not use the Character type + unless the given text is relatively small. + + + + + Compute the line difference. + + + + + Compute the word difference. + + + + + Compute the character difference. + + + + + The project this document belongs to. + + + + + The document's identifier. Many document instances may share the same ID, but only one + document in a solution may have that ID. + + + + + The path to the document file or null if there is no document file. + + + + + The name of the document. + + + + + The sequence of logical folders the document is contained in. + + + + + A associated with this document + + + + + Get the current text for the document if it is already loaded and available. + + + + + Gets the version of the document's text if it is already loaded and available. + + + + + Gets the current text for the document asynchronously. + + + + + Fetches the current text for the document synchronously. + + This is internal for the same reason is internal: + we have specialized cases where we need it, but we worry that making it public will do more harm than good. + + + + Gets the version of the document's text. + + + + + Fetches the current version for the document synchronously. + + This is internal for the same reason is internal: + we have specialized cases where we need it, but we worry that making it public will do more harm than good. + + + + Gets the version of the document's top level signature. + + + + + True if the info of the document change (name, folders, file path; not the content). + + + + + Only checks if the source of the text has changed, no content check is done. + + + + + Indicates kind of a + + + + + Indicates a regular source + + + + + Indicates an + + + + + Indicates an + + + + + A direct reference to our source text. This is only kept around in specialized scenarios. + Specifically, we keep this around when a document is opened. By providing this we can allow + clients to easily get to the text of the document in a non-blocking fashion if that's all + that they need. + + Note: this facility does not extend to getting the version as well. That's because the + version of a document depends on both the current source contents and the contents from + the previous version of the document. (i.e. if the contents are the same, then we will + preserve the same version, otherwise we'll move the version forward). Because determining + the version depends on comparing text, and because getting the old text may block, we + do not have the ability to know the version of the document up front, and instead can + only retrieve is asynchronously through . + + + + + A associated with this document + + + + + Only checks if the source of the text has changed, no content check is done. + + + + + Holds on a to map and an ordering. + + + + + The entries in the map are sorted by , which yields locally deterministic order but not the order that + matches the order in which documents were added. Therefore this ordering can't be used when creating compilations and it can't be + used when persisting document lists that do not preserve the GUIDs. + + + + + s in the order in which they were added to the project (the compilation order). + + + + + States ordered by . + + + + + Get states ordered in compilation order. + + + + + + Returns a s of documents whose state changed when compared to older states. + + + + + Returns a s of added documents. + + + + + Returns a s of removed documents. + + + + + A class that represents access to a source text and its version from a storage location. + + + + + Load a text and a version of the document. + + + + + + + + Load a text and a version of the document in the workspace. + + + + + + + + Creates a new from an already existing source text and version. + + + + + Creates a from a and version. + + The text obtained from the loader will be the current text of the container at the time + the loader is accessed. + + + + + A class that represents both a tree and its top level signature version + + + + + The syntax tree + + + + + The version of the top level signature of the tree + + + + + VersionStamp should be only used to compare versions returned by same API. + + + + + global counter to avoid collision within same session. + it starts with a big initial number just for a clarity in debugging + + + + + time stamp + + + + + indicate whether there was a collision on same item + + + + + unique version in same session + + + + + Creates a new instance of a VersionStamp. + + + + + Creates a new instance of a version stamp based on the specified DateTime. + + + + + compare two different versions and return either one of the versions if there is no collision, otherwise, create a new version + that can be used later to compare versions between different items + + + + + Gets a new VersionStamp that is guaranteed to be newer than its base one + this should only be used for same item to move it to newer version + + + + + Returns the serialized text form of the VersionStamp. + + + + + Check whether given persisted version is re-usable. Used by VS for Mac + + + + + True if this VersionStamp is newer than the specified one. + + + + + Gets the documents from the corresponding workspace's current solution that are associated with the source text's container, + updated to contain the same text as the source if necessary. + + + + + Gets the document from the corresponding workspace's current solution that is associated with the source text's container + in its current project context, updated to contain the same text as the source if necessary. + + + + + Gets the documents from the corresponding workspace's current solution that are associated with the text container. + + + + + Gets the document from the corresponding workspace's current solution that is associated with the text container + in its current project context. + + + + + Tries to get the document corresponding to the text from the current partial solution + associated with the text's container. If the document does not contain the exact text a document + from a new solution containing the specified text is constructed. If no document is associated + with the specified text's container, or the text's container isn't associated with a workspace, + then the method returns false. + + + + + Encoding to use when there is no byte order mark (BOM) on the stream. This encoder may throw a + if the stream contains invalid UTF-8 bytes. + + + + + Encoding to use when UTF-8 fails. We try to find the following, in order, if available: + 1. The default ANSI codepage + 2. CodePage 1252. + 3. Latin1. + + + + + Initializes an instance of from the provided stream. This version differs + from in two ways: + 1. It attempts to minimize allocations by trying to read the stream into a byte array. + 2. If is null, it will first try UTF8 and, if that fails, it will + try CodePage 1252. If CodePage 1252 is not available on the system, then it will try Latin1. + + The stream containing encoded text. + + Specifies an encoding to be used if the actual encoding can't be determined from the stream content (the stream doesn't start with Byte Order Mark). + If not specified auto-detect heuristics are used to determine the encoding. If these heuristics fail the decoding is assumed to be Encoding.Default. + Note that if the stream starts with Byte Order Mark the value of is ignored. + + Indicates if the file can be embedded in the PDB. + Hash algorithm used to calculate document checksum. + + The stream content can't be decoded using the specified , or + is null and the stream appears to be a binary file. + + An IO error occurred while reading from the stream. + + + + Try to create a from the given stream using the given encoding. + + The input stream containing the encoded text. The stream will not be closed. + The expected encoding of the stream. The actual encoding used may be different if byte order marks are detected. + The checksum algorithm to use. + Throw if binary (non-text) data is detected. + Indicates if the text can be embedded in the PDB. + The decoded from the stream. + The decoder was unable to decode the stream with the given encoding. + Error reading from stream. + + + + Some streams are easily represented as bytes. + + The stream + The bytes, if available. + + True if the stream's bytes could easily be read, false otherwise. + + + + + Read the contents of a FileStream into a byte array. + + The FileStream with encoded text. + A byte array filled with the contents of the file. + True if a byte array could be created. + + + + A workspace provides access to a active set of source code projects and documents and their + associated syntax trees, compilations and semantic models. A workspace has a current solution + that is an immutable snapshot of the projects and documents. This property may change over time + as the workspace is updated either from live interactions in the environment or via call to the + workspace's method. + + + + + Determines whether changes made to unchangeable documents will be silently ignored or cause exceptions to be thrown + when they are applied to workspace via . + A document is unchangeable if is false. + + + + + Constructs a new workspace instance. + + The this workspace uses + A string that can be used to identify the kind of workspace. Usually this matches the name of the class. + + + + Sets an internal logger that will receive some messages. + + An action called to write a single line to the log. + + + + Services provider by the host for implementing workspace features. + + + + + primary branch id that current solution has + + + + + Override this property if the workspace supports partial semantics for documents. + + + + + The kind of the workspace. + This is generally if originating from the host environment, but may be + any other name used for a specific kind of workspace. + + + + + Create a new empty solution instance associated with this workspace. + + + + + Create a new empty solution instance associated with this workspace, and with the given options. + + + + + Create a new empty solution instance associated with this workspace. + + + + + The current solution. + + The solution is an immutable model of the current set of projects and source documents. + It provides access to source text, syntax trees and semantics. + + This property may change as the workspace reacts to changes in the environment or + after is called. + + + + + Sets the of this workspace. This method does not raise a event. + + + This method does not guarantee that linked files will have the same contents. Callers + should enforce that policy before passing in the new solution. + + + + + Applies specified transformation to , updates to the new value and raises a workspace change event of the specified kind. + + Solution transformation. + The kind of workspace change event to raise. + The id of the project updated by to be passed to the workspace change event. + The id of the document updated by to be passed to the workspace change event. + True if was set to the transformed solution, false if the transformation did not change the solution. + + + + Gets or sets the set of all global options and . + Setter also force updates the to have the updated . + + + + + Sets global options and to have the new options. + NOTE: This method also updates to a new solution instance with updated . + + + + + Executes an action as a background task, as part of a sequential queue of tasks. + + + + + Execute a function as a background task, as part of a sequential queue of tasks. + + + + + Override this method to act immediately when the text of a document has changed, as opposed + to waiting for the corresponding workspace changed event to fire asynchronously. + + + + + Override this method to act immediately when a document is closing, as opposed + to waiting for the corresponding workspace changed event to fire asynchronously. + + + + + Clears all solution data and empties the current solution. + + + + + This method is called when a solution is cleared. + + Override this method if you want to do additional work when a solution is cleared. + Call the base method at the end of your method. + + + + + This method is called when an individual project is removed. + + Override this method if you want to do additional work when a project is removed. + Call the base method at the end of your method. + + + + + This method is called to clear an individual document is removed. + + Override this method if you want to do additional work when a document is removed. + Call the base method at the end of your method. + + + + + Disposes this workspace. The workspace can longer be used after it is disposed. + + + + + Call this method when the workspace is disposed. + + Override this method to do additional work when the workspace is disposed. + Call this method at the end of your method. + + + + + Call this method to respond to a solution being opened in the host environment. + + + + + Call this method to respond to a solution being reloaded in the host environment. + + + + + This method is called when the solution is removed from the workspace. + + Override this method if you want to do additional work when the solution is removed. + Call the base method at the end of your method. + Call this method to respond to a solution being removed/cleared/closed in the host environment. + + + + + Call this method to respond to a project being added/opened in the host environment. + + + + + Call this method to respond to a project being reloaded in the host environment. + + + + + Call this method to respond to a project being removed from the host environment. + + + + + Currently projects can always be removed, but this method still exists because it's protected and we don't + want to break people who may have derived from and either called it, or overridden it. + + + + + Call this method when a project's assembly name is changed in the host environment. + + + + + Call this method when a project's output file path is changed in the host environment. + + + + + Call this method when a project's output ref file path is changed in the host environment. + + + + + Call this method when a project's name is changed in the host environment. + + + + + Call this method when a project's default namespace is changed in the host environment. + + + + + Call this method when a project's compilation options are changed in the host environment. + + + + + Call this method when a project's parse options are changed in the host environment. + + + + + Call this method when a project reference is added to a project in the host environment. + + + + + Call this method when a project reference is removed from a project in the host environment. + + + + + Call this method when a metadata reference is added to a project in the host environment. + + + + + Call this method when a metadata reference is removed from a project in the host environment. + + + + + Call this method when an analyzer reference is added to a project in the host environment. + + + + + Call this method when an analyzer reference is removed from a project in the host environment. + + + + + Call this method when an analyzer reference is added to a project in the host environment. + + + + + Call this method when an analyzer reference is removed from a project in the host environment. + + + + + Call this method when status of project has changed to incomplete. + See for more information. + + + + + Call this method when a project's RunAnalyzers property is changed in the host environment. + + + + + Call this method when a document is added to a project in the host environment. + + + + + Call this method when multiple document are added to one or more projects in the host environment. + + + + + Call this method when a document is reloaded in the host environment. + + + + + Call this method when a document is removed from a project in the host environment. + + + + + Call this method when the text of a document is changed on disk. + + + + + Call this method when the text of a additional document is changed on disk. + + + + + Call this method when the text of a analyzer config document is changed on disk. + + + + + Call this method when the document info changes, such as the name, folders or file path. + + + + + Call this method when the text of a document is updated in the host environment. + + + + + Call this method when the text of an additional document is updated in the host environment. + + + + + Call this method when the text of an analyzer config document is updated in the host environment. + + + + + When a s text is changed, we need to make sure all of the linked + files also have their content updated in the new solution before applying it to the + workspace to avoid the workspace having solutions with linked files where the contents + do not match. + + + + + Call this method when the SourceCodeKind of a document changes in the host environment. + + + + + Call this method when an additional document is added to a project in the host environment. + + + + + Call this method when an additional document is removed from a project in the host environment. + + + + + Call this method when an analyzer config document is added to a project in the host environment. + + + + + Call this method when an analyzer config document is removed from a project in the host environment. + + + + + Updates all projects to properly reference other projects as project references instead of metadata references. + + + + + Determines if the specific kind of change is supported by the method. + + + + + Returns if a reference to referencedProject can be added to + referencingProject. otherwise. + + + + + Apply changes made to a solution back to the workspace. + + The specified solution must be one that originated from this workspace. If it is not, or the workspace + has been updated since the solution was obtained from the workspace, then this method returns false. This method + will still throw if the solution contains changes that are not supported according to the + method. + + Thrown if the solution contains changes not supported according to the + method. + + + + Called during a call to to determine if a specific change to is allowed. + + + This method is only called if returns false for . + If returns true, then that means all changes are allowed and this method does not need to be called. + + The old of the project from prior to the change. + The new of the project that was passed to . + The project contained in the passed to . + + + + Called during a call to to determine if a specific change to is allowed. + + + This method is only called if returns false for . + If returns true, then that means all changes are allowed and this method does not need to be called. + + The old of the project from prior to the change. + The new of the project that was passed to . + The project contained in the passed to . + + + + This method is called during for each project + that has been added, removed or changed. + + Override this method if you want to modify how project changes are applied. + + + + + This method is called during to add a project to the current solution. + + Override this method to implement the capability of adding projects. + + + + + This method is called during to remove a project from the current solution. + + Override this method to implement the capability of removing projects. + + + + + This method is called during to change the compilation options. + + Override this method to implement the capability of changing compilation options. + + + + + This method is called during to change the parse options. + + Override this method to implement the capability of changing parse options. + + + + + This method is called during to add a project reference to a project. + + Override this method to implement the capability of adding project references. + + + + + This method is called during to remove a project reference from a project. + + Override this method to implement the capability of removing project references. + + + + + This method is called during to add a metadata reference to a project. + + Override this method to implement the capability of adding metadata references. + + + + + This method is called during to remove a metadata reference from a project. + + Override this method to implement the capability of removing metadata references. + + + + + This method is called during to add an analyzer reference to a project. + + Override this method to implement the capability of adding analyzer references. + + + + + This method is called during to remove an analyzer reference from a project. + + Override this method to implement the capability of removing analyzer references. + + + + + This method is called during to add an analyzer reference to the solution. + + Override this method to implement the capability of adding analyzer references. + + + + + This method is called during to remove an analyzer reference from the solution. + + Override this method to implement the capability of removing analyzer references. + + + + + This method is called during to add a new document to a project. + + Override this method to implement the capability of adding documents. + + + + + This method is called during to remove a document from a project. + + Override this method to implement the capability of removing documents. + + + + + This method is called to change the text of a document. + + Override this method to implement the capability of changing document text. + + + + + This method is called to change the info of a document. + + Override this method to implement the capability of changing a document's info. + + + + + This method is called during to add a new additional document to a project. + + Override this method to implement the capability of adding additional documents. + + + + + This method is called during to remove an additional document from a project. + + Override this method to implement the capability of removing additional documents. + + + + + This method is called to change the text of an additional document. + + Override this method to implement the capability of changing additional document text. + + + + + This method is called during to add a new analyzer config document to a project. + + Override this method to implement the capability of adding analyzer config documents. + + + + + This method is called during to remove an analyzer config document from a project. + + Override this method to implement the capability of removing analyzer config documents. + + + + + This method is called to change the text of an analyzer config document. + + Override this method to implement the capability of changing analyzer config document text. + + + + + Throws an exception is the solution is not empty. + + + + + Throws an exception if the project is not part of the current solution. + + + + + Throws an exception is the project is part of the current solution. + + + + + Throws an exception if a project does not have a specific project reference. + + + + + Throws an exception if a project already has a specific project reference. + + + + + Throws an exception if project has a transitive reference to another project. + + + + + Throws an exception if a project does not have a specific metadata reference. + + + + + Throws an exception if a project already has a specific metadata reference. + + + + + Throws an exception if a project does not have a specific analyzer reference. + + + + + Throws an exception if a project already has a specific analyzer reference. + + + + + Throws an exception if a project already has a specific analyzer reference. + + + + + Throws an exception if a project already has a specific analyzer reference. + + + + + Throws an exception if a document is not part of the current solution. + + + + + Throws an exception if an additional document is not part of the current solution. + + + + + Throws an exception if an analyzer config is not part of the current solution. + + + + + Throws an exception if a document is already part of the current solution. + + + + + Throws an exception if an additional document is already part of the current solution. + + + + + Throws an exception if the analyzer config document is already part of the current solution. + + + + + Gets the name to use for a project in an error message. + + + + + Gets the name to use for a document in an error message. + + + + + Gets the name to use for an additional document in an error message. + + + + + Gets the name to use for an analyzer document in an error message. + + + + + A class that responds to text buffer changes + + + + + Tracks the document ID in the current context for a source text container for an opened text buffer. + + For each entry in this map, there must be a corresponding entry in where the document ID in current context is one of associated document IDs. + + + + Tracks all the associated document IDs for a source text container for an opened text buffer. + + + + + True if this workspace supports manually opening and closing documents. + + + + + True if this workspace supports manually changing the active context document of a text buffer by calling . + + + + + Open the specified document in the host environment. + + + + + Close the specified document in the host environment. + + + + + Open the specified additional document in the host environment. + + + + + Close the specified additional document in the host environment. + + + + + Open the specified analyzer config document in the host environment. + + + + + Close the specified analyzer config document in the host environment. + + + + + Determines if the document is currently open in the host environment. + + + + + Gets a list of the currently opened documents. + + + + + Gets the ids for documents in the snapshot associated with the given . + Documents are normally associated with a text container when the documents are opened. + + + + + Gets the id for the document associated with the given text container in its current context. + Documents are normally associated with a text container when the documents are opened. + + + + + Finds the related to the given that + is in the current context. If the is currently closed, then + it is returned directly. If it is open, then this returns the same result that + would return for the + . + + + + + Call this method to tell the host environment to change the current active context to this document. Only supported if + returns true. + + + + + Call this method when a document has been made the active context in the host environment. + + + + + Registers a SourceTextContainer to a source generated document. Unlike , + this doesn't result in the workspace being updated any time the contents of the container is changed; instead + this ensures that features going from the text container to the buffer back to a document get a usable document. + + + + The DocumentId of the current context document attached to the textContainer, if any. + + + + This method is called during OnSolutionReload. Override this method if you want to manipulate + the reloaded solution. + + + + + An event raised whenever the current solution is changed. + + + + + An event raised whenever the workspace or part of its solution model + fails to access a file or other external resource. + + + + + An event that is fired when a documents is opened in the editor. + + + + + An event that is fired when a document is closed in the editor. + + + + + An event that is fired when the active context document associated with a buffer + changes. + + + + + Gets the workspace associated with the specific text container. + + + + + Register a correspondence between a text container and a workspace. + + + + + Unregister a correspondence between a text container and a workspace. + + + + + Returns a for a given text container. + + + + + The describing any kind of workspace change. + + + When linked files are edited, one document change event is fired per linked file. All of + these events contain the same , and they all contain the same + . This is so that we can trigger document change events on all + affected documents without reporting intermediate states in which the linked file contents + do not match. + + + + + If linked documents are being changed, there may be multiple events with the same + and . Note that the workspace starts with its solution set to an empty solution. + replaces the previous solution, which might be the empty + one. + + + + + If linked documents are being changed, there may be multiple events with the same + and . Note replaces the previous + solution with the empty one. + + + + + The id of the affected . Can be if this is an change unrelated + to a project (for example . Should be non- for: + + + + + + + + + + + The id of the affected . Can be if this is an change unrelated + to a document (for example . Should be non- for: + + + + + + + + + + + + The current solution changed for an unspecified reason. + + + + + A solution was added to the workspace. + + + + + The current solution was removed from the workspace. + + + + + The current solution was cleared of all projects and documents. + + + + + The current solution was reloaded. + + + + + A project was added to the current solution. + + + + + A project was removed from the current solution. + + + + + A project in the current solution was changed. + + + + + A project in the current solution was reloaded. + + + + + A document was added to the current solution. + + + + + A document was removed from the current solution. + + + + + A document in the current solution was reloaded. + + + + + A document in the current solution was changed. + + + When linked files are edited, one event is fired per + linked file. All of these events contain the same OldSolution, and they all contain + the same NewSolution. This is so that we can trigger document change events on all + affected documents without reporting intermediate states in which the linked file + contents do not match. Each event does not represent + an incremental update from the previous event in this special case. + + + + + An additional document was added to the current solution. + + + + + An additional document was removed from the current solution. + + + + + An additional document in the current solution was reloaded. + + + + + An additional document in the current solution was changed. + + + + + The document in the current solution had is info changed; name, folders, filepath + + + + + An analyzer config document was added to the current solution. + + + + + An analyzer config document was removed from the current solution. + + + + + An analyzer config document in the current solution was reloaded. + + + + + An analyzer config document in the current solution was changed. + + + + + Disables if the workspace creates recoverable trees when from its s. + + + + + Known workspace kinds + + + + + kind. + + + + + The base implementation for . This type provides caching and tracking of inputs given + to . + + + This type generally assumes that files on disk aren't changing, since it ensure that two calls to + will always return the same thing, per that interface's contract. + + + + + Implemented by derived types to actually perform the load for an assembly that doesn't have a cached result. + + + + + Returns the cached assembly for fullPath if we've done a load for this path before, or calls if + it needs to be loaded. This method skips the check in release builds that the path is an absolute path, hence the "Unchecked" in the name. + + + + + When overridden in a derived class, allows substituting an assembly path after we've + identified the context to load an assembly in, but before the assembly is actually + loaded from disk. This is used to substitute out the original path with the shadow-copied version. + + + + +

Typically a user analyzer has a reference to the compiler and some of the compiler's + dependencies such as System.Collections.Immutable. For the analyzer to correctly + interoperate with the compiler that created it, we need to ensure that we always use the + compiler's version of a given assembly over the analyzer's version.

+ +

If we neglect to do this, then in the case where the user ships the compiler or its + dependencies in the analyzer's bin directory, we could end up loading a separate + instance of those assemblies in the process of loading the analyzer, which will surface + as a failure to load the analyzer.

+
+
+ + + The base directory for shadow copies. Each instance of + gets its own + subdirectory under this directory. This is also the starting point + for scavenge operations. + + + + + The directory where this instance of + will shadow-copy assemblies, and the mutex created to mark that the owner of it is still active. + + + + + Used to generate unique names for per-assembly directories. Should be updated with . + + + + + Realizes the array. + + + + + Realizes the array and clears the collection. + + + + + Write to slot . + Fills in unallocated slots preceding the , if any. + + + + + Realizes the array. + + + + + Realizes the array, downcasting each element to a derived type. + + + + + Realizes the array and disposes the builder in one operation. + + + + + struct enumerator used in foreach. + + + + + Generic implementation of object pooling pattern with predefined pool size limit. The main + purpose is that limited number of frequently used objects can be kept in the pool for + further recycling. + + Notes: + 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there + is no space in the pool, extra returned objects will be dropped. + + 2) it is implied that if object was obtained from a pool, the caller will return it back in + a relatively short time. Keeping checked out objects for long durations is ok, but + reduces usefulness of pooling. Just new up your own. + + Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. + Rationale: + If there is no intent for reusing the object, do not use pool - just use "new". + + + + + Not using System.Func{T} because this file is linked into the (debugger) Formatter, + which does not have that type (since it compiles against .NET 2.0). + + + + + Produces an instance. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search. + + + + + Returns objects to the pool. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search in Allocate. + + + + + Removes an object from leak tracking. + + This is called when an object is returned to the pool. It may also be explicitly + called if an object allocated from the pool is intentionally not being returned + to the pool. This can be of use with pooled arrays if the consumer wants to + return a larger array to the pool than was originally allocated. + + + + + Provides pooled delegate instances to help avoid closure allocations for delegates that require a state argument + with APIs that do not provide appropriate overloads with state arguments. + + + + + Gets an delegate, which calls with the specified + . The resulting may be called any number of times + until the returned is disposed. + + + The following example shows the use of a capturing delegate for a callback action that requires an + argument: + + + int x = 3; + RunWithActionCallback(() => this.DoSomething(x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + callback action: + + + int x = 3; + using var _ = GetPooledAction(arg => arg.self.DoSomething(arg.x), (self: this, x), out Action action); + RunWithActionCallback(action); + + + The type of argument to pass to . + The unbound action delegate. + The argument to pass to the unbound action delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets an delegate, which calls with the specified + . The resulting may be called any number of times + until the returned is disposed. + + + The following example shows the use of a capturing delegate for a callback action that requires an + argument: + + + int x = 3; + RunWithActionCallback(a => this.DoSomething(a, x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + callback action: + + + int x = 3; + using var _ = GetPooledAction((a, arg) => arg.self.DoSomething(a, arg.x), (self: this, x), out Action<int> action); + RunWithActionCallback(action); + + + The type of the first parameter of the bound action. + The type of argument to pass to . + The unbound action delegate. + The argument to pass to the unbound action delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets an delegate, which calls with the specified + . The resulting may be called any number of times + until the returned is disposed. + + + The following example shows the use of a capturing delegate for a callback action that requires an + argument: + + + int x = 3; + RunWithActionCallback((a, b) => this.DoSomething(a, b, x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + callback action: + + + int x = 3; + using var _ = GetPooledAction((a, b, arg) => arg.self.DoSomething(a, b, arg.x), (self: this, x), out Action<int, int> action); + RunWithActionCallback(action); + + + The type of the first parameter of the bound action. + The type of the second parameter of the bound action. + The type of argument to pass to . + The unbound action delegate. + The argument to pass to the unbound action delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets an delegate, which calls with the specified + . The resulting may be called any number of times + until the returned is disposed. + + + The following example shows the use of a capturing delegate for a callback action that requires an + argument: + + + int x = 3; + RunWithActionCallback((a, b, c) => this.DoSomething(a, b, c, x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + callback action: + + + int x = 3; + using var _ = GetPooledAction((a, b, c, arg) => arg.self.DoSomething(a, b, c, arg.x), (self: this, x), out Action<int, int, int> action); + RunWithActionCallback(action); + + + The type of the first parameter of the bound action. + The type of the second parameter of the bound action. + The type of the third parameter of the bound action. + The type of argument to pass to . + The unbound action delegate. + The argument to pass to the unbound action delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets a delegate, which calls with the + specified . The resulting may be called any + number of times until the returned is disposed. + + + The following example shows the use of a capturing delegate for a predicate that requires an + argument: + + + int x = 3; + RunWithPredicate(() => this.IsSomething(x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + predicate: + + + int x = 3; + using var _ = GetPooledFunction(arg => arg.self.IsSomething(arg.x), (self: this, x), out Func<bool> predicate); + RunWithPredicate(predicate); + + + The type of argument to pass to . + The type of the return value of the function. + The unbound function delegate. + The argument to pass to the unbound function delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets a delegate, which calls with the + specified . The resulting may be called any + number of times until the returned is disposed. + + + The following example shows the use of a capturing delegate for a predicate that requires an + argument: + + + int x = 3; + RunWithPredicate(a => this.IsSomething(a, x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + predicate: + + + int x = 3; + using var _ = GetPooledFunction((a, arg) => arg.self.IsSomething(a, arg.x), (self: this, x), out Func<int, bool> predicate); + RunWithPredicate(predicate); + + + The type of the first parameter of the bound function. + The type of argument to pass to . + The type of the return value of the function. + The unbound function delegate. + The argument to pass to the unbound function delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets a delegate, which calls with the + specified . The resulting may be called any + number of times until the returned is disposed. + + + The following example shows the use of a capturing delegate for a predicate that requires an + argument: + + + int x = 3; + RunWithPredicate((a, b) => this.IsSomething(a, b, x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + predicate: + + + int x = 3; + using var _ = GetPooledFunction((a, b, arg) => arg.self.IsSomething(a, b, arg.x), (self: this, x), out Func<int, int, bool> predicate); + RunWithPredicate(predicate); + + + The type of the first parameter of the bound function. + The type of the second parameter of the bound function. + The type of argument to pass to . + The type of the return value of the function. + The unbound function delegate. + The argument to pass to the unbound function delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets a delegate, which calls with the + specified . The resulting may be called any + number of times until the returned is disposed. + + + The following example shows the use of a capturing delegate for a predicate that requires an + argument: + + + int x = 3; + RunWithPredicate((a, b, c) => this.IsSomething(a, b, c, x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + predicate: + + + int x = 3; + using var _ = GetPooledFunction((a, b, c, arg) => arg.self.IsSomething(a, b, c, arg.x), (self: this, x), out Func<int, int, int, bool> predicate); + RunWithPredicate(predicate); + + + The type of the first parameter of the bound function. + The type of the second parameter of the bound function. + The type of the third parameter of the bound function. + The type of argument to pass to . + The type of the return value of the function. + The unbound function delegate. + The argument to pass to the unbound function delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + A releaser for a pooled delegate. + + + This type is intended for use as the resource of a using statement. When used in this manner, + should not be called explicitly. + + If used without a using statement, calling is optional. If the call is + omitted, the object will not be returned to the pool. The behavior of this type if is + called multiple times is undefined. + + + + + The usage is: + var inst = PooledStringBuilder.GetInstance(); + var sb = inst.builder; + ... Do Stuff... + ... sb.ToString() ... + inst.Free(); + + + + + If someone need to create a private pool + + The size of the pool. + + + + + Verify nodes match source. + + + + + Return the index of the first difference between + the two strings, or -1 if the strings are the same. + + + + + Returns true if the provided position is in a hidden region inaccessible to the user. + + + + + The collection of extension methods for the type + + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If items is null (default) + If the sequence is null, this will throw + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If the sequence is null, this will return an empty array. + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If the sequence is null, this will return the default (null) array. + + + + Converts an array to an immutable array. The array must not be null. + + + The sequence to convert + + + + + Converts a array to an immutable array. + + + The sequence to convert + + If the sequence is null, this will return the default (null) array. + + + + Converts an array to an immutable array. + + + The sequence to convert + If the array is null, this will return an empty immutable array. + + + + Reads bytes from specified . + + The stream. + Read-only content of the stream. + + + + Maps an immutable array to another immutable array. + + + + The array to map + The mapping delegate + If the items's length is 0, this will return an empty immutable array + + + + Maps an immutable array to another immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Maps an immutable array to another immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Maps a subset of immutable array to another immutable array. + + Type of the source array items + Type of the transformed array items + The array to transform + The condition to use for filtering the array content. + A transform function to apply to each element that is not filtered out by . + If the items's length is 0, this will return an empty immutable array. + + + + Maps an immutable array through a function that returns ValueTasks, returning the new ImmutableArray. + + + + + Zips two immutable arrays together through a mapping function, producing another immutable array. + + If the items's length is 0, this will return an empty immutable array. + + + + Creates a new immutable array based on filtered elements by the predicate. The array must not be null. + + The array to process + The delegate that defines the conditions of the element to search for. + + + + Creates a new immutable array based on filtered elements by the predicate. The array must not be null. + + The array to process + The delegate that defines the conditions of the element to search for. + + + + Casts the immutable array of a Type to an immutable array of its base type. + + + + + Determines whether this instance and another immutable array are equal. + + + + + The comparer to determine if the two arrays are equal. + True if the two arrays are equal + + + + Returns an empty array if the input array is null (default) + + + + + Returns an empty array if the input nullable value type is null or the underlying array is null (default) + + + + + Returns an array of distinct elements, preserving the order in the original array. + If the array has no duplicates, the original array is returned. The original array must not be null. + + + + + Create BitArray with at least the specified number of bits. + + + + + return a bit array with all bits set from index 0 through bitCount-1 + + + + + + + Make a copy of a bit array. + + + + + + Invert all the bits in the vector. + + + + + Is the given bit array null? + + + + + Modify this bit vector by bitwise AND-ing each element with the other bit vector. + For the purposes of the intersection, any bits beyond the current length will be treated as zeroes. + Return true if any changes were made to the bits of this bit vector. + + + + + Modify this bit vector by '|'ing each element with the other bit vector. + + + True if any bits were set as a result of the union. + + + + + Checks if a type is considered a "built-in integral" by CLR. + + + + + Checks if a type is a primitive of a fixed size. + + + + + These special types are structs that contain fields of the same type + (e.g. System.Int32 contains a field of type System.Int32). + + + + + Checks if a type is considered a "built-in integral" by CLR. + + + + + For signed integer types return number of bits for their representation minus 1. + I.e. 7 for Int8, 31 for Int32, etc. + Used for checking loop end condition for VB for loop. + + + + + Maps an array builder to immutable array. + + + + The array to map + The mapping delegate + If the items's length is 0, this will return an empty immutable array + + + + Maps an array builder to immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Maps an array builder to immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + The collection of extension methods for the type + + + + + If the given key is not found in the dictionary, add it with the given value and return the value. + Otherwise return the existing value associated with that key. + + + + + A MultiDictionary that allows only adding, and preserves the order of values added to the + dictionary. Thread-safe for reading, but not for adding. + + + Always uses the default comparer. + + + + + Add a value to the dictionary. + + + + + Get all values associated with K, in the order they were added. + Returns empty read-only array if no values were present. + + + + + Get a collection of all the keys. + + + + + Each value is either a single V or an . + Never null. + + + + + Provides methods for creating a segmented dictionary that is immutable; meaning it cannot be changed once it is + created. + + + + + Represents a segmented dictionary that is immutable; meaning it cannot be changed once it is created. + + + There are different scenarios best for and others + best for . + + In general, is applicable in scenarios most like + the scenarios where is applicable, and + is applicable in scenarios most like the scenarios where + is applicable. + + The following table summarizes the performance characteristics of + : + + + + Operation + Complexity + Complexity + Comments + + + Item + O(1) + O(log n) + Directly index into the underlying segmented dictionary + + + Add() + O(n) + O(log n) + Requires creating a new segmented dictionary + + + + This type is backed by segmented arrays to avoid using the Large Object Heap without impacting algorithmic + complexity. + + The type of the keys in the dictionary. + The type of the values in the dictionary. + + This type has a documented contract of being exactly one reference-type field in size. Our own + class depends on it, as well as others externally. + + IMPORTANT NOTICE FOR MAINTAINERS AND REVIEWERS: + + This type should be thread-safe. As a struct, it cannot protect its own fields from being changed from one + thread while its members are executing on other threads because structs can change in place simply by + reassigning the field containing this struct. Therefore it is extremely important that ⚠⚠ Every member + should only dereference this ONCE ⚠⚠. If a member needs to reference the + field, that counts as a dereference of this. Calling other instance members + (properties or methods) also counts as dereferencing this. Any member that needs to use this more + than once must instead assign this to a local variable and use that for the rest of the code instead. + This effectively copies the one field in the struct to a local variable so that it is insulated from other + threads. + + + + + The immutable collection this builder is based on. + + + + + The current mutable collection this builder is operating on. This field is initialized to a copy of + the first time a change is made. + + + + + The return value from the implementation of is + . This is the return value for most instances of this + enumerator. + + + + + The return value from the implementation of is + . This is the return value for instances of this + enumerator created by the implementation in + . + + + + + Private helper class for use only by . + + + + + + + + + + + + + + + + + + + + + + + + + + Represents a segmented list that is immutable; meaning it cannot be changed once it is created. + + + There are different scenarios best for and others + best for . + + The following table summarizes the performance characteristics of + : + + + + Operation + Complexity + Complexity + Comments + + + Item + O(1) + O(log n) + Directly index into the underlying segmented list + + + Add() + Currently O(n), but could be O(1) with a relatively large constant + O(log n) + Currently requires creating a new segmented list, but could be modified to only clone the segments with changes + + + Insert() + O(n) + O(log n) + Requires creating a new segmented list and cloning all impacted segments + + + + This type is backed by segmented arrays to avoid using the Large Object Heap without impacting algorithmic + complexity. + + The type of the value in the list. + + This type has a documented contract of being exactly one reference-type field in size. Our own + class depends on it, as well as others externally. + + IMPORTANT NOTICE FOR MAINTAINERS AND REVIEWERS: + + This type should be thread-safe. As a struct, it cannot protect its own fields from being changed from one + thread while its members are executing on other threads because structs can change in place simply by + reassigning the field containing this struct. Therefore it is extremely important that ⚠⚠ Every member + should only dereference this ONCE ⚠⚠. If a member needs to reference the + field, that counts as a dereference of this. Calling other instance members + (properties or methods) also counts as dereferencing this. Any member that needs to use this more + than once must instead assign this to a local variable and use that for the rest of the code instead. + This effectively copies the one field in the struct to a local variable so that it is insulated from other + threads. + + + + + The immutable collection this builder is based on. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Private helper class for use only by . + + + + + The immutable collection this builder is based on. + + + + + The current mutable collection this builder is operating on. This field is initialized to a copy of + the first time a change is made. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Swaps the values in the two references if the first is greater than the second. + + + Swaps the values in the two references, regardless of whether the two references are the same. + + + Helper methods for use in array/span sorting routines. + + + Returns approximate reciprocal of the divisor: ceil(2**64 / divisor). + This should only be used on 64-bit. + + + Performs a mod operation using the multiplier pre-computed with . + + PERF: This improves performance in 64-bit scenarios at the expense of performance in 32-bit scenarios. Since + we only build a single AnyCPU binary, we opt for improved performance in the 64-bit scenario. + + + + + Provides static methods to invoke members on value types that explicitly implement the + member. + + + Normally, invocation of explicit interface members requires boxing or copying the value type, which is + especially problematic for operations that mutate the value. Invocation through these helpers behaves like a + normal call to an implicitly implemented member. + + + + + Provides static methods to invoke members on value types that explicitly implement + the member. + + + Normally, invocation of explicit interface members requires boxing or copying the value type, which is + especially problematic for operations that mutate the value. Invocation through these helpers behaves like a + normal call to an implicitly implemented member. + + + + + Provides static methods to invoke members on value types that explicitly implement the + member. + + + Normally, invocation of explicit interface members requires boxing or copying the value type, which is + especially problematic for operations that mutate the value. Invocation through these helpers behaves like a + normal call to an implicitly implemented member. + + + + + Provides static methods to invoke members on value types that explicitly implement + the member. + + + Normally, invocation of explicit interface members requires boxing or copying the value type, which is + especially problematic for operations that mutate the value. Invocation through these helpers behaves like a + normal call to an implicitly implemented member. + + + + + Provides static methods to invoke members on value types that explicitly implement the + member. + + + Normally, invocation of explicit interface members requires boxing or copying the value type, which is + especially problematic for operations that mutate the value. Invocation through these helpers behaves like a + normal call to an implicitly implemented member. + + + + + Used internally to control behavior of insertion into a or . + + + + + The default insertion behavior. + + + + + Specifies that an existing entry with the same key should be overwritten if encountered. + + + + + Specifies that if an existing entry with the same key is encountered, an exception should be thrown. + + + + + Returns a by-ref to type that is a null reference. + + + + + Returns if a given by-ref to type is a null reference. + + + This check is conceptually similar to (void*)(&source) == nullptr. + + + + + A combination of and + . + + + + + Calculates the maximum number of elements of size which can fit into an array + which has the following characteristics: + + The array can be allocated in the small object heap. + The array length is a power of 2. + + + The size of the elements in the array. + The segment size to use for small object heap segmented arrays. + + + + Calculates a shift which can be applied to an absolute index to get the page index within a segmented array. + + The number of elements in each page of the segmented array. Must be a power of 2. + The shift to apply to the absolute index to get the page index within a segmented array. + + + + Calculates a mask, which can be applied to an absolute index to get the index within a page of a segmented + array. + + The number of elements in each page of the segmented array. Must be a power of 2. + The bit mask to obtain the index within a page from an absolute index within a segmented array. + + + Destination array is not long enough to copy all the items in the collection. Check array index and length. + + + Hashtable's capacity overflowed and went negative. Check load factor, capacity and the current size of the table. + + + The given key '{0}' was not present in the dictionary. + + + Destination array was not long enough. Check the destination index, length, and the array's lower bounds. + + + Source array was not long enough. Check the source index, length, and the array's lower bounds. + + + The lower bound of target array must be zero. + + + Only single dimensional arrays are supported for the requested action. + + + The value "{0}" is not of type "{1}" and cannot be used in this generic collection. + + + An item with the same key has already been added. Key: {0} + + + Target array type is not compatible with the type of items in the collection. + + + Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection. + + + Number was less than the array's lower bound in the first dimension. + + + Larger than collection size. + + + Count must be positive and count must refer to a location within the string/array/collection. + + + Index was out of range. Must be non-negative and less than the size of the collection. + + + Index must be within the bounds of the List. + + + Non-negative number required. + + + capacity was less than the current size. + + + Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct. + + + Collection was modified; enumeration operation may not execute. + + + Enumeration has either not started or has already finished. + + + Failed to compare two elements in the array. + + + Mutating a key collection derived from a dictionary is not allowed. + + + Mutating a value collection derived from a dictionary is not allowed. + + + The specified arrays must have the same number of dimensions. + + + Collection was of a fixed size. + + + Object is not a array with the same number of elements as the array to compare it to. + + + Unable to sort because the IComparer.Compare() method returns inconsistent results. Either a value does not compare equal to itself, or one value repeatedly compared to another value yields different results. IComparer: '{0}'. + + + Cannot find the old value + + + + Mutates a value in-place with optimistic locking transaction semantics via a specified transformation + function. The transformation is retried as many times as necessary to win the optimistic locking race. + + The type of value stored by the list. + + The variable or field to be changed, which may be accessed by multiple threads. + + + A function that mutates the value. This function should be side-effect free, + as it may run multiple times when races occur with other threads. + + if the location's value is changed by applying the result of the + function; otherwise, if the location's value remained + the same because the last invocation of returned the existing value. + + + + + Mutates a value in-place with optimistic locking transaction semantics via a specified transformation + function. The transformation is retried as many times as necessary to win the optimistic locking race. + + The type of value stored by the list. + The type of argument passed to the . + + The variable or field to be changed, which may be accessed by multiple threads. + + + A function that mutates the value. This function should be side-effect free, as it may run multiple times + when races occur with other threads. + The argument to pass to . + + if the location's value is changed by applying the result of the + function; otherwise, if the location's value remained + the same because the last invocation of returned the existing value. + + + + + Assigns a field or variable containing an immutable list to the specified value and returns the previous + value. + + The type of value stored by the list. + The field or local variable to change. + The new value to assign. + The prior value at the specified . + + + + Assigns a field or variable containing an immutable list to the specified value if it is currently equal to + another specified value. Returns the previous value. + + The type of value stored by the list. + The field or local variable to change. + The new value to assign. + The value to check equality for before assigning. + The prior value at the specified . + + + + Assigns a field or variable containing an immutable list to the specified value if it is has not yet been + initialized. + + The type of value stored by the list. + The field or local variable to change. + The new value to assign. + if the field was assigned the specified value; otherwise, + if it was previously initialized. + + + + Mutates a value in-place with optimistic locking transaction semantics via a specified transformation + function. The transformation is retried as many times as necessary to win the optimistic locking race. + + The type of key stored by the dictionary. + The type of value stored by the dictionary. + + The variable or field to be changed, which may be accessed by multiple threads. + + + A function that mutates the value. This function should be side-effect free, + as it may run multiple times when races occur with other threads. + + if the location's value is changed by applying the result of the + function; otherwise, if the location's value remained + the same because the last invocation of returned the existing value. + + + + + Mutates a value in-place with optimistic locking transaction semantics via a specified transformation + function. The transformation is retried as many times as necessary to win the optimistic locking race. + + The type of key stored by the dictionary. + The type of value stored by the dictionary. + The type of argument passed to the . + + The variable or field to be changed, which may be accessed by multiple threads. + + + A function that mutates the value. This function should be side-effect free, as it may run multiple times + when races occur with other threads. + The argument to pass to . + + if the location's value is changed by applying the result of the + function; otherwise, if the location's value remained + the same because the last invocation of returned the existing value. + + + + + Assigns a field or variable containing an immutable dictionary to the specified value and returns the + previous value. + + The type of key stored by the dictionary. + The type of value stored by the dictionary. + The field or local variable to change. + The new value to assign. + The prior value at the specified . + + + + Assigns a field or variable containing an immutable dictionary to the specified value if it is currently + equal to another specified value. Returns the previous value. + + The type of key stored by the dictionary. + The type of value stored by the dictionary. + The field or local variable to change. + The new value to assign. + The value to check equality for before assigning. + The prior value at the specified . + + + + Assigns a field or variable containing an immutable dictionary to the specified value if it is has not yet + been initialized. + + The type of key stored by the dictionary. + The type of value stored by the dictionary. + The field or local variable to change. + The new value to assign. + if the field was assigned the specified value; otherwise, + if it was previously initialized. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines a fixed-size collection with the same API surface and behavior as an "SZArray", which is a + single-dimensional zero-based array commonly represented in C# as T[]. The implementation of this + collection uses segmented arrays to avoid placing objects on the Large Object Heap. + + The type of elements stored in the array. + + + + The number of elements in each page of the segmented array of type . + + + The segment size is calculated according to , performs the IL operation + defined by . ECMA-335 defines this operation with the following note: + + sizeof returns the total size that would be occupied by each element in an array of this type – + including any padding the implementation chooses to add. Specifically, array elements lie sizeof + bytes apart. + + + + + The bit shift to apply to an array index to get the page index within . + + + + + The bit mask to apply to an array index to get the index within a page of . + + + + + Represents a collection of keys and values. + + + This collection has the same performance characteristics as , but + uses segmented arrays to avoid allocations in the Large Object Heap. + + The type of the keys in the dictionary. + The type of the values in the dictionary. + + + + Ensures that the dictionary can hold up to 'capacity' entries without any further expansion of its backing storage + + + + + Sets the capacity of this dictionary to what it would be if it had been originally initialized with all its entries + + + This method can be used to minimize the memory overhead + once it is known that no new elements will be added. + + To allocate minimum size storage array, execute the following statements: + + dictionary.Clear(); + dictionary.TrimExcess(); + + + + + Sets the capacity of this dictionary to hold up 'capacity' entries without any further expansion of its backing storage + + + This method can be used to minimize the memory overhead + once it is known that no new elements will be added. + + + + + 0-based index of next entry in chain: -1 means end of chain + also encodes whether this entry _itself_ is part of the free list by changing sign and subtracting 3, + so -2 means end of free list, -3 means index 0 but on free list, -4 means index 1 but on free list, etc. + + + + + Represents a strongly typed list of objects that can be accessed by index. Provides methods to search, sort, and + manipulate lists. + + + This collection has the same performance characteristics as , but uses segmented + arrays to avoid allocations in the Large Object Heap. + + The type of elements in the list. + + + + Initializes a new instance of the class. + + An ordered set of fully qualified + paths which are searched when resolving assembly names. + Directory used when resolving relative paths. + + + + A pre-created delegate to assign to if needed. + + + + + Dumps the stack trace of the exception and the handler to the console. This is useful + for debugging unit tests that hit a fatal exception + + + + + Checks for the given ; if the is true, + immediately terminates the process without running any pending finally blocks or finalizers + and causes a crash dump to be collected (if the system is configured to do so). + Otherwise, the process continues normally. + + The conditional expression to evaluate. + An optional message to be recorded in the dump in case of failure. Can be null. + + + + Set by the host to handle an error report; this may crash the process or report telemetry. + + + + + Same as setting the Handler property except that it avoids the assert. This is useful in + test code which needs to verify the handler is called in specific cases and will continually + overwrite this value. + + + + + Copies the handler in this instance to the linked copy of this type in this other assembly. + + + This file is in linked into multiple layers, but we want to ensure that all layers have the same copy. + This lets us copy the handler in this instance into the same in another instance. + + + + + Use in an exception filter to report an error without catching the exception. + The error is reported by calling . + + to avoid catching the exception. + + + + Use in an exception filter to report an error (by calling ), unless the + operation has been cancelled. The exception is never caught. + + to avoid catching the exception. + + + + Use in an exception filter to report an error (by calling ), unless the + operation has been cancelled at the request of . The exception is + never caught. + + Cancellable operations are only expected to throw if the + applicable indicates cancellation is requested by setting + . Unexpected cancellation, i.e. an + which occurs without + requesting cancellation, is treated as an error by this method. + + This method does not require to match + , provided cancellation is expected per the previous + paragraph. + + A which will have + set if cancellation is expected. + to avoid catching the exception. + + + + Report an error. + Calls and doesn't pass the exception through (the method returns true). + This is generally expected to be used within an exception filter as that allows us to + capture data at the point the exception is thrown rather than when it is handled. + However, it can also be used outside of an exception filter. If the exception has not + already been thrown the method will throw and catch it itself to ensure we get a useful + stack trace. + + True to catch the exception. + + + + Use in an exception filter to report an error (by calling ) and catch + the exception, unless the operation was cancelled. + + to catch the exception if the error was reported; otherwise, + to propagate the exception if the operation was cancelled. + + + + Use in an exception filter to report an error (by calling ) and catch + the exception, unless the operation was cancelled. + + to catch the exception if the error was reported; otherwise, + to propagate the exception if the operation was cancelled. + + + + Use in an exception filter to report an error (by calling ) and + catch the exception, unless the operation was cancelled at the request of + . + + Cancellable operations are only expected to throw if the + applicable indicates cancellation is requested by setting + . Unexpected cancellation, i.e. an + which occurs without + requesting cancellation, is treated as an error by this method. + + This method does not require to match + , provided cancellation is expected per the previous + paragraph. + + A which will have + set if cancellation is expected. + to catch the exception if the error was reported; otherwise, + to propagate the exception if the operation was cancelled. + + + + Use in an exception filter to report an error (by calling ) and + catch the exception, unless the operation was cancelled at the request of + . + + Cancellable operations are only expected to throw if the + applicable indicates cancellation is requested by setting + . Unexpected cancellation, i.e. an + which occurs without + requesting cancellation, is treated as an error by this method. + + This method does not require to match + , provided cancellation is expected per the previous + paragraph. + + A which will have + set if cancellation is expected. + to catch the exception if the error was reported; otherwise, + to propagate the exception if the operation was cancelled. + + + + The severity of the error, see the enum members for a description of when to use each. This is metadata that's included + in a non-fatal fault report, which we can take advantage of on the backend to automatically triage bugs. For example, + a critical severity issue we can open with a lower bug count compared to a low priority one. + + + + + The severity hasn't been categorized. Don't use this in new code. + + + + + Something failed, but the user is unlikely to notice. Especially useful for background things that we can silently recover + from, like bugs in caching systems. + + + + + Something failed, and the user might notice, but they're still likely able to carry on. For example, if the user + asked for some information from the IDE (find references, completion, etc.) and we were able to give partial results. + + + + + Something failed, and the user likely noticed. For example, the user pressed a button to do an action, and + we threw an exception so we completely failed to do that in an unrecoverable way. This may also be used + for back-end systems where a failure is going to result in a highly broken experience, for example if parsing a file + catastrophically failed. + + + + + Ensures that the remaining stack space is large enough to execute + the average function. + + how many times the calling function has recursed + + The available stack space is insufficient to execute + the average function. + + + + + Specifies the desired placement of added imports. + + + + + Place imports inside the namespace definition. + + + + + Place imports outside the namespace definition. + + + + + Returns true if the tree already has an existing import syntactically equivalent to + in scope at . This includes + global imports for VB. + + + + + Given a context location in a provided syntax tree, returns the appropriate container + that should be added to. + + + + + Base representation of an editorconfig file that has been parsed + + The kind of options that we expect to encounter in the editorconfig file. + The full path to the editorconfig file on disk. Optional if not doing pathwise comparisons + The set of options that were discovered in the file. + + + + Base representation of an editorconfig file that has been parsed + + The kind of options that we expect to encounter in the editorconfig file. + The full path to the editorconfig file on disk. Optional if not doing pathwise comparisons + The set of options that were discovered in the file. + + + + Attempts to find a section of the editorconfig file that is an exact match for the given language. + + + + + Attempts to find a section of the editorconfig file that applies to the given language for the given criteria. + + + + + Attempts to find a section of the editorconfig file that applies to the given file. + + + + + Attempts to find a section of the editorconfig file that applies to the given file for the given criteria. + + + + + Base option that all editorconfig option inherit from. + + + + + Base option that all editorconfig option inherit from. + + + + + An abstraction over an editorconfig option that reprsents some type and the span in which that option was defined. + + + + + An abstraction over an editorconfig option that reprsents some type and the span in which that option was defined. + + + + + Represents a completed parse of a single editorconfig document + + The full file path to the file on disk. Can be null if you never need to compare if a section is valid for pathing reasons + The set of naming style options that were parsed in the file + + + + Represents a completed parse of a single editorconfig document + + The full file path to the file on disk. Can be null if you never need to compare if a section is valid for pathing reasons + The set of naming style options that were parsed in the file + + + + Parses a string and returns all discovered naming style options and their locations + + The text contents of the editorconfig file. + The full path to the editorconfig file on disk. + A type that represents all discovered naming style options in the given string. + + + + Parses a and returns all discovered naming style options and their locations + + The contents of the editorconfig file. + The full path to the editorconfig file on disk. + A type that represents all discovered naming style options in the given . + + + + The root naming style option composed of several settings as well as a s describing where they were all defined. + + The section of the editorconfig file this option applies to. + The name given to thie option in the file. + The kinds of symbols this option applies to. + The rules about how the specified symbols must be named. + The keve of build error that should be produced when a matching symbol does not meetthe naming requirements. + + + + The root naming style option composed of several settings as well as a s describing where they were all defined. + + The section of the editorconfig file this option applies to. + The name given to thie option in the file. + The kinds of symbols this option applies to. + The rules about how the specified symbols must be named. + The keve of build error that should be produced when a matching symbol does not meetthe naming requirements. + + + + A description of the kinds of symbols a rule should apply to as well as a s describing where they were all defined. + + The name given to thie option in the file. + The kinds of symbols this option applies to. + The accessibilities of symbols this option applies to. + The required modifier that must be present on symbols this option applies to. + + + + A description of the kinds of symbols a rule should apply to as well as a s describing where they were all defined. + + The name given to thie option in the file. + The kinds of symbols this option applies to. + The accessibilities of symbols this option applies to. + The required modifier that must be present on symbols this option applies to. + + + + The rules about how the specified symbols must be named as well as a s describing where they were all defined. + + The name given to thie option in the file. + Required suffix + Required prefix + Required word separator characters + The capitalization scheme + + + + The rules about how the specified symbols must be named as well as a s describing where they were all defined. + + The name given to thie option in the file. + Required suffix + Required prefix + Required word separator characters + The capitalization scheme + + + + Returns the default section header text for the given language combination + + The language combination to find the default header text for. + the default header text. + + + + Checks where this header supports the given language for the given match criteria + + The language to check support for. + The criteria for which we consider a language a mache the default is . + If this section is a match for the given language, meaning options can be added here. + + + + Checks where this header supports the given file path for the given match criteria + + full path to a file + The criteria for which we consider a language a mache the default is . + + If the section header cannot be parsed because it it invalid this method will always return no match. + If no file path was given in the operation that produces this section and a relative path comparison is required to check for support this method will return no match. + + If this section is a match for the given file, meaning options can be added here. + + + + Most exact section match for a language. Will always match all files for the given language. + + + - for C# this is [*.cs] + - for Visual Basic it is [*.vb]. + - If both language are specified it is [*.{cs,vb}] + + + + + Exact section match for a language with unknown file patterns. Will always match all files for the given language. + + + An exact match but with some unknown file patterns also matching + example for C#: [*.{cs,csx}] + This will not be the case if only C# was specified and a VB pattern is found + (or vice versa) + + + + + An exact section match for a language with other known language patterns. Will match all files for the given language as well as other known languages. + + + Given this pattern [*.{cs,vb}] for C# this is considered a match (since it matches all C# files). + Even though it also matches for Visual Basic. + + + + + Matches the file pattern according to the editorconfig specification but is a superset of an exact language match. + + + Patterns such as [*c*] or [*s] would match for C# in this case (being a superset of *.cs) + + + + + Matches the file pattern according to the editorconfig specification but is a supset of an exact language match. + + + Patterns such as [*.Tests.cs] would match for C# if the file being considered is UnitTests.cs + + + + + Matches [*]. + + + + + Matched because section is global and therefore always matches. + + + + + Matches any valid pattern except for global section. + + + + + Matches any valid pattern. + + + + + Section did not match and is not applicable to the file or language. + + + + + Returns the precedence of the given expression, mapped down to one of the + values. The mapping is language specific. + + + + + Returns the precedence of this expression in a scale specific to a particular + language. These values cannot be compared across languages, but relates the + precedence of expressions in the same language. A smaller value means lower + precedence. + + + + + Runs dataflow analysis for the given on the given . + + Control flow graph on which to execute analysis. + Dataflow analyzer. + Block analysis data at the end of the exit block. + + Algorithm for this CFG walker has been forked from 's internal + implementation for basic block reachability computation: "MarkReachableBlocks", + we should keep them in sync as much as possible. + + + + + Analyzer to execute custom dataflow analysis on a control flow graph. + + Custom data tracked for each basic block with values at start of the block. + + + + Gets current analysis data for the given basic block, or an empty analysis data. + + + + + Gets empty analysis data for first analysis pass on a basic block. + + + + + Updates the current analysis data for the given basic block. + + + + + Analyze the given basic block and return the block analysis data at the end of the block for its successors. + + + + + Analyze the non-conditional fallthrough successor branch for the given basic block + and return the block analysis data for the branch destination. + + + + + Analyze the given conditional branch for the given basic block and return the + block analysis data for the branch destinations for the fallthrough and + conditional successor branches. + + + + + Merge the given block analysis data instances to produce the resultant merge data. + + + + + Returns true if both the given block analysis data instances should be considered equivalent by analysis. + + + + + Flag indicating if the dataflow analysis should run on unreachable blocks. + + + + + Indicates the kind of flow capture in an . + + + + + Indicates an R-Value flow capture, i.e. capture of a symbol's value. + + + + + Indicates an L-Value flow capture, i.e. captures of a symbol's location/address. + + + + + Indicates both an R-Value and an L-Value flow capture, i.e. captures of a symbol's value and location/address. + These are generated for left of a compound assignment operation, such that there is conditional code on the right side of the compound assignment. + + + + + Helper class to detect s that are l-value captures. + L-value captures are essentially captures of a symbol's location/address. + Corresponding s which share the same + as this flow capture, dereferences and writes to this location + subsequently in the flow graph. + For example, consider the below code: + a[i] = x ?? a[j]; + The control flow graph contains an initial flow capture of "a[i]" to capture the l-value + of this array element: + FC0 (a[i]) + Then it evaluates the right hand side, which can have different + values on different control flow paths, and the resultant value is then written + to the captured location: + FCR0 = result + + + NOTE: This type is a workaround for https://github.com/dotnet/roslyn/issues/31007 + and it can be deleted once that feature is implemented. + + + + + Analysis to compute all the symbol writes for local and parameter + symbols in an executable code block, along with the information of whether or not the definition + may be read on some control flow path. + + + + + Core analysis data to drive the operation + for operation tree based analysis OR control flow graph based analysis. + + + + + Pooled allocated during analysis with the + current instance, which will be freed during . + + + + + Set of locals/parameters which are passed by reference to other method calls. + + + + + Map from each (symbol, write) to a boolean indicating if the value assigned + at the write is read on some control flow path. + For example, consider the following code: + + int x = 0; + x = 1; + Console.WriteLine(x); + + This map will have two entries for 'x': + 1. Key = (symbol: x, write: 'int x = 0') + Value = 'false', because value assigned to 'x' here **is never** read. + 2. Key = (symbol: x, write: 'x = 1') + Value = 'true', because value assigned to 'x' here **may be** read on + some control flow path. + + + + + Set of locals/parameters that are read at least once. + + + + + Set of lambda/local functions whose invocations are currently being analyzed to prevent + infinite recursion for analyzing code with recursive lambda/local function calls. + + + + + Current block analysis data used for analysis. + + + + + Block analysis data used for an additional conditional branch. + + + + + Creates an immutable for the current analysis data. + + + + + Resets all the currently tracked symbol writes to be conservatively marked as read. + + + + + Analysis data for a particular for + based dataflow analysis OR for the entire executable code block for high level operation + tree based analysis. + + + + + Map from each symbol to possible set of reachable write operations that are live at current program point. + A write is live if there is no intermediate write operation that overwrites it. + + + + + Gets the currently reachable writes for the given symbol. + + + + + Marks the given symbol write as a new unread write operation, + potentially clearing out the prior write operations if is false. + + + + + Runs dataflow analysis on the given control flow graph to compute symbol usage results + for symbol read/writes. + + + + + Runs a fast, non-precise operation tree based analysis to compute symbol usage results + for symbol read/writes. + + + + + Dataflow analysis to compute symbol usage information (i.e. reads/writes) for locals/parameters + in a given control flow graph, along with the information of whether or not the writes + may be read on some control flow path. + + + + + Map from basic block to current for dataflow analysis. + + + + + Callback to analyze lambda/local function invocations and return new block analysis data. + + + + + Map from flow capture ID to set of captured symbol addresses along all possible control flow paths. + + + + + Map from operations to potential delegate creation targets that could be invoked via delegate invocation + on the operation. + Used to analyze delegate creations/invocations of lambdas and local/functions defined in a method. + + + + + Map from local functions to the where the local function was accessed + to create an invocable delegate. This control flow graph is required to lazily get or create the + control flow graph for this local function at delegate invocation callsite. + + + + + Map from lambdas to the where the lambda was defined + to create an invocable delegate. This control flow graph is required to lazily get or create the + control flow graph for this lambda at delegate invocation callsite. + + + + + Map from basic block range to set of writes within this block range. + Used for try-catch-finally analysis, where start of catch/finally blocks should + consider all writes in the corresponding try block as reachable. + + + + + Flow captures for l-value or address captures. + + + + + Special handling to ensure that at start of catch/filter/finally region analysis, + we mark all symbol writes from the corresponding try region as reachable in the + catch/filter/finally region. + + + + + + Operations walker used for walking high-level operation tree + as well as control flow graph based operations. + + + + + Map from each symbol write to a boolean indicating if the value assinged + at write is used/read on some control flow path. + For example, consider the following code: + + int x = 0; + x = 1; + Console.WriteLine(x); + + This map will have two entries for 'x': + 1. Key = (symbol: x, write: 'int x = 0') + Value = 'false', because value assigned to 'x' here **is never** read. + 2. Key = (symbol: x, write: 'x = 1') + Value = 'true', because value assigned to 'x' here **may be** read on + some control flow path. + + + + + Set of locals/parameters that are read at least once. + + + + + Gets symbol writes that have are never read. + WriteOperation will be null for the initial value write to parameter symbols from the callsite. + + + + + Returns true if the initial value of the parameter from the caller is used. + + + + + Gets the write count for a given local/parameter symbol. + + + + + + A is a lightweight identifier for a symbol that can be used to + resolve the "same" symbol across compilations. Different symbols have different concepts + of "same-ness". Same-ness is recursively defined as follows: + + Two s are the "same" if they have + the "same" and + equal . + Two s are the "same" if + they have equal .Name + Two s are the "same" if they have + the "same" and + equal . + Two s are the "same" if they have + the "same" , + equal , + equal , + the "same" , and have + the "same" s and + equal s. + Two s are the "same" if they have + the "same" . + is not used because module identity is not important in practice. + Two s are the "same" if they have + the "same" , + equal , + equal and + the "same" . + Two s are the "same" if they have + the "same" and + equal . + If the is the global namespace for a + compilation, then it will only match another + global namespace of another compilation. + Two s are the "same" if they have + the "same" and + equal . + Two s are the "same" if they have + the "same" . + Two s are the "same" if they have + the "same" the "same" , + the "same" , and have + the "same" s and + the "same" s. + Two are the "same" if they have + the "same" and + the "same" . + Two s are the "same" if they have + the "same" and + the "same" . + + + + Interior-method-level symbols (i.e. , , and s can also + be represented and restored in a different compilation. To resolve these the destination compilation's is enumerated to list all the symbols with the same and as the original symbol. The symbol with the same index in the destination tree as the + symbol in the original tree is returned. This allows these sorts of symbols to be resolved in a way that is + resilient to basic forms of edits. For example, adding whitespace edits, or adding removing symbols with + different names and types. However, it may not find a matching symbol in the face of other sorts of edits. + + + Symbol keys cannot be created for interior-method symbols that were created in a speculative semantic model. + + + Due to issues arising from errors and ambiguity, it's possible for a SymbolKey to resolve to + multiple symbols. For example, in the following type: + + class C + { + int M(); + bool M(); + } + + The SymbolKey for both 'M' methods will be the same. The SymbolKey will then resolve to both methods. + + + s are not guaranteed to work across different versions of Roslyn. They can be persisted + in their form and used across sessions with the same version of Roslyn. However, future + versions may change the encoded format and may no longer be able to previous keys. As + such, only persist if using for a cache that can be regenerated if necessary. + + + + + + Anonymous functions and anonymous-delegates (the special VB synthesized delegate types), + only come into existence when someone has explicitly written a lambda in their source + code. So to appropriately round-trip this symbol we store the location that the lambda + was at so that we can find the symbol again when we resolve the key. + + + + + Current format version. Any time we change anything about our format, we should + change this. This will help us detect and reject any cases where a person serializes + out a SymbolKey from a previous version of Roslyn and then attempt to use it in a + newer version where the encoding has changed. + + + + + Constructs a new using the result of a previous call to + from this same session. Instantiating with a string + from any other source is not supported. + + + + + Constructs a new representing the provided . + + + + + Returns an that determines if two s + represent the same effective symbol. + + Whether or not casing should be considered when comparing keys. + For example, with ignoreCase=true then X.SomeClass and X.Someclass would be + considered the same effective symbol + Whether or not the originating assembly of referenced + symbols should be compared when determining if two symbols are effectively the same. + For example, with ignoreAssemblyKeys=true then an X.SomeClass from assembly + A and X.SomeClass from assembly B will be considered the same + effective symbol. + + + + + Tries to resolve this in the given + to a matching symbol. + + + + + Returns this encoded as a string. This can be persisted + and used later with to then try to resolve back + to the corresponding in a future . + + This string form is not guaranteed to be reusable across all future versions of + Roslyn. As such it should only be used for caching data, with the knowledge that + the data may need to be recomputed if the cached data can no longer be used. + + + + + For a symbol like System.Collections.Generic.IEnumerable, this would produce "Generic", + "Collections", "System" + + + + + Reads an array of symbols out from the key. Note: the number of symbols returned + will either be the same as the original amount written, or default will be + returned. It will never be less or more. default will be returned if any + elements could not be resolved to the requested type + in the provided . + + Callers should the instance returned. No check is + necessary if default was returned before calling + + + + + Writes out the provided symbols to the key. The array provided must not + be default. + + + + + The result of . If the could be uniquely mapped to a + single then that will be returned in . Otherwise, if the key resolves + to multiple symbols (which can happen in error scenarios), then and will be returned. + + If no symbol can be found will be null and + will be empty. + + + + + Helpers used for public API argument validation. + + + + + Use to validate public API input for properties that are exposed as . + + + + + Use to validate public API input for properties that are exposed as and + whose items should be unique. + + + + + Helpers to create temporary streams backed by pooled memory + + + + + Returns the for the given operation. + This extension can be removed once https://github.com/dotnet/roslyn/issues/25057 is implemented. + + + + + Retursn true if the given operation is a regular compound assignment, + i.e. such as a += b, + or a special null coalescing compoud assignment, i.e. + such as a ??= b. + + + + + Walks down consecutive conversion operations until an operand is reached that isn't a conversion operation. + + The starting operation. + The inner non conversion operation or the starting operation if it wasn't a conversion operation. + + + + Provides information about the way a particular symbol is being used at a symbol reference node. + For namespaces and types, this corresponds to values from . + For methods, fields, properties, events, locals and parameters, this corresponds to values from . + + + + + Represents default value indicating no usage. + + + + + Represents a reference to a namespace or type on the left side of a dotted name (qualified name or member access). + For example, 'NS' in NS.Type x = new NS.Type(); or NS.Type.StaticMethod(); or + 'Type' in Type.NestedType x = new Type.NestedType(); or Type.StaticMethod(); + + + + + Represents a generic type argument reference. + For example, 'Type' in Generic{Type} x = ...; or class Derived : Base{Type} { } + + + + + Represents a type parameter constraint that is a type. + For example, 'Type' in class Derived{T} where T : Type { } + + + + + Represents a base type or interface reference in the base list of a named type. + For example, 'Base' in class Derived : Base { }. + + + + + Represents a reference to a type whose instance is being created. + For example, 'C' in var x = new C();, where 'C' is a named type. + + + + + Represents a reference to a namespace or type within a using or imports directive. + For example, using NS; or using static NS.Extensions or using Alias = MyType. + + + + + Represents a reference to a namespace name in a namespace declaration context. + For example, 'N1' or namespaces N1.N2 { }. + + + + + Represents default value indicating no usage. + + + + + Represents a value read. + For example, reading the value of a local/field/parameter. + + + + + Represents a value write. + For example, assigning a value to a local/field/parameter. + + + + + Represents a reference being taken for the symbol. + For example, passing an argument to an "in", "ref" or "out" parameter. + + + + + Represents a name-only reference that neither reads nor writes the underlying value. + For example, 'nameof(x)' or reference to a symbol 'x' in a documentation comment + does not read or write the underlying value stored in 'x'. + + + + + Represents a value read and/or write. + For example, an increment or compound assignment operation. + + + + + Represents a readable reference being taken to the value. + For example, passing an argument to an "in" or "ref readonly" parameter. + + + + + Represents a readable reference being taken to the value. + For example, passing an argument to an "out" parameter. + + + + + Represents a value read or write. + For example, passing an argument to a "ref" parameter. + + + + + this is RAII object to automatically release pooled object when its owning pool + + + + + Shared object pool for roslyn + + Use this shared pool if only concern is reducing object allocations. + if perf of an object pool itself is also a concern, use ObjectPool directly. + + For example, if you want to create a million of small objects within a second, + use the ObjectPool directly. it should have much less overhead than using this. + + + + + pool that uses default constructor with 100 elements pooled + + + + + pool that uses default constructor with 20 elements pooled + + + + + pool that uses string as key with StringComparer.OrdinalIgnoreCase as key comparer + + + + + pool that uses string as element with StringComparer.OrdinalIgnoreCase as element comparer + + + + + pool that uses string as element with StringComparer.Ordinal as element comparer + + + + + Used to reduce the # of temporary byte[]s created to satisfy serialization and + other I/O requests + + + + + Returns true if is local declaration statement + that can be moved forward to be closer to its first reference. + + + + + Moves closer to its first reference. Only + applicable if returned + true. If not, then the original document will be returned unchanged. + + + + + Returns an updated with all the + local declarations named '_' replaced with simple assignments to discard. + For example, + 1. int _ = M(); is replaced with _ = M(); + 2. int x = 1, _ = M(), y = 2; is replaced with following statements: + + int x = 1; + _ = M(); + int y = 2; + + This is normally done in context of a code transformation that generates new discard assignment(s), + such as _ = M();, and wants to prevent compiler errors where the containing method already + has a discard variable declaration, say var _ = M2(); at some line after the one + where the code transformation wants to generate new discard assignment(s), which would be a compiler error. + This method replaces such discard variable declarations with discard assignments. + + + + An error occurred while reading the specified configuration file: {0} + + + Symbol "{0}" is not from source. + + + Documentation comment id must start with E, F, M, N, P or T + + + Cycle detected in extensions + + + Destination type must be a {0}, but given one is {1}. + + + Destination type must be a {0} or a {1}, but given one is {2}. + + + Destination type must be a {0}, {1} or {2}, but given one is {3}. + + + Destination type must be a {0}, {1}, {2} or {3}, but given one is {4}. + + + Could not find location to generation symbol into. + + + No location provided to add statements to. + + + Destination location was not in source. + + + Destination location was from a different tree. + + + Node is of the wrong type. + + + Location must be null or from source. + + + Duplicate source file '{0}' in project '{1}' + + + Removing projects is not supported. + + + Adding projects is not supported. + + + Workspace error + + + Error reading content of source file '{0}' -- '{1}'. + + + Workspace is not empty. + + + '{0}' is not part of the workspace. + + + '{0}' is already part of the workspace. + + + '{0}' is not referenced. + + + '{0}' is already referenced. + + + Adding project reference from '{0}' to '{1}' will cause a circular reference. + + + Metadata is not referenced. + + + Metadata is already referenced. + + + {0} is not present. + + + {0} is already present. + + + The specified document is not a version of this document. + + + The language '{0}' is not supported. + + + The solution already contains the specified project. + + + The solution does not contain the specified project. + + + The project already references the target project. + + + The project already contains the specified reference. + + + A project may not reference itself. + + + The solution already contains the specified document. + + + The solution already contains the specified reference. + + + Temporary storage cannot be written more than once. + + + '{0}' is not open. + + + A language name cannot be specified for this option. + + + A language name must be specified for this option. + + + File was externally modified: {0}. + + + Unrecognized language name. + + + Can't resolve metadata reference: '{0}'. + + + Can't resolve analyzer reference: '{0}'. + + + Invalid project block, expected "=" after Project. + + + Invalid project block, expected "," after project name. + + + Invalid project block, expected "," after project path. + + + Expected {0}. + + + "{0}" must be a non-null and non-empty string. + + + Expected header: "{0}". + + + Expected end-of-file. + + + Expected {0} line. + + + This submission already references another submission project. + + + Only submission project can reference submission projects. + + + {0} still contains open documents. + + + {0} is still open. + + + Arrays with more than one dimension cannot be serialized. + + + Value too large to be represented as a 30 bit unsigned integer. + + + Specified path must be absolute. + + + Name can be simplified. + + + Unknown identifier. + + + Cannot generate code for unsupported operator '{0}' + + + Invalid number of parameters for binary operator. + + + Invalid number of parameters for unary operator. + + + Cannot open project '{0}' because the file extension '{1}' is not associated with a language. + + + Cannot open project '{0}' because the language '{1}' is not supported. + + + Invalid project file path: '{0}' + + + Invalid solution file path: '{0}' + + + Project file not found: '{0}' + + + Solution file not found: '{0}' + + + Unmerged change from project '{0}' + + + Added: + + + After: + + + Before: + + + Removed: + + + Invalid CodePage value: {0} + + + Adding additional documents is not supported. + + + Adding analyzer config documents is not supported. + + + Adding analyzer references is not supported. + + + Adding documents is not supported. + + + Adding metadata references is not supported. + + + Adding project references is not supported. + + + Changing additional documents is not supported. + + + Changing analyzer config documents is not supported. + + + Changing documents is not supported. + + + Changing project properties is not supported. + + + Removing additional documents is not supported. + + + Removing analyzer config documents is not supported. + + + Removing analyzer references is not supported. + + + Removing documents is not supported. + + + Removing metadata references is not supported. + + + Removing project references is not supported. + + + Service of type '{0}' is required to accomplish the task but is not available from the workspace. + + + At least one diagnostic must be supplied. + + + Diagnostic must have span '{0}' + + + Cannot deserialize type '{0}'. + + + Cannot serialize type '{0}'. + + + The type '{0}' is not understood by the serialization binder. + + + Label for node '{0}' is invalid, it must be within [0, {1}). + + + Matching nodes '{0}' and '{1}' must have the same label. + + + Node '{0}' must be contained in the new tree. + + + Node '{0}' must be contained in the old tree. + + + The member '{0}' is not declared within the declaration of the symbol. + + + The position is not within the symbol's declaration + + + The symbol '{0}' cannot be located within the current solution. + + + Changing compilation options is not supported. + + + Changing parse options is not supported. + + + The node is not part of the tree. + + + This workspace does not support opening and closing documents. + + + Exceptions: + + + '{0}' returned an uninitialized ImmutableArray + + + Failure + + + Warning + + + Options did not come from specified Solution + + + Enable + + + Enable and ignore future errors + + + '{0}' encountered an error and has been disabled. + + + Show Stack Trace + + + Stream is too long. + + + Deserialization reader for '{0}' read incorrect number of values. + + + Async Method + + + Error + + + None + + + Suggestion + + + File '{0}' size of {1} exceeds maximum allowed size of {2} + + + Changing document properties is not supported + + + Variables captured: + + + Refactoring Only + + + Remove the line below if you want to inherit .editorconfig settings from higher directories + + + Core EditorConfig Options + + + C# files + + + .NET Coding Conventions + + + Indentation and spacing + + + New line preferences + + + Visual Basic files + + + Changing document '{0}' is not supported. + + + DateTimeKind must be Utc + + + Adding imports will bring an extension method into scope with the same name as '{0}' + + + Document does not support syntax trees + + + {0} is in a different project. + + + Project does not contain specified reference + + + Solution does not contain specified reference + + + Unknown + + + Cannot apply action that is not in '{0}' + + + Symbol's project could not be found in the provided solution + + + The contents of a SourceGeneratedDocument may not be changed. + + + Rename '{0}' to '{1}' + + + Sync namespace to folder structure + + + CodeAction '{0}' did not produce a changed solution + + + Predefined conversion from {0} to {1}. + + + Absolute path expected. + + + An element with the same key but a different value already exists. + + + Organize usings + + + this. and Me. preferences + + + Language keywords vs BCL types preferences + + + Parentheses preferences + + + Modifier preferences + + + Expression-level preferences + + + Field preferences + + + Parameter preferences + + + Suppression preferences + + + Pascal Case + + + Abstract Method + + + Begins with I + + + Class + + + Delegate + + + Enum + + + Event + + + Interface + + + Non-Field Members + + + Private Method + + + Private or Internal Field + + + Private or Internal Static Field + + + Property + + + Public or Protected Field + + + Static Field + + + Static Method + + + Struct + + + Types + + + Method + + + Missing prefix: '{0}' + + + Missing suffix: '{0}' + + + Prefix '{0}' does not match expected prefix '{1}' + + + Prefix '{0}' is not expected + + + These non-leading words must begin with an upper case letter: {0} + + + These non-leading words must begin with a lowercase letter: {0} + + + These words cannot contain lower case characters: {0} + + + These words cannot contain upper case characters: {0} + + + These words must begin with upper case characters: {0} + + + The first word, '{0}', must begin with an upper case character + + + The first word, '{0}', must begin with a lower case character + + + Cast is redundant. + + + Naming styles + + + Naming rules + + + Symbol specifications + + + Specified sequence has duplicate items + + + Segment size must be power of 2 greater than 1 + + + New line preferences + + + Supplied diagnostic cannot be null. + + + Fix all '{0}' + + + Fix all '{0}' in '{1}' + + + Fix all '{0}' in Solution + + + Compilation is required to accomplish the task but is not supported by project {0}. + + + Syntax tree is required to accomplish the task but is not supported by document {0}. + + + Project of ID {0} is required to accomplish the task but is not available from the solution + + + The solution does not contain the specified document. + + + Warning: Declaration changes scope and may change meaning. + + + + + + + + + + A queue where items can be added to to be processed in batches after some delay has passed. + When processing happens, all the items added since the last processing point will be passed + along to be worked on. Rounds of processing happen serially, only starting up after a + previous round has completed. + + + + + Delay we wait after finishing the processing of one batch and starting up on then. + + + + + Equality comparer uses to dedupe items if present. + + + + + Callback to actually perform the processing of the next batch of work. + + + + + Lock we will use to ensure the remainder of these fields can be accessed in a threadsafe + manner. When work is added we'll place the data into . + We'll then kick of a task to process this in the future if we don't already have an + existing task in flight for that. + + + + + Data added that we want to process in our next update task. + + + + + Used if is present to ensure only unique items are added to . + + + + + Task kicked off to do the next batch of processing of . These + tasks form a chain so that the next task only processes when the previous one completes. + + + + + Whether or not there is an existing task in flight that will process the current batch + of . If there is an existing in flight task, we don't need to + kick off a new one if we receive more work before it runs. + + + + + Produces a series of objects such that requesting a new token + causes the previously issued token to be cancelled. + + + Consuming code is responsible for managing overlapping asynchronous operations. + This class has a lock-free implementation to minimise latency and contention. + + + + + Initializes a new instance of . + + An optional cancellation token that, when cancelled, cancels the last + issued token and causes any subsequent tokens to be issued in a cancelled state. + + + + Determines if the cancellation series has an active token which has not been cancelled. + + + + + Creates the next in the series, ensuring the last issued + token (if any) is cancelled first. + + An optional cancellation token that, when cancelled, cancels the + returned token. + + A cancellation token that will be cancelled when either: + + is called again + The token passed to this method (if any) is cancelled + The token passed to the constructor (if any) is cancelled + is called + + + This object has been disposed. + + + + Creates a for a weakly-held reference that has since been collected. + + The hash code of the collected value. + A weak which was already collected. + + + + Implements a queue of asynchronously executed tasks. + + + + + Enqueue specified and notify of its start and completion. + + The that executes the operation. + + + + + + + + + + + + + Enqueue specified . + Assumes has already been notified of its start and will be notified when it completes. + + The that executes the operation. + + + + + + + + + + + + + A simple collection of values held as weak references. Objects in the set are compared by reference equality. + + The type of object stored in the set. + + + + NOTE!!! adding duplicates will result in exceptions. + Being concurrent only allows accessing the dictionary without taking locks. + Duplicate keys are still not allowed in the hashtable. + If unsure about adding unique items use APIs such as TryAdd, GetOrAdd, etc... + + + + + A custom awaiter that supports for + . + + + + + + + + + + + Generally is a sufficient method for enforcing DEBUG + only invariants in our code. When it triggers that provides a nice stack trace for + investigation. Generally that is enough. + + There are cases for which a stack is not enough and we need a full heap dump to + investigate the failure. This method takes care of that. The behavior is that when running + in our CI environment if the assert triggers we will rudely crash the process and + produce a heap dump for investigation. + + + + + This method is necessary to avoid an ambiguity between and . + + + + + This method is necessary to avoid an ambiguity between and . + + + + + Maps an immutable array through a function that returns ValueTask, returning the new ImmutableArray. + + + + + Maps an immutable array through a function that returns ValueTask, returning the new ImmutableArray. + + + + + Returns the only element of specified sequence if it has exactly one, and default(TSource) otherwise. + Unlike doesn't throw if there is more than one element in the sequence. + + + + + Cached versions of commonly used delegates. + + + + + + Cached versions of commonly used delegates. + + + + + + Creates an with information about an unexpected value. + + The unexpected value. + The , which should be thrown by the caller. + + + + Compares objects based upon their reference identity. + + + + + + + + + + + Checks if the given name is a sequence of valid CLR names separated by a dot. + + + + + Remove one set of leading and trailing double quote characters, if both are present. + + + + + Implements and static members that are only available in .NET 5. + + + + + Explicitly indicates result is void + + + + + Implements ConfigureAwait(bool) for . The resulting behavior in asynchronous code + is the same as one would expect for . + + The awaitable provided by . + + An object used to await this yield. + + + + This is how VB Anonymous Types combine hash values for fields. + + + + + This is how VB Anonymous Types combine hash values for fields. + PERF: Do not use with enum types because that involves multiple + unnecessary boxing operations. Unfortunately, we can't constrain + T to "non-enum", so we'll use a more restrictive constraint. + + + + + The offset bias value used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + The generative factor used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Compute the FNV-1a hash of a sequence of bytes and determines if the byte + sequence is valid ASCII and hence the hash code matches a char sequence + encoding the same text. + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes that are likely to be ASCII text. + True if the sequence contains only characters in the ASCII range. + The FNV-1a hash of + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Compute the hashcode of a sub-string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + Note: FNV-1a was developed and tuned for 8-bit sequences. We're using it here + for 16-bit Unicode chars on the understanding that the majority of chars will + fit into 8-bits and, therefore, the algorithm will retain its desirable traits + for generating hash codes. + + + + + Compute the hashcode of a sub-string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + Note: FNV-1a was developed and tuned for 8-bit sequences. We're using it here + for 16-bit Unicode chars on the understanding that the majority of chars will + fit into 8-bits and, therefore, the algorithm will retain its desirable traits + for generating hash codes. + + The input string + The start index of the first character to hash + The number of characters, beginning with to hash + The FNV-1a hash code of the substring beginning at and ending after characters. + + + + Compute the hashcode of a sub-string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The start index of the first character to hash + The FNV-1a hash code of the substring beginning at and ending at the end of the string. + + + + Compute the hashcode of a string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The FNV-1a hash code of + + + + Compute the hashcode of a string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The FNV-1a hash code of + + + + Compute the hashcode of a sub string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string as a char array + The start index of the first character to hash + The number of characters, beginning with to hash + The FNV-1a hash code of the substring beginning at and ending after characters. + + + + Compute the hashcode of a single character using the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + Note: In general, this isn't any more useful than "char.GetHashCode". However, + it may be needed if you need to generate the same hash code as a string or + substring with just a single character. + + The character to hash + The FNV-1a hash code of the character. + + + + Combine a string with an existing FNV-1a hash code + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The accumulated hash code + The string to combine + The result of combining with using the FNV-1a algorithm + + + + Combine a char with an existing FNV-1a hash code + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The accumulated hash code + The new character to combine + The result of combining with using the FNV-1a algorithm + + + + Objects that implement this interface know how to write their contents to an , + so they can be reconstructed later by an . + + + + + Returns 'true' when the same instance could be used more than once. + Instances that return 'false' should not be tracked for the purpose + of de-duplication while serializing/deserializing. + + + + + is a registry that maps between arbitrary s and + the 'reader' function used to deserialize serialized instances of those types. Registration + must happen ahead of time using the method. + + + + + Lock for all data in this type. + + + + + Last created snapshot of our data. We hand this out instead of exposing our raw + data so that and do not need to + take any locks while processing. + + + + + Map from a to the corresponding index in and + . will write out the index into + the stream, and will use that index to get the reader used + for deserialization. + + + + + Gets an immutable copy of the state of this binder. This copy does not need to be + locked while it is used. + + + + + An that deserializes objects from a byte stream. + + + + + We start the version at something reasonably random. That way an older file, with + some random start-bytes, has little chance of matching our version. When incrementing + this version, just change VersionByte2. + + + + + Map of reference id's to deserialized objects. + + + + + Copy of the global binder data that maps from Types to the appropriate reading-function + for that type. Types register functions directly with , but + that means that is both static and locked. This gives us + local copy we can work with without needing to worry about anyone else mutating. + + + + + Creates a new instance of a . + + The stream to read objects from. + True to leave the open after the is disposed. + + + + + Attempts to create a from the provided . + If the does not start with a valid header, then will + be returned. + + + + + Creates an from the provided . + Unlike , it requires the version + of the data in the stream to exactly match the current format version. + Should only be used to read data written by the same version of Roslyn. + + + + + A reference-id to object map, that can share base data efficiently. + + + + + An that serializes objects to a byte stream. + + + + + Map of serialized object's reference ids. The object-reference-map uses reference equality + for performance. While the string-reference-map uses value-equality for greater cache hits + and reuse. + + These are not readonly because they're structs and we mutate them. + + When we write out objects/strings we give each successive, unique, item a monotonically + increasing integral ID starting at 0. I.e. the first object gets ID-0, the next gets + ID-1 and so on and so forth. We do *not* include these IDs with the object when it is + written out. We only include the ID if we hit the object *again* while writing. + + During reading, the reader knows to give each object it reads the same monotonically + increasing integral value. i.e. the first object it reads is put into an array at position + 0, the next at position 1, and so on. Then, when the reader reads in an object-reference + it can just retrieved it directly from that array. + + In other words, writing and reading take advantage of the fact that they know they will + write and read objects in the exact same order. So they only need the IDs for references + and not the objects themselves because the ID is inferred from the order the object is + written or read in. + + + + + Copy of the global binder data that maps from Types to the appropriate reading-function + for that type. Types register functions directly with , but + that means that is both static and locked. This gives us + local copy we can work with without needing to worry about anyone else mutating. + + + + + Creates a new instance of a . + + The stream to write to. + True to leave the open after the is disposed. + Cancellation token. + + + + Used so we can easily grab the low/high 64bits of a guid for serialization. + + + + + Write an array of bytes. The array data is provided as a + ReadOnlySpan<>, and deserialized to a byte array. + + The array data. + + + + An object reference to reference-id map, that can share base data efficiently. + + + + + Indexed by EncodingKind. + + + + + byte marker mask for encoding compressed uint + + + + + byte marker bits for uint encoded in 1 byte. + + + + + byte marker bits for uint encoded in 2 bytes. + + + + + byte marker bits for uint encoded in 4 bytes. + + + + + The null value + + + + + A type + + + + + An object with member values encoded as variants + + + + + An object reference with the id encoded as 1 byte. + + + + + An object reference with the id encode as 2 bytes. + + + + + An object reference with the id encoded as 4 bytes. + + + + + A string encoded as UTF8 (using BinaryWriter.Write(string)) + + + + + A string encoded as UTF16 (as array of UInt16 values) + + + + + A reference to a string with the id encoded as 1 byte. + + + + + A reference to a string with the id encoded as 2 bytes. + + + + + A reference to a string with the id encoded as 4 bytes. + + + + + The boolean value true. + + + + + The boolean value char. + + + + + A character value encoded as 2 bytes. + + + + + An Int8 value encoded as 1 byte. + + + + + An Int16 value encoded as 2 bytes. + + + + + An Int32 value encoded as 4 bytes. + + + + + An Int32 value encoded as 1 byte. + + + + + An Int32 value encoded as 2 bytes. + + + + + The Int32 value 0 + + + + + The Int32 value 1 + + + + + The Int32 value 2 + + + + + The Int32 value 3 + + + + + The Int32 value 4 + + + + + The Int32 value 5 + + + + + The Int32 value 6 + + + + + The Int32 value 7 + + + + + The Int32 value 8 + + + + + The Int32 value 9 + + + + + The Int32 value 10 + + + + + An Int64 value encoded as 8 bytes + + + + + A UInt8 value encoded as 1 byte. + + + + + A UIn16 value encoded as 2 bytes. + + + + + A UInt32 value encoded as 4 bytes. + + + + + A UInt32 value encoded as 1 byte. + + + + + A UInt32 value encoded as 2 bytes. + + + + + The UInt32 value 0 + + + + + The UInt32 value 1 + + + + + The UInt32 value 2 + + + + + The UInt32 value 3 + + + + + The UInt32 value 4 + + + + + The UInt32 value 5 + + + + + The UInt32 value 6 + + + + + The UInt32 value 7 + + + + + The UInt32 value 8 + + + + + The UInt32 value 9 + + + + + The UInt32 value 10 + + + + + A UInt64 value encoded as 8 bytes. + + + + + A float value encoded as 4 bytes. + + + + + A double value encoded as 8 bytes. + + + + + A decimal value encoded as 12 bytes. + + + + + A DateTime value + + + + + An array with length encoded as compressed uint + + + + + An array with zero elements + + + + + An array with one element + + + + + An array with 2 elements + + + + + An array with 3 elements + + + + + The boolean type + + + + + The string type + + + + + Encoding serialized as . + + + + + Naive thread pool focused on reducing the latency to execution of chunky work items as much as possible. + If a thread is ready to process a work item the moment a work item is queued, it's used, otherwise + a new thread is created. This is meant as a stop-gap measure for workloads that would otherwise be + creating a new thread for every work item. + + + This class is derived from dotnet/machinelearning. + + + + How long should threads wait around for additional work items before retiring themselves. + + + The queue of work items. Also used as a lock to protect all relevant state. + + + The number of threads currently waiting in tryDequeue for work to arrive. + + + + Queues a delegate to be executed immediately on another thread, + and returns a that represents its eventual completion. The task will + always end in the state; if the delegate throws + an exception, it'll be allowed to propagate on the thread, crashing the process. + + + + + Queues a delegate and associated state to be executed immediately on + another thread, and returns a that represents its eventual completion. + + + + + Search a sorted integer array for the target value in O(log N) time. + + The array of integers which must be sorted in ascending order. + The target value. + An index in the array pointing to the position where should be + inserted in order to maintain the sorted order. All values to the right of this position will be + strictly greater than . Note that this may return a position off the end + of the array if all elements are less than or equal to . + + + + Parse the value provided to an MSBuild Feature option into a list of entries. This will + leave name=value in their raw form. + + + + + A concurrent, simplified HashSet. + + + + + The default concurrency level is 2. That means the collection can cope with up to two + threads making simultaneous modifications without blocking. + Note ConcurrentDictionary's default concurrency level is dynamic, scaling according to + the number of processors. + + + + + Taken from ConcurrentDictionary.DEFAULT_CAPACITY + + + + + The backing dictionary. The values are never used; just the keys. + + + + + Construct a concurrent set with the default concurrency level. + + + + + Construct a concurrent set using the specified equality comparer. + + The equality comparer for values in the set. + + + + Obtain the number of elements in the set. + + The number of elements in the set. + + + + Determine whether the set is empty. + true if the set is empty; otherwise, false. + + + + Determine whether the given value is in the set. + + The value to test. + true if the set contains the specified value; otherwise, false. + + + + Attempts to add a value to the set. + + The value to add. + true if the value was added to the set. If the value already exists, this method returns false. + + + + Attempts to remove a value from the set. + + The value to remove. + true if the value was removed successfully; otherwise false. + + + + Clear the set + + + + + Obtain an enumerator that iterates through the elements in the set. + + An enumerator for the set. + + + + a simple Lisp-like immutable list. Good to use when lists are always accessed from the head. + + + + + Names of well-known XML attributes and elements. + + + + + Get maximum char count needed to decode the entire stream. + + Stream is so big that max char count can't fit in . + + + + Convert a boxed primitive (generally of the backing type of an enum) into a ulong. + + + + + + + Implements a few file name utilities that are needed by the compiler. + In general the compiler is not supposed to understand the format of the paths. + In rare cases it needs to check if a string is a valid file name or change the extension + (embedded resources, netmodules, output name). + The APIs are intentionally limited to cover just these rare cases. Do not add more APIs. + + + + + Returns true if the string represents an unqualified file name. + The name may contain any characters but directory and volume separators. + + Path. + + True if is a simple file name, false if it is null or includes a directory specification. + + + + + Returns the offset in where the dot that starts an extension is, or -1 if the path doesn't have an extension. + + + Returns 0 for path ".goo". + Returns -1 for path "goo.". + + + + + Returns an extension of the specified path string. + + + The same functionality as but doesn't throw an exception + if there are invalid characters in the path. + + + + + Removes extension from path. + + + Returns "goo" for path "goo.". + Returns "goo.." for path "goo...". + + + + + Returns path with the extension changed to . + + + Equivalent of + + If is null, returns null. + If path does not end with an extension, the new extension is appended to the path. + If extension is null, equivalent to . + + + + + Returns the position in given path where the file name starts. + + -1 if path is null. + + + + Get file name from path. + + Unlike doesn't check for invalid path characters. + + + + A set that returns the inserted values in insertion order. + The mutation operations are not thread-safe. + + + + + Null or empty. + + + + + "file" + + + + + ".\file" + + + + + "..\file" + + + + + "\dir\file" + + + + + "C:dir\file" + + + + + "C:\file" or "\\machine" (UNC). + + + + + Represents a single item or many items (including none). + + + Used when a collection usually contains a single item but sometimes might contain multiple. + + + + + This class provides simple properties for determining whether the current platform is Windows or Unix-based. + We intentionally do not use System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(...) because + it incorrectly reports 'true' for 'Windows' in desktop builds running on Unix-based platforms via Mono. + + + + + Are we running on .NET 5 or later using the Mono runtime? + Will also return true when running on Mono itself; if necessary + we can use IsRunningOnMono to distinguish. + + + + + Attempts to read all of the requested bytes from the stream into the buffer + + + The number of bytes read. Less than will + only be returned if the end of stream is reached before all bytes can be read. + + + Unlike it is not guaranteed that + the stream position or the output buffer will be unchanged if an exception is + returned. + + + + + Reads all bytes from the current position of the given stream to its end. + + + + + This is basically a lossy cache of strings that is searchable by + strings, string sub ranges, character array ranges or string-builder. + + + + + Merges the new change ranges into the old change ranges, adjusting the new ranges to be with respect to the original text + (with neither old or new changes applied) instead of with respect to the original text after "old changes" are applied. + + This may require splitting, concatenation, etc. of individual change ranges. + + + Both `oldChanges` and `newChanges` must contain non-overlapping spans in ascending order. + + + + + Represents a new change being processed by . + Such a new change must be adjusted before being added to the result list. + + + A value of this type may represent the intermediate state of merging of an old change into an unadjusted new change, + resulting in a temporary unadjusted new change whose is negative (not valid) until it is adjusted. + This tends to happen when we need to merge an old change deletion into a new change near the beginning of the text. (see TextChangeTests.Fuzz_4) + + + + + Resolves relative path and returns absolute path. + The method depends only on values of its parameters and their implementation (for fileExists). + It doesn't itself depend on the state of the current process (namely on the current drive directories) or + the state of file system. + + + Path to resolve. + + + Base file path to resolve CWD-relative paths against. Null if not available. + + + Base directory to resolve CWD-relative paths against if isn't specified. + Must be absolute path. + Null if not available. + + + Sequence of paths used to search for unqualified relative paths. + + + Method that tests existence of a file. + + + The resolved path or null if the path can't be resolved or does not exist. + + + + + Normalizes an absolute path. + + Path to normalize. + + Normalized path. + + + + Used to create a file given a path specified by the user. + paramName - Provided by the Public surface APIs to have a clearer message. Internal API just rethrow the exception + + + + + + + + + + + True if the character is the platform directory separator character or the alternate directory separator. + + + + + True if the character is any recognized directory separator character. + + + + + Removes trailing directory separator characters + + + This will trim the root directory separator: + "C:\" maps to "C:", and "/" maps to "" + + + + + Ensures a trailing directory separator character + + + + + Get directory name from path. + + + Unlike it doesn't check for invalid path characters + + Prefix of path that represents a directory + + + + Gets the root part of the path. + + + + + Gets the specific kind of relative or absolute path. + + + + + True if the path is an absolute path (rooted to drive or network share) + + + + + Returns true if given path is absolute and starts with a drive specification ("C:\"). + + + + + Combines an absolute path with a relative. + + Absolute root path. + Relative path. + + An absolute combined path, or null if is + absolute (e.g. "C:\abc", "\\machine\share\abc"), + relative to the current root (e.g. "\abc"), + or relative to a drive directory (e.g. "C:abc\def"). + + + + + + Combine two paths, the first of which may be absolute. + + First path: absolute, relative, or null. + Second path: relative and non-null. + null, if is null; a combined path, otherwise. + + + + + Combines paths with the same semantics as + but does not throw on null paths or paths with invalid characters. + + First path: absolute, relative, or null. + Second path: absolute, relative, or null. + + The combined paths. If contains an absolute path, returns . + + + Relative and absolute paths treated the same as . + + + + + Determines whether an assembly reference is considered an assembly file path or an assembly name. + used, for example, on values of /r and #r. + + + + + Determines if "path" contains 'component' within itself. + i.e. asking if the path "c:\goo\bar\baz" has component "bar" would return 'true'. + On the other hand, if you had "c:\goo\bar1\baz" then it would not have "bar" as a + component. + + A path contains a component if any file name or directory name in the path + matches 'component'. As such, if you had something like "\\goo" then that would + not have "goo" as a component. That's because here "goo" is the server name portion + of the UNC path, and not an actual directory or file name. + + + + + Gets a path relative to a directory. + + + + + True if the child path is a child of the parent path. + + + + + True if the two paths are the same. + + + + + True if the two paths are the same. (but only up to the specified length) + + + + + Unfortunately, we cannot depend on Path.GetInvalidPathChars() or Path.GetInvalidFileNameChars() + From MSDN: The array returned from this method is not guaranteed to contain the complete set of characters + that are invalid in file and directory names. The full set of invalid characters can vary by file system. + https://msdn.microsoft.com/en-us/library/system.io.path.getinvalidfilenamechars.aspx + + Additionally, Path.GetInvalidPathChars() doesn't include "?" or "*" which are invalid characters, + and Path.GetInvalidFileNameChars() includes ":" and "\" which are valid characters. + + The more accurate way is to let the framework parse the path and throw on any errors. + + + + + If the current environment uses the '\' directory separator, replaces all uses of '\' + in the given string with '/'. Otherwise, returns the string. + + + This method is equivalent to Microsoft.CodeAnalysis.BuildTasks.GenerateMSBuildEditorConfig.NormalizeWithForwardSlash + Both methods should be kept in sync. + + + + + Takes an absolute path and attempts to expand any '..' or '.' into their equivalent representation. + + An equivalent path that does not contain any '..' or '.' path parts, or the original path. + + This method handles unix and windows drive rooted absolute paths only (i.e /a/b or x:\a\b). Passing any other kind of path + including relative, drive relative, unc, or windows device paths will simply return the original input. + + + + + Find a instance by first probing the contract name and then the name as it + would exist in mscorlib. This helps satisfy both the CoreCLR and Desktop scenarios. + + + + + Defines a set of helper methods to classify Unicode characters. + + + + + Returns true if the Unicode character can be a part of an identifier. + + The Unicode character. + + + + Check that the name is a valid Unicode identifier. + + + + + Returns true if the Unicode character is a formatting character (Unicode class Cf). + + The Unicode character. + + + + Returns true if the Unicode character is a formatting character (Unicode class Cf). + + The Unicode character. + + + + An AnnotationTable helps you attach your own annotation types/instances to syntax. + + It maintains a map between your instances and actual SyntaxAnnotation's used to annotate the nodes + and offers an API that matches the true annotation API on SyntaxNode. + + The table controls the lifetime of when you can find and retrieve your annotations. You won't be able to + find your annotations via HasAnnotations/GetAnnotations unless you use the same annotation table for these operations + that you used for the WithAdditionalAnnotations operation. + + Your custom annotations are not serialized with the syntax tree, so they won't move across boundaries unless the + same AnnotationTable is available on both ends. + + also, note that this table is not thread safe. + + + + + Represents a value that can be retrieved synchronously or asynchronously by many clients. + The value will be computed on-demand the moment the first client asks for it. While being + computed, more clients can request the value. As long as there are outstanding clients the + underlying computation will proceed. If all outstanding clients cancel their request then + the underlying value computation will be cancelled as well. + + Creators of an can specify whether the result of the computation is + cached for future requests or not. Choosing to not cache means the computation functions are kept + alive, whereas caching means the value (but not functions) are kept alive once complete. + + + + + The underlying function that starts an asynchronous computation of the resulting value. + Null'ed out once we've computed the result and we've been asked to cache it. Otherwise, + it is kept around in case the value needs to be computed again. + + + + + The underlying function that starts a synchronous computation of the resulting value. + Null'ed out once we've computed the result and we've been asked to cache it, or if we + didn't get any synchronous function given to us in the first place. + + + + + Whether or not we should keep the value around once we've computed it. + + + + + The Task that holds the cached result. + + + + + Mutex used to protect reading and writing to all mutable objects and fields. Traces + indicate that there's negligible contention on this lock, hence we can save some memory + by using a single lock for all AsyncLazy instances. Only trivial and non-reentrant work + should be done while holding the lock. + + + + + The hash set of all currently outstanding asynchronous requests. Null if there are no requests, + and will never be empty. + + + + + If an asynchronous request is active, the CancellationTokenSource that allows for + cancelling the underlying computation. + + + + + Whether a computation is active or queued on any thread, whether synchronous or + asynchronous. + + + + + Creates an AsyncLazy that always returns the value, analogous to . + + + + + Creates an AsyncLazy that supports both asynchronous computation and inline synchronous + computation. + + A function called to start the asynchronous + computation. This function should be cheap and non-blocking. + A function to do the work synchronously, which + is allowed to block. This function should not be implemented by a simple Wait on the + asynchronous value. If that's all you are doing, just don't pass a synchronous function + in the first place. + Whether the result should be cached once the computation is + complete. + + + + Takes the lock for this object and if acquired validates the invariants of this class. + + + + + This inherits from to avoid allocating two objects when we can just use one. + The public surface area of should probably be avoided in favor of the public + methods on this class for correct behavior. + + + + + The associated with this request. This field will be initialized before + any cancellation is observed from the token. + + + + + NOTE: Only use if you truly need a BK-tree. If you just want to compare words, use + the 'SpellChecker' type instead. + + An implementation of a Burkhard-Keller tree. Introduced in: + + 'Some approaches to best-match file searching.' + Communications of the ACM CACM + Volume 16 Issue 4, April 1973 + Pages 230-236 + http://dl.acm.org/citation.cfm?doid=362003.362025 + + + + Where the child node can be found in . + + + + The string this node corresponds to. Specifically, this span is the range of + for that string. + + + + How many child edges this node has. + + + Where the first edge can be found in . The edges + are in the range _edges[FirstEdgeIndex, FirstEdgeIndex + EdgeCount) + + + + + Throws a non-accessible exception if the provided value is null. This method executes in + all builds + + + + + Throws a non-accessible exception if the provided value is null. This method executes in + all builds + + + + + Throws a non-accessible exception if the provided value is null. This method executes in + all builds + + + + + Throws a non-accessible exception if the provided value is false. This method executes + in all builds + + + + + Throws a non-accessible exception if the provided value is false. This method executes + in all builds + + + + + Throws a non-accessible exception if the provided value is true. This method executes in + all builds. + + + + + Throws a non-accessible exception if the provided value is true. This method executes in + all builds. + + + + + NOTE: Only use if you truly need an edit distance. If you just want to compare words, use + the 'SpellChecker' type instead. + + Implementation of the Damerau-Levenshtein edit distance algorithm from: + An Extension of the String-to-String Correction Problem: + Published in Journal of the ACM (JACM) + Volume 22 Issue 2, April 1975. + + Important, unlike many edit distance algorithms out there, this one implements a true metric + that satisfies the triangle inequality. (Unlike the "Optimal String Alignment" or "Restricted + string edit distance" solutions which do not). This means this edit distance can be used in + other domains that require the triangle inequality (like BKTrees). + + Specifically, this implementation satisfies the following inequality: D(x, y) + D(y, z) >= D(x, z) + (where D is the edit distance). + + + + + Private implementation we can delegate to for sets. + This must be a different name as overloads are not resolved based on constraints + and would conflict with + + + + + A covariant interface form of that lets you re-cast an + to a more base type. This can include types that do not implement if you want to prevent a caller from accidentally + disposing directly. + + + + + + Gets the target object. + + + This call is not valid after is called. If this property or the target + object is used concurrently with a call to , it is possible for the code to be + using a disposed object. After the current instance is disposed, this property throws + . However, the exact time when this property starts throwing after + is called is unspecified; code is expected to not use this property or the object + it returns after any code invokes . + + The target object. + + + + Increments the reference count for the disposable object, and returns a new disposable reference to it. + + + The returned object is an independent reference to the same underlying object. Disposing of the + returned value multiple times will only cause the reference count to be decreased once. + + A new pointing to the same underlying object, if it + has not yet been disposed; otherwise, if this reference to the underlying object + has already been disposed. + + + + Ensure that the given target value is initialized (not null) in a thread-safe manner. + + The type of the target value. Must be a reference type. + The target to initialize. + A factory delegate to create a new instance of the target value. Note that this delegate may be called + more than once by multiple threads, but only one of those values will successfully be written to the target. + The target value. + + + + Ensure that the given target value is initialized (not null) in a thread-safe manner. + + The type of the target value. Must be a reference type. + The target to initialize. + The type of the argument passed to the value factory. + A factory delegate to create a new instance of the target value. Note that this delegate may be called + more than once by multiple threads, but only one of those values will successfully be written to the target. + An argument passed to the value factory. + The target value. + + + + Ensure that the given target value is initialized in a thread-safe manner. This overload supports the + initialization of value types, and reference type fields where is considered an + initialized value. + + The type of the target value. + A target value box to initialize. + A factory delegate to create a new instance of the target value. Note that this delegate may be called + more than once by multiple threads, but only one of those values will successfully be written to the target. + The target value. + + + + Ensure that the given target value is initialized in a thread-safe manner. This overload supports the + initialization of value types, and reference type fields where is considered an + initialized value. + + The type of the target value. + A target value box to initialize. + The type of the argument passed to the value factory. + A factory delegate to create a new instance of the target value. Note that this delegate may be called + more than once by multiple threads, but only one of those values will successfully be written to the target. + An argument passed to the value factory. + The target value. + + + + A lightweight mutual exclusion object which supports waiting with cancellation and prevents + recursion (i.e. you may not call Wait if you already hold the lock) + + + + The provides a lightweight mutual exclusion class that doesn't + use Windows kernel synchronization primitives. + + + The implementation is distilled from the workings of + The basic idea is that we use a regular sync object (Monitor.Enter/Exit) to guard the setting + of an 'owning thread' field. If, during the Wait, we find the lock is held by someone else + then we register a cancellation callback and enter a "Monitor.Wait" loop. If the cancellation + callback fires, then it "pulses" all the waiters to wake them up and check for cancellation. + Waiters are also "pulsed" when leaving the lock. + + + All public members of are thread-safe and may be used concurrently + from multiple threads. + + + + + + A synchronization object to protect access to the field and to be pulsed + when is called and during cancellation. + + + + + The of the thread that holds the lock. Zero if no thread is holding + the lock. + + + + + Constructor. + + If false (the default), then the class + allocates an internal object to be used as a sync lock. + If true, then the sync lock object will be the NonReentrantLock instance itself. This + saves an allocation but a client may not safely further use this instance in a call to + Monitor.Enter/Exit or in a "lock" statement. + + + + + Shared factory for use in lazy initialization. + + + + + Blocks the current thread until it can enter the , while observing a + . + + + Recursive locking is not supported. i.e. A thread may not call Wait successfully twice without an + intervening . + + The token to + observe. + was + canceled. + The caller already holds the lock + + + + Exit the mutual exclusion. + + + The calling thread must currently hold the lock. + + The lock is not currently held by the calling thread. + + + + Determine if the lock is currently held by the calling thread. + + True if the lock is currently held by the calling thread. + + + + Throw an exception if the lock is not held by the calling thread. + + The lock is not currently held by the calling thread. + + + + Checks if the lock is currently held. + + + + + Checks if the lock is currently held by the calling thread. + + + + + Take ownership of the lock (by the calling thread). The lock may not already + be held by any other code. + + + + + Release ownership of the lock. The lock must already be held by the calling thread. + + + + + Action object passed to a cancellation token registration. + + + + + Callback executed when a cancellation token is canceled during a Wait. + + The syncLock that protects a instance. + + + + Since we want to avoid boxing the return from , this type must be public. + + + + + Obtains the value for the specified key from a dictionary, or adds a new value to the dictionary where the key did not previously exist. + + The type of key stored by the dictionary. + The type of value stored by the dictionary. + The type of argument supplied to the value factory. + The variable or field to atomically update if the specified is not in the dictionary. + The key for the value to retrieve or add. + The function to execute to obtain the value to insert into the dictionary if the key is not found. Returns null if the value can't be obtained. + The argument to pass to the value factory. + The value obtained from the dictionary or if it was not present. + + + + A reference-counting wrapper which allows multiple uses of a single disposable object in code, which is + deterministically released (by calling ) when the last reference is + disposed. + + + Each instance of represents a counted reference (also + referred to as a reference in the following documentation) to a target object. Each of these + references has a lifetime, starting when it is constructed and continuing through its release. During + this time, the reference is considered alive. Each reference which is alive owns exactly one + reference to the target object, ensuring that it will not be disposed while still in use. A reference is + released through either of the following actions: + + + The reference is explicitly released by a call to . + The reference is no longer in use by managed code and gets reclaimed by the garbage collector. + + + While each instance of should be explicitly disposed when + the object is no longer needed by the code owning the reference, this implementation will not leak resources + in the event one or more callers fail to do so. When all references to an object are explicitly released + (i.e. by calling ), the target object will itself be deterministically released by a + call to when the last reference to it is released. However, in the event + one or more references is not explicitly released, the underlying object will still become eligible for + non-deterministic release (i.e. finalization) as soon as each reference to it is released by one of the + two actions described previously. + + When using , certain steps must be taken to ensure the + target object is not disposed early. + + + Use consistently. In other words, do not mix code using + reference-counted wrappers with code that references to the target directly. + Only use the constructor one time per target object. + Additional references to the same target object must only be obtained by calling + . + Do not call on the target object directly. It will be called + automatically at the appropriate time, as described above. + + + All public methods on this type adhere to their pre- and post-conditions and will not invalidate state + even in concurrent execution. + + The type of disposable object. + + + + The target of this reference. This value is initialized to a non- value in the + constructor, and set to when the current reference is disposed. + + + This value is only cleared in order to support cases where one or more references is garbage + collected without having called. + + + + + The boxed reference count, which is shared by all references with the same object. + + + This field serves as the synchronization object for the current type, since it is shared among all + counted reference to the same target object. Accesses to + should only occur when this object is locked. + + PERF DEV NOTE: A concurrent (but complex) implementation of this type with identical semantics is + available in source control history. The use of exclusive locks was not causing any measurable + performance overhead even on 28-thread machines at the time this was written. + + + + + Initializes a new reference counting wrapper around an object. + + + The reference count is initialized to 1. + + The object owned by this wrapper. + + If is . + + + + + Gets the target object. + + + This call is not valid after is called. If this property or the target + object is used concurrently with a call to , it is possible for the code to be + using a disposed object. After the current instance is disposed, this property throws + . However, the exact time when this property starts throwing after + is called is unspecified; code is expected to not use this property or the object + it returns after any code invokes . + + The target object. + + + + Increments the reference count for the disposable object, and returns a new disposable reference to it. + + + The returned object is an independent reference to the same underlying object. Disposing of the + returned value multiple times will only cause the reference count to be decreased once. + + A new pointing to the same underlying object, if it + has not yet been disposed; otherwise, if this reference to the underlying object + has already been disposed. + + + + Provides the implementation for and + . + + + + + Releases the current reference, causing the underlying object to be disposed if this was the last + reference. + + + After this instance is disposed, the method can no longer be used to + obtain a new reference to the target, even if other references to the target object are still in + use. + + + + + Represents a weak reference to a which is capable of + obtaining a new counted reference up until the point when the object is no longer accessible. + + + This value type holds a single field, which is not subject to torn reads/writes. + + + + + Increments the reference count for the disposable object, and returns a new disposable reference to + it. + + + Unlike , this method is capable of + adding a reference to the underlying instance all the way up to the point where it is finally + disposed. + + The returned object is an independent reference to the same underlying object. Disposing of + the returned value multiple times will only cause the reference count to be decreased once. + + A new pointing to the same underlying object, + if it has not yet been disposed; otherwise, if the underlying object has + already been disposed. + + + + Holds the reference count associated with a disposable object. + + + + + Holds the weak reference used by instances of to obtain a reference-counted + reference to the original object. This field is initialized the first time a weak reference is obtained + for the instance, and latches in a non-null state once initialized. + + + DO NOT DISPOSE OF THE TARGET. + + + + + Implements a reference-counted cache, where key/value pairs are associated with a count. When the count of a pair goes to zero, + the value is evicted. Values can also be explicitly evicted at any time. In that case, any new calls to + will return a new value, and the existing holders of the evicted value will still dispose it once they're done with it. + + + + + Container for a factory. + + + + + Factory object that may be used for lazy initialization. Creates AsyncSemaphore instances with an initial count of 1. + + + + + TODO: remove this exception: https://github.com/dotnet/roslyn/issues/40476 + + this represents soft crash request compared to hard crash which will bring down VS. + + by soft crash, it means everything same as hard crash except it should use NFW and info bar + to inform users about unexpected condition instead of killing VS as traditional crash did. + + in other words, no one should ever try to recover from this exception. but they must try to not hard crash. + + this exception is based on cancellation exception since, in Roslyn code, cancellation exception is so far + only safest exception to throw without worrying about crashing VS 99%. there is still 1% case it will bring + down VS and those places should be guarded on this exception as we find such place. + + for now, this is an opt-in based. if a feature wants to move to soft crash (ex, OOP), one should catch + exception and translate that to this exception and then add handler which report NFW and info bar in their + code path and make sure it doesn't bring down VS. + + as we use soft-crash in more places, we should come up with more general framework. + + + + + This helper method provides semantics equivalent to the following, but avoids throwing an intermediate + in the case where the asynchronous operation is cancelled. + + MethodAsync(TArg arg, CancellationToken cancellationToken) + { + var intermediate = await func(arg, cancellationToken).ConfigureAwait(false); + return transform(intermediate); + } + ]]> + + + This helper method is only intended for use in cases where profiling reveals substantial overhead related to + cancellation processing. + + The type of a state variable to pass to and . + The type of intermediate result produced by . + The type of result produced by . + The intermediate asynchronous operation. + The synchronous transformation to apply to the result of . + The state to pass to and . + The that the operation will observe. + + + + + Whether or words should be considered similar if one is contained within the other + (regardless of edit distance). For example if is true then IService would be considered + similar to IServiceFactory despite the edit distance being quite high at 7. + + + + + Returns true if 'originalText' and 'candidateText' are likely a misspelling of each other. + Returns false otherwise. If it is a likely misspelling a similarityWeight is provided + to help rank the match. Lower costs mean it was a better match. + + + + + Stores the "path" from the root of a tree to a node, allowing the node to be recovered in a + later snapshot of the tree, under certain circumstances. + + The implementation stores the child indices to represent the path, so any edit which affects + the child indices could render this object unable to recover its node. NOTE: One thing C# + IDE has done in the past to do a better job of this is to store the fully qualified name of + the member to at least be able to descend into the same member. We could apply the same sort + of logic here. + + + + + Attempts to recover the node at this path in the provided tree. If the node is found + then 'true' is returned, otherwise the result is 'false' and 'node' will be null. + + + + + This value source keeps a strong reference to a value. + + + + + A class that abstracts the accessing of a value that is guaranteed to be available at some point. + + + + + Creates an event handler that holds onto the target weakly. + + The target that is held weakly, and passed as an argument to the invoker. + An action that will receive the event arguments as well as the target instance. + The invoker itself must not capture any state. + + + + Indicates that a code element is performance sensitive under a known scenario. + + + When applying this attribute, only explicitly set the values for properties specifically indicated by the + test/measurement technique described in the associated . + + + + + Gets the location where the original problem is documented, likely with steps to reproduce the issue and/or + validate performance related to a change in the method. + + + + + Gets or sets a description of the constraint imposed by the original performance issue. + + + Constraints are normally specified by other specific properties that allow automated validation of the + constraint. This property supports documenting constraints which cannot be described in terms of other + constraint properties. + + + + + Gets or sets a value indicating whether captures are allowed. + + + + + Gets or sets a value indicating whether implicit boxing of value types is allowed. + + + + + Gets or sets a value indicating whether enumeration of a generic + is allowed. + + + + + Gets or sets a value indicating whether locks are allowed. + + + + + Gets or sets a value indicating whether the asynchronous state machine typically completes synchronously. + + + When , validation of this performance constraint typically involves analyzing + the method to ensure synchronous completion of the state machine does not require the allocation of a + , either through caching the result or by using + . + + + + + Gets or sets a value indicating whether this is an entry point to a parallel algorithm. + + + Parallelization APIs and algorithms, e.g. Parallel.ForEach, may be efficient for parallel entry + points (few direct calls but large amounts of iterative work), but are problematic when called inside the + iterations themselves. Performance-sensitive code should avoid the use of heavy parallelization APIs except + for known entry points to the parallel portion of code. + + + + + An immutable unordered hash map implementation. + + The type of the key. + The type of the value. + + + + The root node of the tree that stores this map. + + + + + The comparer used to sort keys in this map. + + + + + The comparer used to detect equivalent values in this map. + + + + + Initializes a new instance of the class. + + The root. + The comparer. + The value comparer. + + + + Initializes a new instance of the class. + + The comparer. + The value comparer. + + + + Gets an empty map with default equality comparers. + + + + + See the interface. + + + + + See the interface. + + + + + See the interface. + + + + + See the interface. + + + + + Applies a given set of key=value pairs to an immutable dictionary, replacing any conflicting keys in the resulting dictionary. + + The key=value pairs to set on the map. Any keys that conflict with existing keys will overwrite the previous values. + An immutable dictionary. + + + + See the interface. + + + + + See the interface. + + + + + Returns a hash map that uses the specified key and value comparers and has the same contents as this map. + + The key comparer. A value of null results in using the default equality comparer for the type. + The value comparer. A value of null results in using the default equality comparer for the type. + The hash map with the new comparers. + + In the event that a change in the key equality comparer results in a key collision, an exception is thrown. + + + + + Returns a hash map that uses the specified key comparer and current value comparer and has the same contents as this map. + + The key comparer. A value of null results in using the default equality comparer for the type. + The hash map with the new comparers. + + In the event that a change in the key equality comparer results in a key collision, an exception is thrown. + + + + + Determines whether the ImmutableSortedMap<TKey,TValue> + contains an element with the specified value. + + + The value to locate in the ImmutableSortedMap<TKey,TValue>. + The value can be null for reference types. + + + true if the ImmutableSortedMap<TKey,TValue> contains + an element with the specified value; otherwise, false. + + + + + Gets the number of elements in this collection. + + + + + Gets a value indicating whether this instance is empty. + + + true if this instance is empty; otherwise, false. + + + + + Gets the keys in the map. + + + + + Gets the values in the map. + + + + + Gets the with the specified key. + + + + + Determines whether the specified key contains key. + + The key. + + true if the specified key contains key; otherwise, false. + + + + + Determines whether this map contains the specified key-value pair. + + The key value pair. + + true if this map contains the key-value pair; otherwise, false. + + + + + See the interface. + + + + + See the interface. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Exchanges a key for the actual key instance found in this map. + + The key to search for. + Receives the equal key found in the map. + A value indicating whether an equal and existing key was found in the map. + + + + Attempts to discover an instance beneath some enumerable sequence + if one exists. + + The sequence that may have come from an immutable map. + Receives the concrete typed value if one can be found. + true if the cast was successful; false otherwise. + + + + Bulk adds entries to the map. + + The entries to add. + true to allow the sequence to include duplicate keys and let the last one win; false to throw on collisions. + true when being called from ToHashMap to avoid StackOverflow. + + + + The hash for this bucket. + + + + + Initializes a new instance of the class. + + The hash. + + + + Initializes a new instance of the class. + + The key. + The value. + The hashcode. + + + + Initializes a new instance of the class. + + The buckets. + + + + Initializes a new instance of the class. + + The hash roll. + The used. + The buckets. + The count. + + + + Initializes a new instance of the class. + + The suggested hash roll. + The bucket1. + The bucket2. + + + + A simple view of the immutable collection that the debugger can show to the developer. + + + + + The collection to be enumerated. + + + + + The simple view of the collection. + + + + + Initializes a new instance of the class. + + The collection to display in the debugger + + + + Gets a simple debugger-viewable collection. + + + + + Declare the following extension methods in System.Linq namespace to avoid accidental boxing of ImmutableArray{T} that implements IEnumerable{T}. + The boxing would occur if the methods were defined in Roslyn.Utilities and the file calling these methods has using Roslyn.Utilities + but not using System.Linq. + + + + Specifies that the method or property will ensure that the listed field and property members have not-null values. + + + Initializes the attribute with a field or property member. + + The field or property member that is promised to be not-null. + + + + Initializes the attribute with the list of field and property members. + + The list of field and property members that are promised to be not-null. + + + + Gets field or property member names. + + + Specifies that the method or property will ensure that the listed field and property members have not-null values when returning with the specified return value condition. + + + Initializes the attribute with the specified return value condition and a field or property member. + + The return value condition. If the method returns this value, the associated parameter will not be null. + + + The field or property member that is promised to be not-null. + + + + Initializes the attribute with the specified return value condition and list of field and property members. + + The return value condition. If the method returns this value, the associated parameter will not be null. + + + The list of field and property members that are promised to be not-null. + + + + Gets the return value condition. + + + Gets field or property member names. + + + + Reserved to be used by the compiler for tracking metadata. + This class should not be used by developers in source code. + + +
+
diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..9b3cd88 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..55f5c2c Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..023c35a Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..0a9f478 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..e4248e2 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..53ffc99 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..1be578b Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..0012305 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..3ea43dc Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..fdd25b3 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..d9f4b7d Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..4f717cf Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..796c039 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll new file mode 100644 index 0000000..5185331 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.pdb b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.pdb new file mode 100644 index 0000000..6f9ec85 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.pdb differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.xml b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.xml new file mode 100644 index 0000000..4c1ccb6 --- /dev/null +++ b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.xml @@ -0,0 +1,24649 @@ + + + + Microsoft.CodeAnalysis.Workspaces + + + + + The annotation normally used on nodes to request case correction. + + + + + Case corrects all names found in the provided document. + + + + + Case corrects all names found in the spans of any nodes annotated with the provided + annotation. + + + + + Case corrects all names found in the span. + + + + + Case corrects all names found in the provided spans. + + + + + Case correct only things that don't require semantic information + + + + + Case corrects all names found in the spans in the provided document. + + + + + Case corrects only things that don't require semantic information + + + + + Helper to add all the values of into + without causing any allocations or boxing of enumerators. + + + + + Additive classifications types supply additional context to other classifications. + + + NOTE: Any updates to this class should also be reflected in LSP - see + Features/LanguageServer/Protocol/Handler/SemanticTokens/SemanticTokensHelpers.cs + + + + + Returns classified spans in ascending order. + s may have the same . This occurs when there are multiple + s for the same region of code. For example, a reference to a static method + will have two spans, one that designates it as a method, and one that designates it as static. + s may also have overlapping s. This occurs when there are + strings containing regex and/or escape characters. + + + + + Classifies the provided in the given . + This will do this using an appropriate + if that can be found. will be returned if this + fails. + + + + + Produce the classifications for the span of text specified. Classification should be + performed as quickly as possible, and should process the text in a lexical fashion. + This allows classification results to be shown to the user when a file is opened before + any additional compiler information is available for the text. + + Important: The classification should not consider the context the text exists in, and how + that may affect the final classifications. This may result in incorrect classification + (i.e. identifiers being classified as keywords). These incorrect results will be patched + up when the lexical results are superseded by the calls to AddSyntacticClassifications. + + + + + This method is optional and only should be implemented by languages that support + syntax. If the language does not support syntax, callers should use + instead. + + + + Produce the classifications for the span of text specified. The syntax of the document + can be accessed to provide more correct classifications. For example, the syntax can + be used to determine if a piece of text that looks like a keyword should actually be + considered an identifier in its current context. + + + + + Produce the classifications for the span of text specified. Semantics of the language + can be used to provide richer information for constructs where syntax is insufficient. + For example, semantic information can be used to determine if an identifier should be + classified as a type, structure, or something else entirely. + + + + + Adjust a classification from a previous version of text accordingly based on the current + text. For example, if a piece of text was classified as an identifier in a previous version, + but a character was added that would make it into a keyword, then indicate that here. + + This allows the classified to quickly fix up old classifications as the user types. These + adjustments are allowed to be incorrect as they will be superseded by calls to get the + syntactic and semantic classifications for this version later. + + + + + Determines the range of the documents that should be considered syntactically changed after an edit. In + language systems that can reuse major parts of a document after an edit, and which would not need to + recompute classifications for those reused parts, this can speed up processing on a host by not requiring + the host to reclassify all the source in view, but only the source that could have changed. + + If determining this is not possible, or potentially expensive, can be returned to + indicate that the entire document should be considered changed and should be syntactically reclassified. + + + Implementations should attempt to abide by the provided timeout as much as they can, returning the best + information available at that point. As this can be called in performance critical scenarios, it is better + to return quickly with potentially larger change span (including that of the full document) rather than + spend too much time computing a very precise result. + + + + + + This method is optional and only should be implemented by languages that support + syntax. If the language does not support syntax, callers should use + instead. + + + + Tries to get cached semantic classifications for the specified document and the specified . Will return an empty array not able to. + + Pass in . This will ensure that the cached + classifications are only returned if they match the content the file currently has. + + + + For space efficiency, we encode classified spans as triples of ints in one large array. The + first int is the index of classification type in , and the + second and third ints encode the span. + + + + + The syntax node types this classifier is able to classify + + + + + The syntax token kinds this classifier is able to classify + + + + + This method will be called for all nodes that match the types specified by the property. + + + + + This method will be called for all tokens that match the kinds specified by the property. + + + + + + + + + + + + + + + + + + + + + + + Computes a syntactic text change range that determines the range of a document that was changed by an edit. The + portions outside this change range are guaranteed to be syntactically identical (see ). This algorithm is intended to be fast. It is + technically linear in the number of nodes and tokens that may need to examined. However, in practice, it should + operate in sub-linear time as it will bail the moment tokens don't match, and it's able to skip over matching + nodes fully without examining the contents of those nodes. This is intended for consumers that want a + reasonably accurate change range computer, but do not want to spend an inordinate amount of time getting the + most accurate and minimal result possible. + + + This computation is not guaranteed to be minimal. It may return a range that includes parts that are unchanged. + This means it is also legal for the change range to just specify the entire file was changed. The quality of + results will depend on how well the parsers did with incremental parsing, and how much time is given to do the + comparison. In practice, for large files (i.e. 15kloc) with standard types of edits, this generally returns + results in around 50-100 usecs on a i7 3GHz desktop. + + This algorithm will respect the timeout provided to the best of abilities. If any information has been computed + when the timeout elapses, it will be returned. + + + + + + Apply this annotation to a SyntaxNode to indicate a conflict may exist that requires user understanding and acknowledgment before taking action. + + + + + Apply this annotation to an appropriate Syntax element to request that it should be + navigated to by the user after a code action is applied. If present the host should + try to place the user's caret at the beginning of the element. + + + By using a this navigation location will be resilient + to the transformations performed by the infrastructure. + Namely it will be resilient to the formatting, reduction or case correction that + automatically occures. This allows a code action to specify a desired location for + the user caret to be placed without knowing what actual position that location will + end up at when the action is finally applied. + + + + + Apply this annotation to an appropriate SyntaxNode to request that it should be renamed by the user after the action. + + + + + Apply this annotation to a SyntaxNode to indicate that a warning message should be presented to the user. + + + + + An action produced by a or a . + + + + + A short title describing the action that may appear in a menu. + + + + + Two code actions are treated as equivalent if they have equal non-null values and were generated + by the same or . + + + Equivalence of code actions affects some Visual Studio behavior. For example, if multiple equivalent + code actions result from code fixes or refactorings for a single Visual Studio light bulb instance, + the light bulb UI will present only one code action from each set of equivalent code actions. + Additionally, a Fix All operation will apply only code actions that are equivalent to the original code action. + + If two code actions that could be treated as equivalent do not have equal values, Visual Studio behavior + may be less helpful than would be optimal. If two code actions that should be treated as distinct have + equal values, Visual Studio behavior may appear incorrect. + + + + + Descriptive tags from . + These tags may influence how the item is displayed. + + + + + Gets custom tags for the CodeAction. + + + + + Used by the CodeFixService and CodeRefactoringService to add the Provider Name as a CustomTag. + + + + + The sequence of operations that define the code action. + + + + + The sequence of operations that define the code action. + + + + + The sequence of operations used to construct a preview. + + + + + Override this method if you want to implement a subclass that includes custom 's. + + + + + Override this method if you want to implement a that has a set of preview operations that are different + than the operations produced by . + + + + + Computes all changes for an entire solution. + Override this method if you want to implement a subclass that changes more than one document. + + + + + Computes changes for a single document. Override this method if you want to implement a + subclass that changes a single document. + + + All code actions are expected to operate on solutions. This method is a helper to simplify the + implementation of for code actions that only need + to change one document. + + If this code action does not support changing a single document. + + + + used by batch fixer engine to get new solution + + + + + Apply post processing steps to any 's. + + A list of operations. + A cancellation token. + A new list of operations with post processing steps applied to any 's. + + + + Apply post processing steps to solution changes, like formatting and simplification. + + The solution changed by the . + A cancellation token + + + + Apply post processing steps to a single document: + Reducing nodes annotated with + Formatting nodes annotated with + + The document changed by the . + A cancellation token. + A document with the post processing changes applied. + + + + Creates a for a change to a single . + Use this factory when the change is expensive to compute and should be deferred until requested. + + Title of the . + Function to create the . + Optional value used to determine the equivalence of the with other s. See . + + + + Creates a for a change to more than one within a . + Use this factory when the change is expensive to compute and should be deferred until requested. + + Title of the . + Function to create the . + Optional value used to determine the equivalence of the with other s. See . + + + + Creates a representing a group of code actions. + + Title of the group. + The code actions within the group. + to allow inlining the members of the group into the parent; + otherwise, to require that this group appear as a group with nested actions. + + + + Internal priority used to bluntly place items in a light bulb in strict orderings. Priorities take + the highest precedence when ordering items so that we can ensure very important items get top prominence, + and low priority items do not. + + + If is used, the feature that specifies that value should + implement and return for , + and + . This + will ensure that the analysis engine runs the providers that will produce those actions first, + thus allowing those actions to be computed and displayed prior to running all other providers. + + + + + A that can vary with user specified options. + + + + + Gets the options to use with this code action. + This method is guaranteed to be called on the UI thread. + + A cancellation token. + An implementation specific object instance that holds options for applying the code action. + + + + Gets the 's for this given the specified options. + + An object instance returned from a prior call to . + A cancellation token. + + + + Override this method to compute the operations that implement this . + + An object instance returned from a call to . + A cancellation token. + + + + A for applying solution changes to a workspace. + may return at most one + . Hosts may provide custom handling for + s, but if a requires custom + host behavior not supported by a single , then instead: + + Implement a custom and s + Do not return any from + Directly apply any workspace edits + Handle any custom host behavior + Produce a preview for + by creating a custom or returning a single + to use the built-in preview mechanism + + + + + + Represents a single operation of a multi-operation code action. + + + + + A short title describing of the effect of the operation. + + + + + Called by the host environment to apply the effect of the operation. + This method is guaranteed to be called on the UI thread. + + + + + Called by the host environment to apply the effect of the operation. + This method is guaranteed to be called on the UI thread. + + + + + Operations may make all sorts of changes that may not be appropriate during testing + (like popping up UI). So, by default, we don't apply them unless the operation asks + for that to happen. + + + + + A code action operation for requesting a document be opened in the host environment. + + + + + Represents a preview operation for generating a custom user preview for the operation. + + + + + Gets a custom preview control for the operation. + If preview is null and is non-null, then is used to generate the preview. + + + + + No priority specified, all refactoring, code fixes, and analyzers should be run. This is equivalent + to , , and combined. + + + + + Only lowest priority suppression and configuration fix providers should be run. Specifically, + providers will be run. + NOTE: This priority is reserved for suppression and configuration fix providers and should not be + used by regular code fix providers and refactoring providers. + + + + + Only low priority refactoring, code fix providers should be run. Specifically, + providers will be run when or + is . s + which can report at least one fixable diagnostic will be run. + + + + + Only normal priority refactoring, code fix providers should be run. Specifically, + providers will be run when or + is . s + which can report at least one fixable diagnostic will be run. + + + + + Only high priority refactoring, code fix providers should be run. Specifically, + providers will be run when or + is . + The + will be run. + + + + + Get the proper start position based on the span marker type. + + + + + Get the proper end position based on the span marker type. + + + + + Inject annotations into the node so that it can re-calculate spans for each code cleaner after each tree transformation. + + + + + Make sure annotations are positioned outside of any spans. If not, merge two adjacent spans to one. + + + + + Retrieves four tokens around span like below. + + [previousToken][startToken][SPAN][endToken][nextToken] + + + + + Adjust provided span to align to either token's start position or end position. + + + + + Find closest token (including one in structured trivia) right of given position + + + + + Find closest token (including one in structured trivia) left of given position + + + + + Enum that indicates type of span marker + + + + + Normal case + + + + + Span starts at the beginning of the tree + + + + + Span ends at the end of the tree + + + + + Internal annotation type to mark span location in the tree. + + + + + Indicates the current marker type + + + + + Indicates how to find the other side of the span marker if it is missing + + + + + Static CodeCleaner class that provides default code cleaning behavior. + + + + + Return default code cleaners for a given document. + + This can be modified and given to the Cleanup method to provide different cleaners. + + + + + Cleans up the whole document. + Optionally you can provide your own options and code cleaners. Otherwise, the default will be used. + + + + + Cleans up the document marked with the provided annotation. + Optionally you can provide your own options and code cleaners. Otherwise, the default will be used. + + + + + Clean up the provided span in the document. + Optionally you can provide your own options and code cleaners. Otherwise, the default will be used. + + + + + Clean up the provided spans in the document. + Optionally you can provide your own options and code cleaners. Otherwise, the default will be used. + + + + + Clean up the provided span in the node. + This will only cleanup stuff that doesn't require semantic information. + + + + + Clean up the provided spans in the node. + This will only cleanup stuff that doesn't require semantic information. + + + + + Internal code cleanup service interface. + + This is not supposed to be used directly. It just provides a way to get the right service from each language. + + + + + Returns the default code cleaners. + + + + + This will run all provided code cleaners in an order that is given to the method. + + + + + This will run all provided code cleaners in an order that is given to the method. + + This will do cleanups that don't require any semantic information. + + + + + Specifies the exact type of the code cleanup exported. + + + + + A code cleaner that requires semantic information to do its job. + + + + + Returns the name of this provider. + + + + + This should apply its code clean up logic to the spans of the document. + + + + + This will run all provided code cleaners in an order that is given to the method. + + This will do cleanups that don't require any semantic information + + + + + Helper class that implements using delegates passed to its constructor. + + + + + Represents a single fix. This is essentially a tuple + that holds on to a and the set of + s that this will fix. + + + + + This is the diagnostic that will show up in the preview pane header when a particular fix + is selected in the light bulb menu. We also group all fixes with the same + together (into a single SuggestedActionSet) in the light bulb menu. + + + A given fix can fix one or more diagnostics. However, our light bulb UI (preview pane, grouping + of fixes in the light bulb menu etc.) currently keeps things simple and pretends that + each fix fixes a single . + + Implementation-wise the is always the first diagnostic that + the supplied when registering the fix (). This could change + in the future, if we decide to change the UI to depict the true mapping between fixes and diagnostics + or if we decide to use some other heuristic to determine the . + + + + + Context for code fixes provided by a . + + + + + Document corresponding to the to fix. + + + + + Text span within the to fix. + + + + + Diagnostics to fix. + NOTE: All the diagnostics in this collection have the same . + + + + + CancellationToken. + + + + + Creates a code fix context to be passed into method. + + Document to fix. + Text span within the to fix. + + Diagnostics to fix. + All the diagnostics must have the same . + Additionally, the of each diagnostic must be in the set of the of the associated . + + Delegate to register a fixing a subset of diagnostics. + Cancellation token. + Throws this exception if any of the arguments is null. + + Throws this exception if the given is empty, + has a null element or has an element whose span is not equal to . + + + + + Creates a code fix context to be passed into method. + + Document to fix. + + Diagnostic to fix. + The of this diagnostic must be in the set of the of the associated . + + Delegate to register a fixing a subset of diagnostics. + Cancellation token. + Throws this exception if any of the arguments is null. + + + + Add supplied to the list of fixes that will be offered to the user. + + The that will be invoked to apply the fix. + The subset of being addressed / fixed by the . + + + + Add supplied to the list of fixes that will be offered to the user. + + The that will be invoked to apply the fix. + The subset of being addressed / fixed by the . + + + + Add supplied to the list of fixes that will be offered to the user. + + The that will be invoked to apply the fix. + The subset of being addressed / fixed by the . + + + + Implement this type to provide fixes for source code problems. + Remember to use so the host environment can offer your fixes in a UI. + + + + + A list of diagnostic IDs that this provider can provide fixes for. + + + + + Computes one or more fixes for the specified . + + + A containing context information about the diagnostics to fix. + The context must only contain diagnostics with a included in the for the current provider. + + + + + Gets an optional that can fix all/multiple occurrences of diagnostics fixed by this code fix provider. + Return null if the provider doesn't support fix all/multiple occurrences. + Otherwise, you can return any of the well known fix all providers from or implement your own fix all provider. + + + + + What priority this provider should run at. + + + + + Use this attribute to declare a implementation so that it can be discovered by the host. + + + + + Optional name of the . + + + + + The source languages this provider can provide fixes for. See . + + + + + Attribute constructor used to specify automatic application of a code fix provider. + + One language to which the code fix provider applies. + Additional languages to which the code fix provider applies. See . + + + + Helper class for "Fix all occurrences" code fix providers. + + + + + Returns all the changed documents produced by fixing the list of provided . The documents will be returned such that fixed documents for a later + diagnostic will appear later than those for an earlier diagnostic. + + + + + Take all the changes made to a particular document and determine the text changes caused by each one. Take + those individual text changes and attempt to merge them together in order into . + + + + + Default implementation of a that efficiently handles the dispatch logic for fixing + entire solutions. Used by and . + + + + + Provides a base class to write a that fixes documents independently. This type + should be used instead of in the case where fixes for a only affect the the diagnostic was produced in. + + + This type provides suitable logic for fixing large solutions in an efficient manner. Projects are serially + processed, with all the documents in the project being processed in parallel. Diagnostics are computed for the + project and then appropriately bucketed by document. These are then passed to for implementors to process. + + + + + Produce a suitable title for the fix-all this type creates in . Override this if customizing that title is desired. + + + + + Fix all the present in . The document returned + will only be examined for its content (e.g. it's or . No + other aspects of (like it's properties), or changes to the or + it points at will be considered. + + The context for the Fix All operation. + The document to fix. + The diagnostics to fix in the document. + + The new representing the content fixed document. + -or- + , if no changes were made to the document. + + + + + Determines all the diagnostics we should be fixing for the given . + + + + + Attempts to fix all the provided returning, for each updated document, either + the new syntax root for that document or its new text. Syntax roots are returned for documents that support + them, and are used to perform a final cleanup pass for formatting/simplication/etc. Text is returned for + documents that don't support syntax. + + + + + Take all the fixed documents and format/simplify/clean them up (if the language supports that), and take the + resultant text and apply it to the solution. If the language doesn't support cleanup, then just take the + given text and apply that instead. + + + + + Dummy class just to get access to + + + + + Context for "Fix all occurrences" code fixes provided by a . + + + Context for "Fix all occurrences" code fixes provided by a . + + + + + Solution to fix all occurrences. + + + + + Project within which fix all occurrences was triggered. + + + + + Document within which fix all occurrences was triggered. + Can be null if the context was created using . + + + + + Underlying which triggered this fix all. + + + + + to fix all occurrences. + + + + + Diagnostic Ids to fix. + Note that , and methods + return only diagnostics whose IDs are contained in this set of Ids. + + + + + The value expected of a participating in this fix all. + + + + + CancellationToken for fix all session. + + + + + Creates a new . + Use this overload when applying fix all to a diagnostic with a source location. + + Document within which fix all occurrences was triggered. + Underlying which triggered this fix all. + to fix all occurrences. + The value expected of a participating in this fix all. + Diagnostic Ids to fix. + + to fetch document/project diagnostics to fix in a . + + Cancellation token for fix all computation. + + + + Creates a new . + Use this overload when applying fix all to a diagnostic with no source location, i.e. . + + Project within which fix all occurrences was triggered. + Underlying which triggered this fix all. + to fix all occurrences. + The value expected of a participating in this fix all. + Diagnostic Ids to fix. + + to fetch document/project diagnostics to fix in a . + + Cancellation token for fix all computation. + + + + Gets all the diagnostics in the given document filtered by . + + + + + Gets all the project-level diagnostics, i.e. diagnostics with no source location, in the given project filtered by . + + + + + Gets all the diagnostics in the given project filtered by . + This includes both document-level diagnostics for all documents in the given project and project-level diagnostics, i.e. diagnostics with no source location, in the given project. + + + + + Gets all the project diagnostics in the given project filtered by . + If is false, then returns only project-level diagnostics which have no source location. + Otherwise, returns all diagnostics in the project, including the document diagnostics for all documents in the given project. + + + + + Gets a new with the given cancellationToken. + + + + + Diagnostic provider to fetch document/project diagnostics to fix in a . + + + + + Gets all the diagnostics to fix in the given document in a . + + + + + Gets all the project-level diagnostics to fix, i.e. diagnostics with no source location, in the given project in a . + + + + + Gets all the diagnostics to fix in the given project in a . + This includes both document-level diagnostics for all documents in the given project and project-level diagnostics, i.e. diagnostics with no source location, in the given project. + + + + + Fix all occurrences logging. + + + + + Implement this abstract type to provide fix all/multiple occurrences code fixes for source code problems. + Alternatively, you can use any of the well known fix all providers from . + + + + + Gets the supported scopes for fixing all occurrences of a diagnostic. + By default, it returns the following scopes: + (a) + (b) and + (c) + + + + + Gets the diagnostic IDs for which fix all occurrences is supported. + By default, it returns for the given . + + Original code fix provider that returned this fix all provider from method. + + + + Gets fix all occurrences fix for the given fixAllContext. + + + + + Create a that fixes documents independently. This should be used instead of + in the case where fixes for a + only affect the the diagnostic was produced in. + + + Callback that will the fix diagnostics present in the provided document. The document returned will only be + examined for its content (e.g. it's or . No other aspects + of it (like attributes), or changes to the or it points at + will be considered. + + + + + Contains computed information for a given , such as supported diagnostic Ids and supported . + + + + + Gets an optional for the given code fix provider or suppression fix provider. + + + + + Gets an optional for the given code fix provider. + + + + + Gets an optional for the given suppression fix provider. + + + + + Indicates scope for "Fix all occurrences" code fixes provided by each . + + + + + Helper to merge many disparate text changes to a single document together into a total set of changes. + + + + + Try to merge the changes made to into the tracked changes. If there is any + conflicting change in with existing changes, then no changes are added. + + + + + Try to merge the changes made to all the documents in in order into the + tracked changes. If there is any conflicting changes with existing changes for a particular document, then + no changes will be added for it. + + + + + Contains well known implementations of . + + + + + Default batch fix all provider. + This provider batches all the individual diagnostic fixes across the scope of fix all action, + computes fixes in parallel and then merges all the non-conflicting fixes into a single fix all code action. + This fixer supports fixes for the following fix all scopes: + , and . + + + The batch fix all provider only batches operations (i.e. ) of type + present within the individual diagnostic fixes. Other types of + operations present within these fixes are ignored. + + + + + Provides suppression or configuration code fixes. + + + + + Returns true if the given diagnostic can be configured, suppressed or unsuppressed by this provider. + + + + + Gets one or more add suppression, remove suppression, or configuration fixes for the specified diagnostics represented as a list of 's. + + A list of zero or more potential 'es. It is also safe to return null if there are none. + + + + Gets one or more add suppression, remove suppression, or configuration fixes for the specified no-location diagnostics represented as a list of 's. + + A list of zero or more potential 'es. It is also safe to return null if there are none. + + + + Gets an optional that can fix all/multiple occurrences of diagnostics fixed by this fix provider. + Return null if the provider doesn't support fix all/multiple occurrences. + Otherwise, you can return any of the well known fix all providers from or implement your own fix all provider. + + + + + Code fix category for code fixes provided by a . + + + + + Fixes code to adhere to code style. + + + + + Fixes code to improve code quality. + + + + + Fixes code to fix compiler diagnostics. + + + + + Custom category for fix. + + + + + Diagnostic provider to fetch document/project diagnostics to fix in a . + + + + + Whether or not this diagnostic should be included when performing a FixAll. This is + useful for providers that create multiple diagnostics for the same issue (For example, + one main diagnostic and multiple 'faded out code' diagnostics). FixAll can be invoked + from any of those, but we'll only want perform an edit for only one diagnostic for each + of those sets of diagnostics. + + This overload differs from + in that it also passes along the . + + This overload differs from in + that it also passes along the in case that would be useful + (for example if the is used. + + Only one of these three overloads needs to be overridden if you want to customize + behavior. + + + + + Whether or not this diagnostic should be included when performing a FixAll. This is + useful for providers that create multiple diagnostics for the same issue (For example, + one main diagnostic and multiple 'faded out code' diagnostics). FixAll can be invoked + from any of those, but we'll only want perform an edit for only one diagnostic for each + of those sets of diagnostics. + + By default, all diagnostics will be included in fix-all unless they are filtered out + here. If only the diagnostic needs to be queried to make this determination, only this + overload needs to be overridden. However, if information from + is needed (for example ), then + should be overridden instead. + + Only one of these two overloads needs to be overridden if you want to customize + behavior. + + + + + Return the most relevant declaration to namespaceOrType, + it will first search the context node contained within, + then the declaration in the same file, then non auto-generated file, + then all the potential location. Return null if no declaration. + + + + + Options for controlling the code produced by the . + + + + + A location used to determine the best place to generate a member. This is only used for + determining which part of a partial type to generate in. If a type only has one part, or + an API is used that specifies the type, then this is not used. A part is preferred if + it surrounds this context location. If no part surrounds this location then a part is + preferred if it comes from the same SyntaxTree as this location. If there is no + such part, then any part may be used for generation. + + This option is not necessary if or are + provided. + + + + + A hint to the code generation service to specify where the generated code should be + placed. Code will be generated after this location if the location is valid in the type + or symbol being generated into, and it is possible to generate the code after it. + + If this option is provided, neither nor are + needed. + + + + + A hint to the code generation service to specify where the generated code should be + placed. Code will be generated before this location if the location is valid in the type + or symbol being generated into, and it is possible to generate the code after it. + + If this option is provided, neither nor are + needed. + + + + + True if the code generation service should add , + and when not generating directly into a declaration, should try to automatically add imports to the file + for any generated code. + Defaults to true. + + + + + Contains additional imports to be automatically added. This is useful for adding + imports that are part of a list of statements. + + + + + True if members of a symbol should also be generated along with the declaration. If + false, only the symbol's declaration will be generated. + + + + + True if the code generator should merge namespaces which only contain other namespaces + into a single declaration with a dotted name. False if the nesting should be preserved + and each namespace declaration should be nested and should only have a single non-dotted + name. + + Merging can only occur if the namespace only contains a single member that is also a + namespace. + + + + + True if the code generation should put multiple attributes in a single attribute + declaration, or if should have a separate attribute declaration for each attribute. For + example, in C# setting this to True this would produce "[Goo, Bar]" while setting it to + False would produce "[Goo][Bar]" + + + + + True if the code generator should always generate accessibility modifiers, even if they + are the same as the defaults for that symbol. For example, a private field in C# does + not need its accessibility specified as it will be private by default. However, if this + option is set to true 'private' will still be generated. + + + + + True if the code generator should generate empty bodies for methods along with the + method declaration. If false, only method declarations will be generated. + + + + + True if the code generator should generate documentation comments where available + + + + + True if the code generator should automatically attempt to choose the appropriate location + to insert members. If false and a generation location is not specified by AfterThisLocation, + or BeforeThisLocation, members will be inserted at the end of the destination definition. + + + + + If is , determines if members will be + sorted before being added to the end of the list of members. + + + + + True if the code generator should attempt to reuse the syntax of the constituent entities, such as members, access modifier tokens, etc. while attempting to generate code. + If any of the member symbols have zero declaring syntax references (non-source symbols) OR two or more declaring syntax references (partial definitions), then syntax is not reused. + If false, then the code generator will always synthesize a new syntax node and ignore the declaring syntax references. + + + + + Generates symbols that describe declarations to be generated. + + + + + Determines if the symbol is purely a code generation symbol. + + + + + Creates an event symbol that can be used to describe an event declaration. + + + + + Creates a property symbol that can be used to describe a property declaration. + + + + + Creates a field symbol that can be used to describe a field declaration. + + + + + Creates a constructor symbol that can be used to describe a constructor declaration. + + + + + Creates a destructor symbol that can be used to describe a destructor declaration. + + + + + Creates a method symbol that can be used to describe a method declaration. + + + + + Creates a method symbol that can be used to describe an operator declaration. + + + + + Creates a method symbol that can be used to describe a conversion declaration. + + + + + Creates a method symbol that can be used to describe a conversion declaration. + + + + + Creates a parameter symbol that can be used to describe a parameter declaration. + + + + + Creates a parameter symbol that can be used to describe a parameter declaration. + + + + + Creates a parameter symbol that can be used to describe a parameter declaration. + + + + + Creates a parameter symbol that can be used to describe a parameter declaration. + + + + + Creates a type parameter symbol that can be used to describe a type parameter declaration. + + + + + Creates a pointer type symbol that can be used to describe a pointer type reference. + + + + + Creates an array type symbol that can be used to describe an array type reference. + + + + + Creates an method type symbol that can be used to describe an accessor method declaration. + + + + + Create attribute data that can be used in describing an attribute declaration. + + + + + Creates a named type symbol that can be used to describe a named type declaration. + + + + + Creates a named type symbol that can be used to describe a named type declaration. + + + + + Creates a method type symbol that can be used to describe a delegate type declaration. + + + + + Creates a namespace symbol that can be used to describe a namespace declaration. + + + + + A generator used for creating or modifying member declarations in source. + + + + + Annotation placed on generated syntax. + + + + + Returns a newly created event declaration node from the provided event. + + + + + Returns a newly created field declaration node from the provided field. + + + + + Returns a newly created method declaration node from the provided method. + + + + + Returns a newly created property declaration node from the provided property. + + + + + Returns a newly created named type declaration node from the provided named type. + + + + + Returns a newly created namespace declaration node from the provided namespace. + + + + + Create a new declaration node with an event declaration of the same signature as the specified symbol added to it. + + + + + Create a new declaration node with a field declaration of the same signature as the specified symbol added to it. + + + + + Create a new declaration node with a method declaration of the same signature as the specified symbol added to it. + + + + + Create a new declaration node with a property declaration of the same signature as the specified symbol added to it. + + + + + Create a new declaration node with a named type declaration of the same signature as the specified symbol added to it. + + + + + Create a new declaration node with multiple member declarations of the same signatures as the specified symbols added to it. + + + + + Create a new declaration node with one or more parameter declarations of the same signature as the specified symbols added to it. + + + + + Create a new declaration node with the specified attributes added to it. + + + + + Removes the specified attribute node from the given declaration node. + + + + + Removes the specified attribute node from the given declaration node. + + + + + Create a new declaration node with one or more statements added to its body. + + + + + Create a new solution where the declaration of the destination symbol has an additional event of the same signature as the specified event symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional field of the same signature as the specified field symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional method of the same signature as the specified method symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional property of the same signature as the specified property symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional named type of the same signature as the specified named type symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional named type of the same signature as the specified named type symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional namespace of the same signature as the specified namespace symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has an additional namespace or type of the same signature as the specified namespace or type symbol. + Returns the document in the new solution where the destination symbol is declared. + + + + + Create a new solution where the declaration of the destination symbol has additional members of the same signature as the specified member symbols. + Returns the document in the new solution where the destination symbol is declared. + + + + + Returns true if additional declarations can be added to the destination symbol's declaration. + + + + + Returns a newly created event declaration node from the provided event. + + + + + Returns a newly created field declaration node from the provided field. + + + + + Returns a newly created method declaration node from the provided method. + + + + + Returns a newly created property declaration node from the provided property. + + + + + Returns a newly created named type declaration node from the provided named type. + + + + + Returns a newly created namespace declaration node from the provided namespace. + + + + + Adds an event into destination. + + + + + Adds a field into destination. + + + + + Adds a method into destination. + + + + + Adds a property into destination. + + + + + Adds a named type into destination. + + + + + Adds a namespace into destination. + + + + + Adds members into destination. + + + + + Adds the parameters to destination. + + + + + Adds the attributes to destination. + + + + + Remove the given attribute from destination. + + + + + Remove the given attribute from destination. + + + + + Update the modifiers list for the given declaration node. + + + + + Update the accessibility modifiers for the given declaration node, retaining the trivia of the existing modifiers. + + + + + Update the type for the given declaration node. + + + + + Replace the existing members with the given newMembers for the given declaration node. + + + + + Adds the statements to destination. + + + + + Adds a field with the provided signature into destination. + + + + + Adds a field with the provided signature into destination. + + + + + Adds a method with the provided signature into destination. + + + + + Adds a property with the provided signature into destination. + + + + + Adds a named type into destination. + + + + + Adds a named type into destination. + + + + + Adds a namespace into destination. + + + + + Adds a namespace or type into destination. + + + + + Adds all the provided members into destination. + + + + + true if destination is a location where other symbols can be added to. + + + + + true if destination is a location where other symbols can be added to. + + + + + Return the most relevant declaration to namespaceOrType, + it will first search the context node contained within, + then the declaration in the same file, then non auto-generated file, + then all the potential location. Return null if no declaration. + + + + + When we are generating literals, we sometimes want to emit code vs. the numeric literal. This class + gives the constants for all ones we want to convert + + + + + Annotation placed on s that the converts to a node. This + information tracks the original nullable state of the symbol and is used by metadata-as-source to determine if + it needs to add #nullable directives in the file. + + + + + For string~ types. + + + + + For string! or string? types. + + + + + Context for code refactorings provided by a . + + + + + Document corresponding to the to refactor. + + + + + Text span within the to refactor. + + + + + CancellationToken. + + + + + Creates a code refactoring context to be passed into method. + + + + + Creates a code refactoring context to be passed into method. + + + + + Add supplied to the list of refactorings that will be offered to the user. + + The that will be invoked to apply the refactoring. + + + + Add supplied applicable to to the list of refactorings that will be offered to the user. + + The that will be invoked to apply the refactoring. + The within original document the is applicable to. + + should represent a logical section within the original document that the is + applicable to. It doesn't have to precisely represent the exact that will get changed. + + + + + Inherit this type to provide source code refactorings. + Remember to use so the host environment can offer your refactorings in a UI. + + + + + Computes one or more refactorings for the specified . + + + + + What priority this provider should run at. + + + + + Use this attribute to declare a implementation so that it can be discovered by the host. + + + + + The name of the . + + + + + The source languages for which this provider can provide refactorings. See . + + + + + Attribute constructor used to specify availability of a code refactoring provider. + + One language to which the code refactoring provider applies. + Additional languages to which the code refactoring provider applies. See . + + + + + + + Represents a code style option and an associated notification option. Supports + being instantiated with T as a or an enum type. + + CodeStyleOption also has some basic support for migration a option + forward to an enum type option. Specifically, if a previously serialized + bool-CodeStyleOption is then deserialized into an enum-CodeStyleOption then 'false' + values will be migrated to have the 0-value of the enum, and 'true' values will be + migrated to have the 1-value of the enum. + + Similarly, enum-type code options will serialize out in a way that is compatible with + hosts that expect the value to be a boolean. Specifically, if the enum value is 0 or 1 + then those values will write back as false/true. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Offers different notification styles for enforcing + a code style. Under the hood, it simply maps to + + + This also supports various properties for databinding. + + + + + + Name for the notification option. + + + + + Diagnostic severity associated with notification option. + + + + + Notification option to disable or suppress an option with . + + + + + Notification option for a silent or hidden option with . + + + + + Notification option for a suggestion or an info option with . + + + + + Notification option for a warning option with . + + + + + Notification option for an error option with . + + + + + Given an editor-config code-style-option, gives back the core value part of the + option. For example, if the option is "true:error" or "true" then "true" will be returned + in . + + + + + Given an editor-config code-style-option, gives back the constituent parts of the + option. For example, if the option is "true:error" then "true" will be returned + in and will be returned + in . Note that users are allowed to not provide + a NotificationOption, so will default to . + + + + + When user preferences are not yet set for a style, we fall back to the default value. + One such default(s), is that the feature is turned on, so that codegen consumes it, + but with silent enforcement, so that the user is not prompted about their usage. + + + + + This option says if we should simplify away the . or . in field access expressions. + + + + + This option says if we should simplify away the . or . in property access expressions. + + + + + This option says if we should simplify away the . or . in method access expressions. + + + + + This option says if we should simplify away the . or . in event access expressions. + + + + + This option says if we should prefer keyword for Intrinsic Predefined Types in Declarations + + + + + This option says if we should prefer keyword for Intrinsic Predefined Types in Member Access Expression + + + + + Note: the order of this enum is important. We originally only supported two values, + and we encoded this as a bool with 'true = WhenPossible' and 'false = never'. To + preserve compatibility we map the false value to 0 and the true value to 1. All new + values go after these. + + + + + Prefer namespace N { } + + + + + Prefer namespace N; + + + + + Preferences for flagging unused parameters. + + + + + Assignment preference for unused values from expression statements and assignments. + + + + + Serialization typed used to pass information to/from OOP and VS. + + + + + The category specified in a [DesignerCategory("...")] attribute. + + + + + The document this applies to. + + + + + Path for this . + + + + + Callback the host (VS) passes to the OOP service to allow it to send batch notifications + about designer attribute info. There is no guarantee that the host will have done anything + with this data when the callback returns, only that it will try to inform the project system + about the designer attribute info in the future. + + + + + Interface to allow host (VS) to inform the OOP service to start incrementally analyzing and + reporting results back to the host. + + + + + enum for each analysis kind. + + + + + Provides and caches information about diagnostic analyzers such as , + instance, s. + Thread-safe. + + + + + Supported descriptors of each . + + + Holds on instances weakly so that we don't keep analyzers coming from package references alive. + They need to be released when the project stops referencing the analyzer. + + The purpose of this map is to avoid multiple calls to that might return different values + (they should not but we need a guarantee to function correctly). + + + + + Returns of given . + + + + + Returns of given + that are not compilation end descriptors. + + + + + Returns true if given has a compilation end descriptor + that is reported in the Compilation end action. + + + + + Determine whether collection of telemetry is allowed for given . + + + + + Return true if the given is suppressed for the given project. + NOTE: This API is intended to be used only for performance optimization. + + + + + Language name () or null if the diagnostic is not associated with source code. + + + + + Properties for a diagnostic generated by an explicit build. + + + + + Get if it exists, throws otherwise. + + Some diagnostic data such as those created from build have original line/column but not . + In those cases use method instead to calculate span from original line/column. + + + + + Create a host/VS specific diagnostic with the given descriptor and message arguments for the given project. + Note that diagnostic created through this API cannot be suppressed with in-source suppression due to performance reasons (see the PERF remark below for details). + + + + + Returns true if the diagnostic was generated by an explicit build, not live analysis. + + + + + + Null if path is not mapped and contains the actual path. + Note that the value might be a relative path. In that case should be used + as a base path for path resolution. + + + + + Push diagnostics. Roslyn/LSP is responsible for aggregating internal diagnostic notifications and pushing + those out to either VS or the LSP push diagnostic system. + + + + + Pull diagnostics. Roslyn/LSP is responsible for aggregating internal diagnostic notifications and + responding to LSP pull requests for them. + + + + + Default mode - when the option is set to default we use a feature flag to determine if we're + is in or + + + + + Scope for analyzing a document for computing local syntax/semantic diagnostics. + + + + + Gets the corresponding to the . + NOTE: Throws an exception if is not an . + + + + + IDE-only document based diagnostic analyzer. + + + + + it is not allowed one to implement both DocumentDiagnosticAnalzyer and DiagnosticAnalyzer + + + + + This lets vsix installed or to + specify priority of the analyzer. Regular always comes before those 2 different types. + Priority is ascending order and this only works on HostDiagnosticAnalyzer meaning Vsix installed analyzers in VS. + This is to support partner teams (such as typescript and F#) who want to order their analyzer's execution order. + + + + + Filters out the diagnostics with the specified . + If is false, filters out suppressed diagnostics. + If is non-null, filters out diagnostics with location outside this span. + + + + + A dummy singleton analyzer. Its only purpose is to represent file content load failures in maps that are keyed by . + + + + + Key is . + + We use the key to de-duplicate analyzer references if they are referenced from multiple places. + + + + + Key is the language the supports and key for the second map is analyzer reference identity and + for that assembly reference. + + Entry will be lazily filled in. + + + + + Key is . + + Value is set of that belong to the . + + We populate it lazily. otherwise, we will bring in all analyzers preemptively + + + + + Maps to compiler diagnostic analyzers. + + + + + Maps list of analyzer references and to . + + + TODO: https://github.com/dotnet/roslyn/issues/42848 + It is quite common for multiple projects to have the same set of analyzer references, yet we will create + multiple instances of the analyzer list and thus not share the info. + + + + + List of host s + + + + + Get identity and s map for given + + + + + Create identity and s map for given that + includes both host and project analyzers + + + + + Create identity and s map for given that + has only project analyzers + + + + + Return compiler for the given language. + + + + + Given the original location of the diagnostic and the mapped line info based on line directives in source, + apply any necessary adjustments to these diagnostic spans and returns the effective source span for the diagnostic. + For example, for Venus, we might change the mapped location to be the location in the primary buffer. + Additionally, if the secondary buffer location is outside visible user code, then the original location is also adjusted to be within visible user code. + + + + + IDE-only project based diagnostic analyzer. + + + + + it is not allowed one to implement both ProjectDiagnosticAnalzyer and DiagnosticAnalyzer + + + + + This lets vsix installed or to + specify priority of the analyzer. Regular always comes before those 2 different types. + Priority is ascending order and this only works on HostDiagnosticAnalyzer meaning Vsix installed analyzers in VS. + This is to support partner teams (such as typescript and F#) who want to order their analyzer's execution order. + + + + + Information about analyzers supplied by the host (IDE), which can be completely skipped or its diagnostics partially filtered for the corresponding project + as project analyzer reference (from NuGet) has equivalent analyzer(s) reporting all or subset of diagnostic IDs reported by these analyzers. + + + + + Analyzers supplied by the host (IDE), which can be completely skipped for the corresponding project + as project analyzer reference has equivalent analyzer(s) reporting all diagnostic IDs reported by these analyzers. + + + + + Analyzer to diagnostic ID map, such that the diagnostics of those IDs reported by the analyzer should be filtered + for a correspndiong project. + This includes the analyzers supplied by the host (IDE), such that project's analyzer references (from NuGet) + has equivalent analyzer(s) reporting subset of diagnostic IDs reported by these analyzers. + + + + + Predefined name of diagnostic property which shows in what compilation stage the diagnostic is created. + + + + + An implementation of for the compiler that wraps a . + + + + + Create a from a . + + + + + Resolved path of the document. + + + + + Retrieves a with the contents of this file. + + + + + Special IDE analyzer to flag unnecessary inline source suppressions, + i.e. pragma and local SuppressMessageAttribute suppressions. + + + + + Analyzes the tree, with an optional span scope, and report unnecessary inline suppressions. + + + + + Returns the equivalent for a value. + + The value. + + The equivalent for the value. + + + If is not one of the expected values. + + + + + Returns the equivalent for a value. + + The value. + + The equivalent for a value; otherwise, + if does not contain a direct equivalent for + . + + + If is not one of the expected values. + + + + + Applies a default severity to a value. + + The value. + The default severity. + + If is , returns + . + -or- + Otherwise, returns if it has a non-default value. + + + + + Each word is capitalized + + + + + Every word except the first word is capitalized + + + + + Only the first word is capitalized + + + + + Every character is capitalized + + + + + No characters are capitalized + + + + + The dictionary we get from the VS editorconfig API uses the same dictionary object if there are no changes, so we can cache based on dictionary + + + + + Determines if matches a subset of the symbols matched by . The + implementation determines which properties of are considered for this + evaluation. The subset relation does not necessarily indicate a proper subset. + + The first naming rule. + The second naming rule. + if matches a subset of the symbols matched by + on some implementation-defined properties; otherwise, . + + + + This does not handle the case where a method in a base type implicitly implements an + interface method on behalf of one of its derived types. + + + + + Contains all information related to Naming Style Preferences. + 1. Symbol Specifications + 2. Name Style + 3. Naming Rule (points to Symbol Specification IDs) + + + + + Invalid value, analyzer must support at least one or more of the subsequent analysis categories. + + + + + Analyzer reports syntax diagnostics (i.e. registers a SyntaxTree action). + Note: an that uses this will not work properly if + it registers a and then ends + up needing to use the . If a + is needed, use or + . + + + + + Analyzer reports semantic diagnostics and also supports incremental span based method body analysis. + An analyzer can support incremental method body analysis if edits within a method body only affect the diagnostics reported by the analyzer on the edited method body. + + + + + Analyzer reports semantic diagnostics but doesn't support incremental span based method body analysis. + It needs to re-analyze the whole document for reporting semantic diagnostics even for method body editing scenarios. + + + + + Analyzer reports project diagnostics (i.e. registers a Compilation action and/or Compilation end action diagnostics). + + + + + This interface is a marker for all the analyzers that are built in. + We will record non-fatal-watson if any analyzer with this interface throws an exception. + + also, built in analyzer can do things that third-party analyzer (command line analyzer) can't do + such as reporting all diagnostic descriptors as hidden when it can return different severity on runtime. + + or reporting diagnostics ID that is not reported by SupportedDiagnostics. + + this interface is used by the engine to allow this special behavior over command line analyzers. + + + + + This category will be used to run analyzer more efficiently by restricting scope of analysis + + + + + This indicates whether this built-in analyzer will only run on opened files. + + + + + What priority this provider should run at. This value is not allowed to be . + + + + + Temporarily stores text and streams in memory mapped files. + + + + + The maximum size in bytes of a single storage unit in a memory mapped file which is shared with other + storage units. + + + This value was arbitrarily chosen and appears to work well. Can be changed if data suggests + something better. + + + + + + The size in bytes of a memory mapped file created to store multiple temporary objects. + + + This value was arbitrarily chosen and appears to work well. Can be changed if data suggests + something better. + + + + + + The synchronization object for accessing the memory mapped file related fields (indicated in the remarks + of each field). + + + PERF DEV NOTE: A concurrent (but complex) implementation of this type with identical semantics is + available in source control history. The use of exclusive locks was not causing any measurable + performance overhead even on 28-thread machines at the time this was written. + + + + + The most recent memory mapped file for creating multiple storage units. It will be used via bump-pointer + allocation until space is no longer available in it. + + + Access should be synchronized on . + + + + The name of the current memory mapped file for multiple storage units. + + Access should be synchronized on . + + + + + The total size of the current memory mapped file for multiple storage units. + + Access should be synchronized on . + + + + + + The offset into the current memory mapped file where the next storage unit can be held. + + + Access should be synchronized on . + + + + + + Allocate shared storage of a specified size. + + + "Small" requests are fulfilled from oversized memory mapped files which support several individual + storage units. Larger requests are allocated in their own memory mapped files. + + The size of the shared storage block to allocate. + A describing the allocated block. + + + + Our own abstraction on top of memory map file so that we can have shared views over mmf files. + Otherwise, each view has minimum size of 64K due to requirement forced by windows. + + most of our view will have short lifetime, but there are cases where view might live a bit longer such as + metadata dll shadow copy. shared view will help those cases. + + + Instances of this class should be disposed when they are no longer needed. After disposing this + instance, it should no longer be used. However, streams obtained through + or will not be invalidated until they are disposed independently (which + may occur before or after the is disposed. + + This class and its nested types have familiar APIs and predictable behavior when used in other code, + but are non-trivial to work on. The implementations of adhere to the best + practices described in + DG + Update: Dispose, Finalization, and Resource Management. Additional notes regarding operating system + behavior leveraged for efficiency are given in comments. + + + + + The memory mapped file. + + + It is possible for the file to be disposed prior to the view and/or the streams which use it. + However, the operating system does not actually close the views which are in use until the file handles + are closed as well, even if the file is disposed first. + + + + + A weak reference to a read-only view for the memory mapped file. + + + This holds a weak counted reference to current , which + allows additional accessors for the same address space to be obtained up until the point when no + external code is using it. When the memory is no longer being used by any + objects, the view of the memory mapped file is unmapped, making the + process address space it previously claimed available for other purposes. If/when it is needed again, a + new view is created. + + This view is read-only, so it is only used by . + + + + + The name of the memory mapped file. + + + + + The offset into the memory mapped file of the region described by the current + . + + + + + The size of the region of the memory mapped file described by the current + . + + + + + Caller is responsible for disposing the returned stream. + multiple call of this will not increase VM. + + + + + Caller is responsible for disposing the returned stream. + multiple call of this will increase VM. + + + + + Run a function which may fail with an if not enough memory is available to + satisfy the request. In this case, a full compacting GC pass is forced and the function is attempted + again. + + + and + will use a native + memory map, which can't trigger a GC. In this case, we'd otherwise crash with OOM, so we don't care + about creating a UI delay with a full forced compacting GC. If it crashes the second try, it means we're + legitimately out of resources. + + The type of argument to pass to the callback. + The type returned by the function. + The function to execute. + The argument to pass to the function. + The value returned by . + + + + Get underlying native memory directly. + + + + + Service used to enable recoverable object caches for a given + + + + + Caches recoverable objects + + Compilations are put into a conditional weak table. + + Recoverable SyntaxTrees implement since they are numerous + and putting them into a conditional weak table greatly increases GC costs in + clr.dll!PromoteDependentHandle. + + + + + If caching is enabled for key, the instance is added to + a conditional weak table. + + It will not be collected until either caching is disabled for the project + or the owner object is collected. + + If caching is not enabled for the project, the instance is added to a fixed-size + cache. + + The instance passed in is always returned + + + + If caching is enabled for key, + will be set to instance. + + The instance passed in is always returned + + + + Workspace service for cache implementations. + + + + + May be raised by a Workspace host when available memory is getting low in order to request + that caches be flushed. + + + + + Extensible document properties specified via a document service. + + + + + The LSP client name that should get the diagnostics produced by this document; any other source + will not show these diagnostics. For example, razor uses this to exclude diagnostics from the error list + so that they can handle the final display. + If null, the diagnostics do not have this special handling. + + + + + excerpt some part of + + + + + return of given and + + the result might not be an exact copy of the given source or contains more then given span + + + + + this mode shows intention not actual behavior. it is up to implementation how to interpret the intention. + + + + + Result of excerpt + + + + + excerpt content + + + + + span on that given got mapped to + + + + + classification information on the + + + + + this excerpt is from + + should be same document in + + + + + span on this excerpt is from + + should be same text span in + + + + + TODO: Merge into . + Used by Razor via IVT. + + + + + document version of + + + + + indicates whether this document supports diagnostics or not + + + + + Empty interface just to mark document services. + + + + + Gets a document specific service provided by the host identified by the service type. + If the host does not provide the service, this method returns null. + + + + + Map spans in a document to other spans even in other document + + this will be used by various features if provided to convert span in one document to other spans. + + for example, it is used to show spans users expect in a razor file rather than spans in + auto generated file that is implementation detail or navigate to the right place rather + than the generated file and etc. + + + + + Whether this span mapping service can handle mapping import directives added to a document. + + + + + Map spans in the document to more appropriate locations + + in current design, this can NOT map a span to a span that is not backed by a file. + for example, roslyn supports someone to have a document that is not backed by a file. and current design doesn't allow + such document to be returned from this API + for example, span on razor secondary buffer document in roslyn solution mapped to a span on razor cshtml file is possible but + a span on razor cshtml file to a span on secondary buffer document is not possible since secondary buffer document is not backed by a file + + Document given spans belong to + Spans in the document + Cancellation token + Return mapped span. order of result should be same as the given span + + + + Result of span mapping + + + + + Path to mapped file + + + + + LinePosition representation of the Span + + + + + Mapped span + + + + + MEF metadata class used to find exports declared for a specific . + + + + + helper type to track whether has been initialized. + + currently, this helper only supports services whose lifetime is same as Host (ex, VS) + + TService for + + + + Workspace kind this event listener is initialized for + + + + + MEF export attribute for + + + one of values from indicating which service this event listener is for + + indicate which workspace kind this event listener is for + + + + provide a way for features to lazily subscribe to a service event for particular workspace + + see for supported services + + + + + provide a way for to mark it as stoppable + + for example, if the service is used for is a disposable + service, the service can call Stop when the service go away + + + + + provide a way for features to lazily subscribe to a service event for particular workspace + + see for supported services + + + + + Ensure is called for the workspace + + + + + list of well known types + + + + + Per language services provided by the host environment. + + + + + The that originated this language service. + + + + + The name of the language + + + + + Gets a language specific service provided by the host identified by the service type. + If the host does not provide the service, this method returns null. + + + + + Gets a language specific service provided by the host identified by the service type. + If the host does not provide the service, this method returns throws . + + + + + A factory for creating compilations instances. + + + + + Services provided by the host environment. + + + + + Creates a new workspace service. + + + + + Per workspace services provided by the host environment. + + + + + The host services this workspace services originated from. + + + + + + The workspace corresponding to this workspace services instantiation + + + + + Gets a workspace specific service provided by the host identified by the service type. + If the host does not provide the service, this method returns null. + + + + + Gets a workspace specific service provided by the host identified by the service type. + If the host does not provide the service, this method throws . + + The host does not provide the service. + + + + Obsolete. Roslyn no longer supports a mechanism to perform arbitrary persistence of data. If such functionality + is needed, consumers are resonsible for providing it themselves with whatever semantics are needed. + + + + + A service for storing information in a temporary location that only lasts for the duration of the process. + + + + + A factory that constructs . + + + + + A list of language names for supported language services. + + + + + Returns true if the language is supported. + + + + + Gets the for the language name. + + Thrown if the language isn't supported. + + + + Finds all language services of the corresponding type across all supported languages that match the filter criteria. + + + + + Empty interface just to mark language services. + + + + + Empty interface just to mark workspace services. + + + + + Use this attribute to declare a implementation for MEF + + + + + file extensions this can handle such as cshtml + + match will be done by + + + + + Use this attribute to declare a implementation for inclusion in a MEF-based workspace. + + + + + The assembly qualified name of the service's type. + + + + + The language that the service is target for; LanguageNames.CSharp, etc. + + + + + The layer that the service is specified for; ServiceLayer.Default, etc. + + + + + Declares a implementation for inclusion in a MEF-based workspace. + + The type that will be used to retrieve the service from a . + The language that the service is target for; LanguageNames.CSharp, etc. + The layer that the service is specified for; ServiceLayer.Default, etc. + + + + Use this attribute to declare a implementation for inclusion in a MEF-based workspace. + + + + + The assembly qualified name of the service's type. + + + + + The language that the service is target for; LanguageNames.CSharp, etc. + + + + + The layer that the service is specified for; ServiceLayer.Default, etc. + + + + + Declares a implementation for inclusion in a MEF-based workspace. + + The type that will be used to retrieve the service from a . + The language that the service is target for; LanguageNames.CSharp, etc. + The layer that the service is specified for; ServiceLayer.Default, etc. + + + + Use this attribute to declare a implementation for inclusion in a MEF-based workspace. + + + + + The assembly qualified name of the service's type. + + + + + The layer that the service is specified for; ServiceLayer.Default, etc. + + + + + Declares a implementation for inclusion in a MEF-based workspace. + + The type that will be used to retrieve the service from a . + The layer that the service is specified for; , etc. + + + + Use this attribute to declare a implementation for inclusion in a MEF-based workspace. + + + + + The assembly qualified name of the service's type. + + + + + The layer that the service is specified for; ServiceLayer.Default, etc. + + + + + Declares a implementation for inclusion in a MEF-based workspace. + + The type that will be used to retrieve the service from a . + The layer or workspace kind that the service is specified for; , etc. + + + + A factory that creates instances of a specific . + + Implement a when you want to provide instances that use other services. + + + + + Creates a new instance. + + The that can be used to access other services. + + + + A factory that creates instances of a specific . + + Implement a when you want to provide instances that use other services. + + + + + Creates a new instance. + Returns null if the service is not applicable to the given workspace. + + The that can be used to access other services. + + + + This delegate allows test code to override the behavior of . + + + + + + Injects replacement behavior for the method. + + + + + The layer of an exported service. + + If there are multiple definitions of a service, the is used to determine which is used. + + + + + Service layer that overrides , and . + + + + + Service layer that overrides , and . + + + + + Service layer that overrides and . + + + + + Service layer that overrides . + + + + + The base service layer. + + + + + MEF metadata class used to find exports declared for a specific file extensions. + + + + + This interface is provided purely to enable some shared logic that handles multiple kinds of + metadata that share the Language property. It should not be used to find exports via MEF, + use LanguageMetadata instead. + + + + + This interface is provided purely to enable some shared logic that handles multiple kinds of + metadata that share the Languages property. It should not be used to find exports via MEF, + use LanguageMetadata instead. + + + + + MEF metadata class used to find exports declared for a specific language. + + + + + MEF metadata class used for finding and exports. + + + + + MEF metadata class used to find exports declared for a specific . + + + + + MEF metadata class used for finding and exports. + + + + + Provides a way to map from an assembly name to the actual path of the .NET Framework + assembly with that name in the context of a specified project. For example, if the + assembly name is "System.Data" then a project targeting .NET 2.0 would resolve this + to a different path than a project targeting .NET 4.5. + + + + + Returns null if the assembly name could not be resolved. + + An optional type name for a type that must + exist in the assembly. + The project context to search within. + The name of the assembly to try to resolve. + + + + A cache for metadata references. + + + + + A collection of references to the same underlying metadata, each with different properties. + + + + + if the data we have for the solution with the given has the + provided . + + + + + if the data we have for the given with the given has the provided . + + + + + if the data we have for the given with the given has the provided . + + + + + Reads the stream for the solution with the given . If + is provided, the persisted checksum must match it. If there is no such stream with that name, or the + checksums do not match, then will be returned. + + + + + Reads the stream for the with the given . If + is provided, the persisted checksum must match it. If there is no such stream with that name, or the + checksums do not match, then will be returned. + + + + + Reads the stream for the with the given . If + is provided, the persisted checksum must match it. If there is no such stream with that name, or the + checksums do not match, then will be returned. + + + + + Reads the stream for the solution with the given . An optional can be provided to store along with the data. This can be used along with ReadStreamAsync + with future reads to ensure the data is only read back if it matches that checksum. + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + + Reads the stream for the with the given . An optional + can be provided to store along with the data. This can be used along with + ReadStreamAsync with future reads to ensure the data is only read back if it matches that checksum. + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + + Reads the stream for the with the given . An optional + can be provided to store along with the data. This can be used along with + ReadStreamAsync with future reads to ensure the data is only read back if it matches that checksum. + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + Instances of support both synchronous and asynchronous disposal. Asynchronous + disposal should always be preferred as the implementation of synchronous disposal may end up blocking the caller + on async work. + + + + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + Returns if the data was successfully persisted to the storage subsystem. Subsequent + calls to read the same keys should succeed if called within the same session. + + + + + Configuration of the intended to be used to override behavior in tests. + + + + + Indicates that the client expects the DB to succeed at all work and that it should not ever gracefully fall over. + Should not be set in normal host environments, where it is completely reasonable for things to fail + (for example, if a client asks for a key that hasn't been stored yet). + + + + + Used to ensure that the path components we generate do not contain any characters that might be invalid in a + path. For example, Base64 encoding will use / which is something that we definitely do not want + errantly added to a path. + + + + + Obsolete. Roslyn no longer supports a mechanism to perform arbitrary persistence of data. If such functionality + is needed, consumers are responsible for providing it themselves with whatever semantics are needed. + + + + + provides info on the given file + + this will be used to provide dynamic content such as generated content from cshtml to workspace + we acquire this from exposed from external components such as razor for cshtml + + + + + The path to the generated file. in future, we will use this to get right options from editorconfig + + + + + return for this file + + + + + return to load content for the dynamic file + + + + + True if the source code contained in the document is only used in design-time (e.g. for completion), + but is not passed to the compiler when the containing project is built, e.g. a Razor view. + + + + + return for the content it provided + + + + + Provider for the + + implementer of this service should be pure free-thread meaning it can't switch to UI thread underneath. + otherwise, we can get into dead lock if we wait for the dynamic file info from UI thread + + + + + return for the context given + + this file belongs to + full path to project file (ex, csproj) + full path to non source file (ex, cshtml) + null if this provider can't handle the given file + + + + let provider know certain file has been removed + + this file belongs to + full path to project file (ex, csproj) + full path to non source file (ex, cshtml) + + + + indicate content of a file has updated. the event argument "string" should be same as "filepath" given to + + + + + Provides workspace status + + this is an work in-progress interface, subject to be changed as we work on prototype. + + it can completely removed at the end or new APIs can added and removed as prototype going on + no one except one in the prototype group should use this interface. + + tracking issue - https://github.com/dotnet/roslyn/issues/34415 + + + + + Indicate that status has changed + + + + + Wait until workspace is fully loaded + + unfortunately, some hosts, such as VS, use services (ex, IVsOperationProgressStatusService) that require UI thread to let project system to proceed to next stages. + what that means is that this method should only be used with either await or JTF.Run, it should be never used with Task.Wait otherwise, it can + deadlock + + + + + Indicates whether workspace is fully loaded + + unfortunately, some hosts, such as VS, use services (ex, IVsOperationProgressStatusService) that require UI thread to let project system to proceed to next stages. + what that means is that this method should only be used with either await or JTF.Run, it should be never used with Task.Wait otherwise, it can + deadlock + + + + + Factory service for creating syntax trees. + + + + + A factory that creates either sequential or parallel task schedulers. + + + + + Workspace service that provides instance. + + + + + support direct memory access pointer + + + + + TemporaryStorage can be used to read and write text to a temporary storage location. + + + + + This service allows you to access temporary storage. + + + + + This service allows you to access temporary storage. + + + + + Attach to existing with given name. + + + + + Attach to existing with given name. + + + + + TemporaryStorage can be used to read and write text to a temporary storage location. + + + + + Get name of the temporary storage + + + + + Get offset of the temporary storage + + + + + Get size of the temporary storage + + + + + Represents a which is used to hold data for . + + + + + Gets the value for the property for the + represented by this temporary storage. + + + + + Gets the value for the property for the + represented by this temporary storage. + + + + + Gets the checksum for the represented by this temporary storage. This is equivalent + to calling . + + + + + A factory for creating instances. + + + + + Creates from a stream. + + The stream to read the text from. Must be readable and seekable. The text is read from the start of the stream. + + Specifies an encoding to be used if the actual encoding can't be determined from the stream content (the stream doesn't start with Byte Order Mark). + If not specified auto-detect heuristics are used to determine the encoding. If these heuristics fail the decoding is assumed to be the system encoding. + Note that if the stream starts with Byte Order Mark the value of is ignored. + + Cancellation token. + + The stream content can't be decoded using the specified , or + is null and the stream appears to be a binary file. + + An IO error occurred while reading from the stream. + + + + Creates from a reader with given . + + The to read the text from. + Specifies an encoding for the SourceText. + it could be null. but if null is given, it won't be able to calculate checksum + Cancellation token. + + + + Available in workspaces that accept changes in solution level analyzers. + + + + + This class is a that holds onto a value weakly, + but can save its value and recover it on demand if needed. + + The initial value comes from the specified in the constructor. + Derived types implement SaveAsync and RecoverAsync. + + + + + Override this to save the state of the instance so it can be recovered. + This method will only ever be called once. + + + + + Override this method to implement asynchronous recovery semantics. + This method may be called multiple times. + + + + + Override this method to implement synchronous recovery semantics. + This method may be called multiple times. + + + + + A value source that caches its value weakly once obtained from its source. + The source must allow repeatable accesses. + + + + + Gets extended host language services, which includes language services from . + + + + + This holds onto diagnostics for a specific version of project snapshot + in a way each kind of diagnostics can be queried fast. + + + + + We have this builder to avoid creating collections unnecessarily. + Expectation is that, most of time, most of analyzers doesn't have any diagnostics. so no need to actually create any objects. + + + + + Basically typed tuple. + + + + + Provide a way for users to turn on and off analyzing workspace for compiler diagnostics + + + + + Include syntax errors + + + + + Include semantic errors + + + + + Include script semantic errors + + + + + Calculates distance of two nodes based on their significant parts. + Returns false if the nodes don't have any significant parts and should be compared as a whole. + + + + + Represents an edit operation on a tree or a sequence of nodes. + + Tree node. + + + + Insert: + default(TNode). + + Delete: + Deleted node. + + Move, Update: + Node in the old tree/sequence. + + + + + Insert: + Inserted node. + + Delete: + default(TNode) + + Move, Update: + Node in the new tree/sequence. + + + + + No change. + + + + + Node value was updated. + + + + + Node was inserted. + + + + + Node was deleted. + + + + + Node changed parent. + + + + + Node changed position within its parent. The parent nodes of the old node and the new node are matching. + + + + + Represents a sequence of tree edits. + + + + + Calculates Longest Common Subsequence for immutable arrays. + + + + + Underlying storage for s allocated on . + + + The LCS algorithm allocates s of sizes (3, 2*1 + 1, ..., 2*D + 1), always in this order, + where D is at most the sum of lengths of the compared sequences. + The arrays get pushed on a stack as they are built up, then all consumed in the reverse order (stack pop). + + Since the exact length of each array in the above sequence is known we avoid allocating each individual array. + Instead we allocate a large buffer serving as a a backing storage of a contiguous sequence of arrays + corresponding to stack depths to . + If more storage is needed we chain next large buffer to the previous one in a linked list. + + We pool a few of these linked buffers on to conserve allocations. + + + + + The max stack depth backed by the fist buffer. + Size of the buffer for 100 is ~10K. + For 150 it'd be 91KB, which would be allocated on LOH. + The buffers grow by factor of , so the next buffer will be allocated on LOH. + + + + + Do not pool segments that are too large. + + + + + Calculates Longest Common Subsequence. + + + + + Returns a distance [0..1] of the specified sequences. + The smaller distance the more similar the sequences are. + + + Returns a distance [0..1] of the specified sequences. + The smaller distance the more similar the sequences are. + + + + + Calculates a list of "V arrays" using Eugene W. Myers O(ND) Difference Algorithm + + + + The algorithm was inspired by Myers' Diff Algorithm described in an article by Nicolas Butler: + https://www.codeproject.com/articles/42279/investigating-myers-diff-algorithm-part-of + The author has approved the use of his code from the article under the Apache 2.0 license. + + The algorithm works on an imaginary edit graph for A and B which has a vertex at each point in the grid(i, j), i in [0, lengthA] and j in [0, lengthB]. + The vertices of the edit graph are connected by horizontal, vertical, and diagonal directed edges to form a directed acyclic graph. + Horizontal edges connect each vertex to its right neighbor. + Vertical edges connect each vertex to the neighbor below it. + Diagonal edges connect vertex (i,j) to vertex (i-1,j-1) if (sequenceA[i-1],sequenceB[j-1]) is true. + + Move right along horizontal edge (i-1,j)-(i,j) represents a delete of sequenceA[i-1]. + Move down along vertical edge (i,j-1)-(i,j) represents an insert of sequenceB[j-1]. + Move along diagonal edge (i-1,j-1)-(i,j) represents an match of sequenceA[i-1] to sequenceB[j-1]. + The number of diagonal edges on the path from (0,0) to (lengthA, lengthB) is the length of the longest common sub. + + The function does not actually allocate this graph. Instead it uses Eugene W. Myers' O(ND) Difference Algoritm to calculate a list of "V arrays" and returns it in a Stack. + A "V array" is a list of end points of so called "snakes". + A "snake" is a path with a single horizontal (delete) or vertical (insert) move followed by 0 or more diagonals (matching pairs). + + Unlike the algorithm in the article this implementation stores 'y' indexes and prefers 'right' moves instead of 'down' moves in ambiguous situations + to preserve the behavior of the original diff algorithm (deletes first, inserts after). + + The number of items in the list is the length of the shortest edit script = the number of inserts/edits between the two sequences = D. + The list can be used to determine the matching pairs in the sequences (GetMatchingPairs method) or the full editing script (GetEdits method). + + The algorithm uses O(ND) time and memory where D is the number of delete/inserts and N is the sum of lengths of the two sequences. + + VArrays store just the y index because x can be calculated: x = y + k. + + + + + Calculates longest common substring using Wagner algorithm. + + + + + Returns an edit script (a sequence of edits) that transform subtree + to subtree. + + + + + Returns an edit script (a sequence of edits) that transform a sequence of nodes + to a sequence of nodes . + + or is a null reference. + + + + Represents an edit operation on a sequence of values. + + + + + The kind of edit: , , or . + + + + + Index in the old sequence, or -1 if the edit is insert. + + + + + Index in the new sequence, or -1 if the edit is delete. + + + + + Implements a tree differencing algorithm. + + + Subclasses define relationships among tree nodes, and parameters to the differencing algorithm. + + Tree node. + + + + Returns an edit script that transforms to . + + + + + Returns a match map of descendants to descendants. + + + + + Calculates the distance [0..1] of two nodes. + + + The more similar the nodes the smaller the distance. + + Used to determine whether two nodes of the same label match. + Even if 0 is returned the nodes might be slightly different. + + + + + Returns true if the specified nodes have equal values. + + + Called with matching nodes (, ). + Return true if the values of the nodes are the same, or their difference is not important. + + + + + The number of distinct labels used in the tree. + + + + + Returns an integer label corresponding to the given node. + + Returned value must be within [0, LabelCount). + + + + Returns N > 0 if the node with specified label can't change its N-th ancestor node, zero otherwise. + + + 1st ancestor is the node's parent node. + 2nd ancestor is the node's grandparent node. + etc. + + + + + May return null if the is a leaf. + + + + + Enumerates all descendant nodes of the given node in depth-first prefix order. + + + + + Returns a parent for the specified node. + + + + + Return true if specified nodes belong to the same tree. + + + + + Returns the position of the node. + + + + + This should contain only language-agnostic declarations. Things like record struct should fall under struct, etc. + + + + + Represents a class declaration, including record class declarations in C#. + + + + + Represents a struct declaration, including record struct declarations in C#. + + + + + Represents set accessor declaration of a property, including init accessors in C#. + + + + + An editor for making changes to a document's syntax tree. + + + + + Creates a new instance. + + + + + The specified when the editor was first created. + + + + + The of the original document. + + + + + Returns the changed . + + + + + Adds namespace imports / using directives for namespace references found in the document. + + + + + Adds namespace imports / using directives for namespace references found in the document within the span specified. + + + + + Adds namespace imports / using directives for namespace references found in the document within the sub-trees annotated with the . + + + + + Adds namespace imports / using directives for namespace references found in the document within the spans specified. + + + + + Adds namespace imports / using directives for namespace references found in the document. + + + + + Adds namespace imports / using directives for namespace references found in the document within the span specified. + + + + + Adds namespace imports / using directives for namespace references found in the document within the sub-trees annotated with the . + + + + + Adds namespace imports / using directives for namespace references found in the document within the spans specified. + + + + + Adds namespace imports / using directives for namespace references found in the document. + + + + + Adds namespace imports / using directives for namespace references found in the document within the span specified. + + + + + Adds namespace imports / using directives for namespace references found in the document within the sub-trees annotated with the . + + + + + Adds namespace imports / using directives for namespace references found in the document within the spans specified. + + + + + Looks at the contents of the document for top level identifiers (or existing extension method calls), and + blocks off imports that could potentially bring in a name that would conflict with them. + is the node that the import will be added to. This will either be the + compilation-unit node, or one of the namespace-blocks in the file. + + + + + Checks if the namespace declaration is contained inside, + or any of its ancestor namespaces are the same as + + + + + The name assigned to an implicit (widening) conversion. + + + + + The name assigned to an explicit (narrowing) conversion. + + + + + The name assigned to the Addition operator. + + + + + The name assigned to the BitwiseAnd operator. + + + + + The name assigned to the BitwiseOr operator. + + + + + The name assigned to the Decrement operator. + + + + + The name assigned to the Division operator. + + + + + The name assigned to the Equality operator. + + + + + The name assigned to the ExclusiveOr operator. + + + + + The name assigned to the False operator. + + + + + The name assigned to the GreaterThan operator. + + + + + The name assigned to the GreaterThanOrEqual operator. + + + + + The name assigned to the Increment operator. + + + + + The name assigned to the Inequality operator. + + + + + The name assigned to the LeftShift operator. + + + + + The name assigned to the LessThan operator. + + + + + The name assigned to the LessThanOrEqual operator. + + + + + The name assigned to the LogicalNot operator. + + + + + The name assigned to the Modulus operator. + + + + + The name assigned to the Multiply operator. + + + + + The name assigned to the OnesComplement operator. + + + + + The name assigned to the RightShift operator. + + + + + The name assigned to the Subtraction operator. + + + + + The name assigned to the True operator. + + + + + The name assigned to the UnaryNegation operator. + + + + + The name assigned to the UnaryPlus operator. + + + + + An editor for making changes to multiple documents in a solution. + + + + + The that was specified when the was constructed. + + + + + Gets the for the corresponding . + + + + + Returns the changed . + + + + + An editor for making changes to symbol source declarations. + + + + + Creates a new instance. + + + + + Creates a new instance. + + + + + The original solution. + + + + + The solution with the edits applied. + + + + + The documents changed since the was constructed. + + + + + Gets the current symbol for a source symbol. + + + + + Gets the current declarations for the specified symbol. + + + + + Gets the declaration syntax nodes for a given symbol. + + + + + Gets the best declaration node for adding members. + + + + + An action that make changes to a declaration node within a . + + The to apply edits to. + The declaration to edit. + + + + + An action that make changes to a declaration node within a . + + The to apply edits to. + The declaration to edit. + A cancellation token. + + + + + Enables editing the definition of one of the symbol's declarations. + Partial types and methods may have more than one declaration. + + The symbol to edit. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing the definition of one of the symbol's declarations. + Partial types and methods may have more than one declaration. + + The symbol to edit. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing the definition of one of the symbol's declarations. + Partial types and methods may have more than one declaration. + + The symbol to edit. + A location within one of the symbol's declarations. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing the definition of one of the symbol's declarations. + Partial types and methods may have more than one declaration. + + The symbol to edit. + A location within one of the symbol's declarations. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing the symbol's declaration where the member is also declared. + Partial types and methods may have more than one declaration. + + The symbol to edit. + A symbol whose declaration is contained within one of the primary symbol's declarations. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing the symbol's declaration where the member is also declared. + Partial types and methods may have more than one declaration. + + The symbol to edit. + A symbol whose declaration is contained within one of the primary symbol's declarations. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing all the symbol's declarations. + Partial types and methods may have more than one declaration. + + The symbol to be edited. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Enables editing all the symbol's declarations. + Partial types and methods may have more than one declaration. + + The symbol to be edited. + The action that makes edits to the declaration. + An optional . + The new symbol including the changes. + + + + Gets the reference to the declaration of the base or interface type as part of the symbol's declaration. + + + + + Changes the base type of the symbol. + + + + + Changes the base type of the symbol. + + + + + An editor for making changes to a syntax tree. + + + + + Creates a new instance. + + + + + The that was specified when the was constructed. + + + + + A to use to create and change 's. + + + + + Returns the changed root node. + + + + + Makes sure the node is tracked, even if it is not changed. + + + + + Remove the node from the tree. + + The node to remove that currently exists as part of the tree. + + + + Remove the node from the tree. + + The node to remove that currently exists as part of the tree. + Options that affect how node removal works. + + + + Replace the specified node with a node produced by the function. + + The node to replace that already exists in the tree. + A function that computes a replacement node. + The node passed into the compute function includes changes from prior edits. It will not appear as a descendant of the original root. + + + + Replace the specified node with a different node. + + The node to replace that already exists in the tree. + The new node that will be placed into the tree in the existing node's location. + + + + Insert the new nodes before the specified node already existing in the tree. + + The node already existing in the tree that the new nodes will be placed before. This must be a node this is contained within a syntax list. + The nodes to place before the existing node. These nodes must be of a compatible type to be placed in the same list containing the existing node. + + + + Insert the new node before the specified node already existing in the tree. + + The node already existing in the tree that the new nodes will be placed before. This must be a node this is contained within a syntax list. + The node to place before the existing node. This node must be of a compatible type to be placed in the same list containing the existing node. + + + + Insert the new nodes after the specified node already existing in the tree. + + The node already existing in the tree that the new nodes will be placed after. This must be a node this is contained within a syntax list. + The nodes to place after the existing node. These nodes must be of a compatible type to be placed in the same list containing the existing node. + + + + Insert the new node after the specified node already existing in the tree. + + The node already existing in the tree that the new nodes will be placed after. This must be a node this is contained within a syntax list. + The node to place after the existing node. This node must be of a compatible type to be placed in the same list containing the existing node. + + + + A language agnostic factory for creating syntax nodes. + + This API can be used to create language specific syntax nodes that are semantically + similar between languages. + + The trees generated by this API will try to respect user preferences when + possible. For example, generating + will be done in a way such that "this." or "Me." will be simplified according to user + preference if any + overload is called. + + + + + Gets the for the specified language. + + + + + Gets the for the language corresponding to the document. + + + + + Gets the for the language corresponding to the project. + + + + + Returns the node if it is a declaration, the immediate enclosing declaration if one exists, or null. + + + + + Returns the enclosing declaration of the specified kind or null. + + + + + Creates a field declaration. + + + + + Creates a field declaration matching an existing field symbol. + + + + + Creates a field declaration matching an existing field symbol. + + + + + Creates a method declaration. + + + + + Creates a method declaration matching an existing method symbol. + + + + + Creates a method declaration. + + + + + Creates a method declaration matching an existing method symbol. + + + + + Creates a parameter declaration. + + + + + Creates a parameter declaration matching an existing parameter symbol. + + + + + Creates a property declaration. The property will have a get accessor if + is and will have + a set accessor if is . + + + In C# there is a distinction between passing in for or versus + passing in an empty list. will produce an auto-property-accessor + (i.e. get;) whereas an empty list will produce an accessor with an empty block + (i.e. get { }). + + + + + Creates a property declaration using an existing property symbol as a signature. + + + + + Creates an indexer declaration. + + + + + Creates an indexer declaration matching an existing indexer symbol. + + + + + Creates a statement that adds the given handler to the given event. + + + + + Creates a statement that removes the given handler from the given event. + + + + + Creates an event declaration. + + + + + Creates an event declaration from an existing event symbol + + + + + Creates a custom event declaration. + + + + + Creates a custom event declaration from an existing event symbol. + + + + + Creates a constructor declaration. + + + + + Create a constructor declaration using + + + + + Converts method, property and indexer declarations into public interface implementations. + This is equivalent to an implicit C# interface implementation (you can access it via the interface or directly via the named member.) + + + + + Converts method, property and indexer declarations into public interface implementations. + This is equivalent to an implicit C# interface implementation (you can access it via the interface or directly via the named member.) + + + + + Converts method, property and indexer declarations into private interface implementations. + This is equivalent to a C# explicit interface implementation (you can declare it for access via the interface, but cannot call it directly). + + + + + Converts method, property and indexer declarations into private interface implementations. + This is equivalent to a C# explicit interface implementation (you can declare it for access via the interface, but cannot call it directly). + + + + + Creates a class declaration. + + + + + Creates a struct declaration. + + + + + Creates a interface declaration. + + + + + Creates an enum declaration. + + + + + Creates an enum declaration + + + + + Creates an enum member + + + + + Creates a delegate declaration. + + + + + Creates a declaration matching an existing symbol. + + + + + Converts a declaration (method, class, etc) into a declaration with type parameters. + + + + + Converts a declaration (method, class, etc) into a declaration with type parameters. + + + + + Adds a type constraint to a type parameter of a declaration. + + + + + Adds a type constraint to a type parameter of a declaration. + + + + + Adds a type constraint to a type parameter of a declaration. + + + + + Creates a namespace declaration. + + The name of the namespace. + Zero or more namespace or type declarations. + + + + Creates a namespace declaration. + + The name of the namespace. + Zero or more namespace or type declarations. + + + + Creates a namespace declaration. + + The name of the namespace. + Zero or more namespace or type declarations. + + + + Creates a namespace declaration. + + The name of the namespace. + Zero or more namespace or type declarations. + + + + Creates a compilation unit declaration + + Zero or more namespace import, namespace or type declarations. + + + + Creates a compilation unit declaration + + Zero or more namespace import, namespace or type declarations. + + + + Creates a namespace import declaration. + + The name of the namespace being imported. + + + + Creates a namespace import declaration. + + The name of the namespace being imported. + + + + Creates an alias import declaration. + + The name of the alias. + The namespace or type to be aliased. + + + + Creates an alias import declaration. + + The name of the alias. + The namespace or type to be aliased. + + + + Creates an attribute. + + + + + Creates an attribute. + + + + + Creates an attribute. + + + + + Creates an attribute matching existing attribute data. + + + + + Creates an attribute argument. + + + + + Creates an attribute argument. + + + + + Removes all attributes from the declaration, including return attributes. + + + + + Removes comments from leading and trailing trivia, as well + as potentially removing comments from opening and closing tokens. + + + + + Gets the attributes of a declaration, not including the return attributes. + + + + + Creates a new instance of the declaration with the attributes inserted. + + + + + Creates a new instance of the declaration with the attributes inserted. + + + + + Creates a new instance of a declaration with the specified attributes added. + + + + + Creates a new instance of a declaration with the specified attributes added. + + + + + Gets the return attributes from the declaration. + + + + + Creates a new instance of a method declaration with return attributes inserted. + + + + + Creates a new instance of a method declaration with return attributes inserted. + + + + + Creates a new instance of a method declaration with return attributes added. + + + + + Creates a new instance of a method declaration node with return attributes added. + + + + + Gets the attribute arguments for the attribute declaration. + + + + + Creates a new instance of the attribute with the arguments inserted. + + + + + Creates a new instance of the attribute with the arguments added. + + + + + Gets the namespace imports that are part of the declaration. + + + + + Creates a new instance of the declaration with the namespace imports inserted. + + + + + Creates a new instance of the declaration with the namespace imports inserted. + + + + + Creates a new instance of the declaration with the namespace imports added. + + + + + Creates a new instance of the declaration with the namespace imports added. + + + + + Gets the current members of the declaration. + + + + + Creates a new instance of the declaration with the members inserted. + + + + + Creates a new instance of the declaration with the members inserted. + + + + + Creates a new instance of the declaration with the members added to the end. + + + + + Creates a new instance of the declaration with the members added to the end. + + + + + Gets the accessibility of the declaration. + + + + + Changes the accessibility of the declaration. + + + + + Gets the for the declaration. + + + + + Changes the for the declaration. + + + + + Gets the for the declaration. + + + + + Gets the name of the declaration. + + + + + Changes the name of the declaration. + + + + + Gets the type of the declaration. + + + + + Changes the type of the declaration. + + + + + Gets the list of parameters for the declaration. + + + + + Inserts the parameters at the specified index into the declaration. + + + + + Adds the parameters to the declaration. + + + + + Gets the list of switch sections for the statement. + + + + + Inserts the switch sections at the specified index into the statement. + + + + + Adds the switch sections to the statement. + + + + + Gets the expression associated with the declaration. + + + + + Changes the expression associated with the declaration. + + + + + Gets the statements for the body of the declaration. + + + + + Changes the statements for the body of the declaration. + + + + + Gets the accessors for the declaration. + + + + + Gets the accessor of the specified kind for the declaration. + + + + + Creates a new instance of the declaration with the accessors inserted. + + + + + Creates a new instance of the declaration with the accessors added. + + + + + Gets the statements for the body of the get-accessor of the declaration. + + + + + Changes the statements for the body of the get-accessor of the declaration. + + + + + Gets the statements for the body of the set-accessor of the declaration. + + + + + Changes the statements for the body of the set-accessor of the declaration. + + + + + Gets a list of the base and interface types for the declaration. + + + + + Adds a base type to the declaration + + + + + Adds an interface type to the declaration + + + + + Replaces the node in the root's tree with the new node. + + + + + Inserts the new node before the specified declaration. + + + + + Inserts the new node before the specified declaration. + + + + + Removes the node from the sub tree starting at the root. + + + + + Removes the node from the sub tree starting at the root. + + + + + Removes all the declarations from the sub tree starting at the root. + + + + + Creates a new instance of the node with the leading and trailing trivia removed and replaced with elastic markers. + + + + + Creates statement that allows an expression to execute in a statement context. + This is typically an invocation or assignment expression. + + The expression that is to be executed. This is usually a method invocation expression. + + + + Creates a statement that can be used to return a value from a method body. + + An optional expression that can be returned. + + + + Creates a statement that can be used to yield a value from an iterator method. + + An expression that can be yielded. + + + + Creates a statement that can be used to throw an exception. + + An optional expression that can be thrown. + + + + Creates an expression that can be used to throw an exception. + + + + + True if can be used + + + + + if the language requires a + (including ) to be stated when making a + . + if the language allows the type node to be entirely elided. + + + + + Creates a statement that declares a single local variable. + + + + + Creates a statement that declares a single local variable. + + + + + Creates a statement that declares a single local variable. + + + + + Creates a statement that declares a single local variable. + + + + + Creates an if-statement + + A condition expression. + The statements that are executed if the condition is true. + The statements that are executed if the condition is false. + + + + Creates an if statement + + A condition expression. + The statements that are executed if the condition is true. + A single statement that is executed if the condition is false. + + + + Creates a switch statement that branches to individual sections based on the value of the specified expression. + + + + + Creates a switch statement that branches to individual sections based on the value of the specified expression. + + + + + Creates a section for a switch statement. + + + + + Creates a single-case section a switch statement. + + + + + Creates a default section for a switch statement. + + + + + Create a statement that exits a switch statement and continues after it. + + + + + Creates a statement that represents a using-block pattern. + + + + + Creates a statement that represents a using-block pattern. + + + + + Creates a statement that represents a using-block pattern. + + + + + Creates a statement that represents a lock-block pattern. + + + + + Creates a try-catch or try-catch-finally statement. + + + + + Creates a try-catch or try-catch-finally statement. + + + + + Creates a try-finally statement. + + + + + Creates a catch-clause. + + + + + Creates a catch-clause. + + + + + Creates a while-loop statement + + + + + Creates a block of statements. Not supported in VB. + + + + + An expression that represents the default value of a type. + This is typically a null value for reference types or a zero-filled value for value types. + + + + + Creates an expression that denotes the containing method's this-parameter. + + + + + Creates an expression that denotes the containing method's base-parameter. + + + + + Creates a literal expression. This is typically numeric primitives, strings or chars. + + + + + Creates an expression for a typed constant. + + + + + Creates an expression that denotes the boolean false literal. + + + + + Creates an expression that denotes the boolean true literal. + + + + + Creates an expression that denotes the null literal. + + + + + Creates an expression that denotes a simple identifier name. + + + + + + + Creates an expression that denotes a generic identifier name. + + + + + Creates an expression that denotes a generic identifier name. + + + + + Creates an expression that denotes a generic identifier name. + + + + + Creates an expression that denotes a generic identifier name. + + + + + Converts an expression that ends in a name into an expression that ends in a generic name. + If the expression already ends in a generic name, the new type arguments are used instead. + + + + + Converts an expression that ends in a name into an expression that ends in a generic name. + If the expression already ends in a generic name, the new type arguments are used instead. + + + + + Creates a name expression that denotes a qualified name. + The left operand can be any name expression. + The right operand can be either and identifier or generic name. + + + + + Returns a new name node qualified with the 'global' alias ('Global' in VB). + + + + + Creates a name expression from a dotted name string. + + + + + Creates a name that denotes a type or namespace. + + The symbol to create a name for. + + + + + Creates an expression that denotes a type. + + + + + Creates an expression that denotes a type. If addImport is false, + adds a which will prevent any + imports or usings from being added for the type. + + + + + Creates an expression that denotes a special type name. + + + + + Creates an expression that denotes an array type. + + + + + Creates an expression that denotes a nullable type. + + + + + Creates an expression that denotes a tuple type. + + + + + Creates an expression that denotes a tuple type. + + + + + Creates an expression that denotes a tuple type. + + + + + Creates an expression that denotes a tuple element. + + + + + Creates an expression that denotes a tuple element. + + + + + Creates an expression that denotes an assignment from the right argument to left argument. + + + + + Creates an expression that denotes a value-type equality test operation. + + + + + Creates an expression that denotes a reference-type equality test operation. + + + + + Creates an expression that denotes a value-type inequality test operation. + + + + + Creates an expression that denotes a reference-type inequality test operation. + + + + + Creates an expression that denotes a less-than test operation. + + + + + Creates an expression that denotes a less-than-or-equal test operation. + + + + + Creates an expression that denotes a greater-than test operation. + + + + + Creates an expression that denotes a greater-than-or-equal test operation. + + + + + Creates an expression that denotes a unary negation operation. + + + + + Creates an expression that denotes an addition operation. + + + + + Creates an expression that denotes an subtraction operation. + + + + + Creates an expression that denotes a multiplication operation. + + + + + Creates an expression that denotes a division operation. + + + + + Creates an expression that denotes a modulo operation. + + + + + Creates an expression that denotes a bitwise-and operation. + + + + + Creates an expression that denotes a bitwise-or operation. + + + + + Creates an expression that denotes a bitwise-not operation + + + + + Creates an expression that denotes a logical-and operation. + + + + + Creates an expression that denotes a logical-or operation. + + + + + Creates an expression that denotes a logical not operation. + + + + + Creates an expression that denotes a conditional evaluation operation. + + + + + Creates an expression that denotes a conditional access operation. Use and to generate the argument. + + + + + Creates an expression that denotes a member binding operation. + + + + + Creates an expression that denotes an element binding operation. + + + + + Creates an expression that denotes an element binding operation. + + + + + Creates an expression that denotes a coalesce operation. + + + + + Creates a member access expression. + + + + + Creates a member access expression. + + + + + Creates an array creation expression for a single dimensional array of specified size. + + + + + Creates an array creation expression for a single dimensional array with specified initial element values. + + + + + Creates an object creation expression. + + + + + Creates an object creation expression. + + + + + Creates an object creation expression. + + + + + Creates an object creation expression. + + + + + Creates a invocation expression. + + + + + Creates a invocation expression + + + + + Creates a node that is an argument to an invocation. + + + + + Creates a node that is an argument to an invocation. + + + + + Creates a node that is an argument to an invocation. + + + + + Creates an expression that access an element of an array or indexer. + + + + + Creates an expression that access an element of an array or indexer. + + + + + Creates an expression that evaluates to the type at runtime. + + + + + Creates an expression that denotes an is-type-check operation. + + + + + Creates an expression that denotes an is-type-check operation. + + + + + Creates an expression that denotes an try-cast operation. + + + + + Creates an expression that denotes an try-cast operation. + + + + + Creates an expression that denotes a type cast operation. + + + + + Creates an expression that denotes a type cast operation. + + + + + Creates an expression that denotes a type conversion operation. + + + + + Creates an expression that denotes a type conversion operation. + + + + + Creates an expression that declares a value returning lambda expression. + + + + + Creates an expression that declares a void returning lambda expression + + + + + Creates an expression that declares a value returning lambda expression. + + + + + Creates an expression that declares a void returning lambda expression. + + + + + Creates an expression that declares a single parameter value returning lambda expression. + + + + + Creates an expression that declares a single parameter void returning lambda expression. + + + + + Creates an expression that declares a single parameter value returning lambda expression. + + + + + Creates an expression that declares a single parameter void returning lambda expression. + + + + + Creates an expression that declares a zero parameter value returning lambda expression. + + + + + Creates an expression that declares a zero parameter void returning lambda expression. + + + + + Creates an expression that declares a zero parameter value returning lambda expression. + + + + + Creates an expression that declares a zero parameter void returning lambda expression. + + + + + Creates a lambda parameter. + + + + + Creates a lambda parameter. + + + + + Creates an await expression. + + + + + Wraps with parens. + + + + + Creates an nameof expression. + + + + + Creates an tuple expression. + + + + + Parses an expression from string + + + + + Has the reference type constraint (i.e. 'class' constraint in C#) + + + + + Has the value type constraint (i.e. 'struct' constraint in C#) + + + + + Has the constructor constraint (i.e. 'new' constraint in C#) + + + + + Internal extensions to . + + This interface is available in the shared CodeStyle and Workspaces layer to allow + sharing internal generator methods between them. Once the methods are ready to be + made public APIs, they can be moved to . + + + + + Creates a statement that declares a single local variable with an optional initializer. + + + + + Creates a statement that declares a single local variable. + + + + + Wraps with parens. + + + + + Creates a statement that can be used to yield a value from an iterator method. + + An expression that can be yielded. + + + + if the language requires a "TypeExpression" + (including ) to be stated when making a + . + if the language allows the type node to be entirely elided. + + + + + Produces an appropriate TypeSyntax for the given . The + flag controls how this should be created depending on if this node is intended for use in a type-only + context, or an expression-level context. In the former case, both C# and VB will create QualifiedNameSyntax + nodes for dotted type names, whereas in the latter case both languages will create MemberAccessExpressionSyntax + nodes. The final stringified result will be the same in both cases. However, the structure of the trees + will be substantively different, which can impact how the compilation layers analyze the tree and how + transformational passes affect it. + + + Passing in the right value for is necessary for correctness and for use + of compilation (and other) layers in a supported fashion. For example, if a QualifiedTypeSyntax is + sed in a place the compiler would have parsed out a MemberAccessExpression, then it is undefined behavior + what will happen if that tree is passed to any other components. + + + + + Abstract implementation of the C# and VB embedded language providers. + + + + + A 'fallback' embedded language that can classify normal escape sequences in + C# or VB strings if no other embedded languages produce results. + + + + + Services related to a specific embedded language. + + + + + A optional classifier that can produce s for an embedded language string. + + + + + Service that returns all the embedded languages supported. Each embedded language can expose + individual language services through the interface. + + + + + Represents an error in a embedded language snippet. The error contains the message to show + a user as well as the span of the error. This span is in actual user character coordinates. + For example, if the user has the string "...\\p{0}..." then the span of the error would be + for the range of characters for '\\p{0}' (even though the regex engine would only see the \\ + translated as a virtual char to the single \ character. + + + + + Retrieves only nodes, skipping the separator tokens + + + + + Root of the embedded language syntax hierarchy. EmbeddedSyntaxNodes are very similar to + Roslyn Red-Nodes in concept, though there are differences for ease of implementation. + + Similarities: + 1. Fully representative of the original source. All source VirtualChars are contained + in the Regex nodes. + 2. Specific types for Nodes, Tokens and Trivia. + 3. Uniform ways of deconstructing Nodes (i.e. ChildCount + ChildAt). + + Differences: + Note: these differences are not required, and can be changed if felt to be valuable. + 1. No parent pointers. These have not been needed yet. + 2. No Update methods. These have not been needed yet. + 3. No direct ways to get Positions/Spans of node/token/trivia. Instead, that information can + be acquired from the VirtualChars contained within those constructs. This does mean that + an empty node (for example, an empty RegexSequenceNode) effect has no way to simply ascertain + its location. So far that hasn't been a problem. + 4. No null nodes. Haven't been needed so far, and it keeps things extremely simple. For + example where Roslyn might have chosen an optional null child, the Regex hierarchy just + has multiple nodes. For example there are distinct nodes to represent the very similar + {a} {a,} {a,b} constructs. + + + + + Returns the string representation of this node, not including its leading and trailing trivia. + + The string representation of this node, not including its leading and trailing trivia. + The length of the returned string is always the same as Span.Length + + + + Returns full string representation of this node including its leading and trailing trivia. + + The full string representation of this node including its leading and trailing trivia. + The length of the returned string is always the same as FullSpan.Length + + + + Writes the node to a stringbuilder. + + If false, leading trivia will not be added + If false, trailing trivia will not be added + + + + Returns the value of the token. For example, if the token represents an integer capture, + then this property would return the actual integer. + + + + + Writes the token to a stringbuilder. + + If false, leading trivia will not be added + If false, trailing trivia will not be added + + + + Trivia on an . + + + + + A place for diagnostics to be stored during parsing. Not intended to be accessed + directly. These will be collected and aggregated into + + + + + Returns if the next two characters at tokenText[index] are {{ or + }}. If so, will contain the span of those two characters (based on starting at ). + + + + + Helper to convert simple string literals that escape quotes by doubling them. This is + how normal VB literals and c# verbatim string literals work. + + The start characters string. " in VB and @" in C# + + + + Helper service that takes the raw text of a string token and produces the individual + characters that raw string token represents (i.e. with escapes collapsed). The difference + between this and the result from token.ValueText is that for each collapsed character + returned the original span of text in the original token can be found. i.e. if you had the + following in C#: + + "G\u006fo" + + Then you'd get back: + + 'G' -> [0, 1) 'o' -> [1, 7) 'o' -> [7, 1) + + This allows for embedded language processing that can refer back to the users' original code + instead of the escaped value we're processing. + + + + + Takes in a string token and return the s corresponding to each + char of the tokens . In other words, for each char + in ValueText there will be a VirtualChar in the resultant array. Each VirtualChar will + specify what char the language considers them to represent, as well as the span of text + in the original that the language created that char from. + + For most chars this will be a single character span. i.e. 'c' -> 'c'. However, for + escapes this may be a multi character span. i.e. 'c' -> '\u0063' + + If the token is not a string literal token, or the string literal has any diagnostics on + it, then will be returned. Additionally, because a + VirtualChar can only represent a single char, while some escape sequences represent + multiple chars, will also be returned in those cases. All + these cases could be relaxed in the future. But they greatly simplify the + implementation. + + If this function succeeds, certain invariants will hold. First, each character in the + sequence of characters in .ValueText will become a single + VirtualChar in the result array with a matching property. + Similarly, each VirtualChar's will abut each other, and + the union of all of them will cover the span of the token's + *not* including the start and quotes. + + In essence the VirtualChar array acts as the information explaining how the of the token between the quotes maps to each character in the + token's . + + + + + Produces the appropriate escape version of to be placed in a + normal string literal. For example if is the tab + character, then this would produce t as \t is what would go into a string + literal. + + + + + provides a uniform view of a language's string token characters regardless if they + were written raw in source, or are the production of a language escape sequence. For example, in C#, in a + normal "" string a Tab character can be written either as the raw tab character (value 9 in + ASCII), or as \t. The format is a single character in the source, while the latter is two characters + (\ and t). will represent both, providing the raw + value of 9 as well as what in the original they occupied. + + + A core consumer of this system is the Regex parser. That parser wants to work over an array of characters, + however this array of characters is not the same as the array of characters a user types into a string in C# or + VB. For example In C# someone may write: @"\z". This should appear to the user the same as if they wrote "\\z" + and the same as "\\\u007a". However, as these all have wildly different presentations for the user, there needs + to be a way to map back the characters it sees ( '\' and 'z' ) back to the ranges of characters the user wrote. + + + + + The value of this as a if such a represention is possible. + s can represent Unicode codepoints that can appear in a except for + unpaired surrogates. If an unpaired high or low surrogate character is present, this value will be . The value of this character can be retrieved from + . + + + + + The unpaired high or low surrogate character that was encountered that could not be represented in . If is not , this will be 0. + + + + + The span of characters in the original that represent this . + + + + + Creates a new from the provided . This operation cannot + fail. + + + + + Creates a new from an unpaired high or low surrogate character. This will throw + if is not actually a surrogate character. The resultant + value will be . + + + + + Retrieves the scaler value of this character as an . If this is an unpaired surrogate + character, this will be the value of that surrogate. Otherwise, this will be the value of our . + + + + + Represents the individual characters that raw string token represents (i.e. with escapes collapsed). + The difference between this and the result from token.ValueText is that for each collapsed character + returned the original span of text in the original token can be found. i.e. if you had the + following in C#: + + "G\u006fo" + + Then you'd get back: + + 'G' -> [0, 1) 'o' -> [1, 7) 'o' -> [7, 1) + + This allows for embedded language processing that can refer back to the user's original code + instead of the escaped value we're processing. + + + + + Abstraction over a contiguous chunk of s. This + is used so we can expose s over an + or over a . The latter is especially useful for reducing + memory usage in common cases of string tokens without escapes. + + + + + Thin wrapper over an actual . + This will be the common construct we generate when getting the + for a string token that has escapes in it. + + + + + Represents a on top of a normal + string. This is the common case of the type of the sequence we would + create for a normal string token without any escapes in it. + + + + + The underlying string that we're returning virtual chars from. Note: + this will commonly include things like quote characters. Clients who + do not want that should then ask for an appropriate + back that does not include those characters. + + + + + The actual characters that this is a portion of. + + + + + The portion of that is being exposed. This span + is `[inclusive, exclusive)`. + + + + + Combines two s, producing a final + sequence that points at the same underlying data, but spans from the + start of to the end of . + + + + + Name of the host to be used in error messages (e.g. "Visual Studio"). + + + + + Show global error info. + + this kind error info should be something that affects whole roslyn such as + background compilation is disabled due to memory issue and etc + + + + + Show global info bar + + + + + The name to pattern match against, and to show in a final presentation layer. + + + + + An optional suffix to be shown in a presentation layer appended to . + Can be null. + + + + + Container of the symbol that can be shown in a final presentation layer. + For example, the container of a type "KeyValuePair" might be + "System.Collections.Generic.Dictionary<TKey, TValue>". This can + then be shown with something like "type System.Collections.Generic.Dictionary<TKey, TValue>" + to indicate where the symbol is located. + + + + + Dotted container name of the symbol, used for pattern matching. For example + The fully qualified container of a type "KeyValuePair" would be + "System.Collections.Generic.Dictionary" (note the lack of type parameters). + This way someone can search for "D.KVP" and have the "D" part of the pattern + match against this. This should not be shown in a presentation layer. + + + + + The names directly referenced in source that this type inherits from. + + + + + Provides helper methods for finding dependent projects across a solution that a given symbol can be referenced within. + + + + + This method computes the dependent projects that need to be searched for references of the given . + This computation depends on the given symbol's visibility: + 1) Public: Dependent projects include the symbol definition project and all the referencing projects. + 2) Internal: Dependent projects include the symbol definition project and all the referencing projects that have internals access to the definition project. + 3) Private: Dependent projects include the symbol definition project and all the referencing submission projects (which are special and can reference private fields of the previous submission). + + We perform this computation in two stages: + 1) Compute all the dependent projects (submission + non-submission) and their InternalsVisibleTo semantics to the definition project. + 2) Filter the above computed dependent projects based on symbol visibility. + Dependent projects computed in stage (1) are cached to avoid recomputation. + + + + + Returns a pair of data bout where originates from. It's for both source and metadata symbols, and an optional if this + was a symbol from source. + + + + + Provides helper methods for finding dependent types (derivations, implementations, etc.) across a solution. This + is effectively a graph walk between INamedTypeSymbols walking down the inheritance hierarchy to find related + types based either on or . + + + While walking up the inheritance hierarchy is trivial (as the information is directly contained on the 's themselves), walking down is complicated. The general way this works is by using + out-of-band indices that are built that store this type information in a weak manner. Specifically, for both + source and metadata types we have indices that map between the base type name and the inherited type name. i.e. + for the case class A { } class B : A { } the index stores a link saying "There is a type 'A' somewhere + which has derived type called 'B' somewhere". So when the index is examined for the name 'A', it will say + 'examine types called 'B' to see if they're an actual match'. + + These links are then continually traversed to get the full set of results. + + + + + Walks down a 's inheritance tree looking for more 's + that match the provided predicate. + + Called when a new match is found to check if that type's inheritance + tree should also be walked down. Can be used to stop the search early if a type could have no types that + inherit from it that would match this search. + If this search after finding the direct inherited types that match the provided + predicate, or if the search should continue recursively using those types as the starting point. + + + + Moves all the types in to . If these are types we + haven't seen before, and the caller says we on them, then add + them to for the next round of searching. + + + + + Finds all the documents in the provided project that contain the requested string + values + + + + + Finds all the documents in the provided project that contain a global attribute in them. + + + + + If the `node` implicitly matches the `symbol`, then it will be added to `locations`. + + + + + Find references to a symbol inside global suppressions. + For example, consider a field 'Field' defined inside a type 'C'. + This field's documentation comment ID is 'F:C.Field' + A reference to this field inside a global suppression would be as following: + [assembly: SuppressMessage("RuleCategory", "RuleId', Scope = "member", Target = "~F:C.Field")] + + + + + Validate and split a documentation comment ID into a prefix and complete symbol ID. For the + ~M:C.X(System.String), the would be + ~M: and would be C.X(System.String). + + + + + Split a full documentation symbol ID into the core symbol ID and optional parameter list. For the + C.X(System.String), the would be + C.X and would be (System.String). + + + + + Validate and split symbol documentation comment ID. + For example, "~M:C.X(System.String)" represents the documentation comment ID of a method named 'X' + that takes a single string-typed parameter and is contained in a type named 'C'. + + We divide the ID into 3 groups: + 1. Prefix: + - Starts with an optional '~' + - Followed by a single capital letter indicating the symbol kind (for example, 'M' indicates method symbol) + - Followed by ':' + 2. Core symbol ID, which is its fully qualified name before the optional parameter list and return type (i.e. before the '(' or '[' tokens) + 3. Optional parameter list and/or return type that begins with a '(' or '[' tokens. + + For the above example, "~M:" is the prefix, "C.X" is the core symbol ID and "(System.String)" is the parameter list. + + + + + Finds references to in this , but + only if it referenced though (which might be the actual name + of the type, or a global alias to it). + + + + + The actual node that we found the reference on. Normally the 'Name' portion + of any piece of syntax. Might also be something like a 'foreach' statement node + when finding results for something like GetEnumerator. + + + + + The location we want want to return through the FindRefs API. The location contains + additional information (like if this was a Write, or if it was Implicit). This value + also has a property. Importantly, this value + is not necessarily the same location you would get by calling .. Instead, this location is where we want to navigate + the user to. A case where this can be different is with an indexer reference. The will be the node for the full 'ElementAccessExpression', whereas the + location we will take the user to will be the zero-length position immediately preceding + the `[` character. + + + + + Extensibility interface to allow individual languages to extend the 'Find References' service. + Languages can use this to provide specialized cascading logic between symbols that 'Find + References' is searching for. + + + + + Extensibility interface to allow extending the IFindReferencesService service. Implementations + must be thread-safe as the methods on this interface may be called on multiple threads + simultaneously. Implementations should also respect the provided cancellation token and + should try to cancel themselves quickly when requested. + + + + + Determines what, if any, global alias names could potentially map this symbol in this project. + Note that this result is allowed to return global aliases that don't actually map to this symbol. + For example, given symbol A.X and global alias G = B.X, G might be returned + in a search for A.X because they both end in X. + + + + + Called by the find references search engine when a new symbol definition is found. + Implementations can then choose to request more symbols be searched for. For example, an + implementation could choose for the find references search engine to cascade to + constructors when searching for standard types. + + Implementations of this method must be thread-safe. + + + + + Called by the find references search engine to determine which documents in the supplied + project need to be searched for references. Only projects returned by + DetermineProjectsToSearch will be passed to this method. + + Implementations should endeavor to keep the list of returned documents as small as + possible to keep search time down to a minimum. Returning the entire list of documents + in a project is not recommended (unless, of course, there is reasonable reason to + believe there are references in every document). + + Implementations of this method must be thread-safe. + + + + + Called by the find references search engine to determine the set of reference locations + in the provided document. Only documents returned by DetermineDocumentsToSearch will be + passed to this method. + + Implementations of this method must be thread-safe. + + + + + Looks for documents likely containing in them. That name will either be the actual + name of the named type we're looking for, or it might be a global alias to it. + + + + + Finds references to in this , but + only if it referenced though (which might be the actual name + of the type, or a global alias to it). + + + + + Finds references to in this , but + only if it referenced though (which might be the actual name + of the type, or a global alias to it). + + + + + The list of common reference finders. + + + + + A does-nothing version of the . Useful for + clients that have no need to report progress as they work. + + + + + Symbol set used when is . This symbol set will cascade up *and* down the inheritance hierarchy for all symbols we + are searching for. This is the symbol set used for features like 'Rename', where all cascaded symbols must + be updated in order to keep the code compiling. + + + + + When we're cascading in both direction, we can just keep all symbols in a single set. We'll always be + examining all of them to go in both up and down directions in every project we process. Any time we + add a new symbol to it we'll continue to cascade in both directions looking for more. + + + + + Scheduler to run our tasks on. If we're in mode, we'll + run all our tasks concurrently. Otherwise, we will run them serially using + + + + + Mapping from symbols (unified across metadata/retargeting) and the set of symbols that was produced for + them in the case of linked files across projects. This allows references to be found to any of the unified + symbols, while the user only gets a single reported group back that corresponds to that entire set. + + + + + Notify the caller of the engine about the definitions we've found that we're looking for. We'll only notify + them once per symbol group, but we may have to notify about new symbols each time we expand our symbol set + when we walk into a new project. + + + + + A symbol set used when the find refs caller does not want cascading. This is a trivial impl that basically + just wraps the initial symbol provided and doesn't need to do anything beyond that. + + + + + Represents the set of symbols that the engine is searching for. While the find-refs engine is passed an + initial symbol to find results for, the engine will often have to 'cascade' that symbol to many more symbols + that clients will also need. This includes: + + Cascading to all linked symbols for the requested symbol. This ensures a unified set of results for a + particular symbol, regardless of what project context it was originally found in. + Symbol specific cascading. For example, when searching for a named type, references to that named + type will be found through its constructors. + Cascading up and down the inheritance hierarchy for members (e.g. methods, properties, events). This + is controllable through the + option. + + + + + + Get a copy of all the symbols in the set. Cannot be called concurrently with + + + + + Update the set of symbols in this set with any appropriate symbols in the inheritance hierarchy brought + in within . For example, given a project 'A' with interface interface IGoo + { void Goo(); }, and a project 'B' with class class Goo : IGoo { public void Goo() { } }, + then initially the symbol set will only contain IGoo.Goo. However, when project 'B' is processed, this + will add Goo.Goo is added to the set as well so that references to it can be found. + + + This method is non threadsafe as it mutates the symbol set instance. As such, it should only be + called serially. should not be called concurrently with this. + + + + + Determines the initial set of symbols that we should actually be finding references for given a request + to find refs to . This will include any symbols that a specific cascades to, as well as all the linked symbols to those across any + multi-targetting/shared-project documents. This will not include symbols up or down the inheritance + hierarchy. + + + + + Finds all the symbols 'down' the inheritance hierarchy of in the given + project. The symbols found are added to . If did not + contain that symbol, then it is also added to to allow fixed point + algorithms to continue. + + will always be a single project. We just pass this in as a set to + avoid allocating a fresh set every time this calls into FindMemberImplementationsArrayAsync. + + + + + Finds all the symbols 'up' the inheritance hierarchy of in the solution. The + symbols found are added to . If did not contain that symbol, + then it is also added to to allow fixed point algorithms to continue. + + + + + Symbol set used when is . This symbol set will only cascade in a uniform direction once it walks either up or down + from the initial set of symbols. This is the symbol set used for features like 'Find Refs', where we only + want to return location results for members that could feasible actually end up calling into that member at + runtime. See the docs of for more + information on this. + + + + + When we're doing a unidirectional find-references, the initial set of up-symbols can never change. + That's because we have computed the up set entirely up front, and no down symbols can produce new + up-symbols (as going down then up would not be unidirectional). + + + + + When searching for property, associate specific references we find to the relevant + accessor symbol (if there is one). For example, in C#, this would result in: + + P = 0; // A reference to the P.set accessor + var v = P; // A reference to the P.get accessor + P++; // A reference to P.get and P.set accessors + nameof(P); // A reference only to P. Not associated with a particular accessor. + + The default for this is false. With that default, all of the above references + are associated with the property P and not the accessors. + + + + + Whether or not we should cascade from the original search symbol to new symbols as we're + doing the find-references search. + + + + + Whether or not this find ref operation was explicitly invoked or not. If explicit invoked, the find + references operation may use more resources to get the results faster. + + + Features that run automatically should consider setting this to to avoid + unnecessarily impacting the user while they are doing other work. + + + + + When cascading if we should only travel in a consistent direction away from the starting symbol. For + example, starting on a virtual method, this would cascade upwards to implemented interface methods, and + downwards to overridden methods. However, it would not then travel back down to other implementations of + those interface methods. This is useful for cases where the client only wants references that could lead to + this symbol actually being called into at runtime. + + + There are cases where a client will not want this behavior. An example of that is 'Rename'. In rename, + there is a implicit link between members in a hierarchy with the same name (and appropriate signature). For example, in: + + + interface I { void Goo(); } + class C1 : I { public void Goo() { } } + class C2 : I { public void Goo() { } } + + + If C1.Goo is renamed, this will need to rename C2.Goo as well to keep the code properly + compiling. So, by default 'Rename' will cascade to all of these so it can appropriately update them. This + option is the more relevant with knowing if a particular reference would actually result in a call to the + original member, not if it has a relation to the original member. + + + + + Returns the appropriate options for a given symbol for the specific 'Find References' feature. This should + not be used for other features (like 'Rename'). For the 'Find References' feature, if the user starts + searching on an accessor, then we want to give results associated with the specific accessor. Otherwise, if + they search on a property, then associate everything with the property. We also only want to travel an + inheritance hierarchy unidirectionally so that we only see potential references that could actually reach + this particular member. + + + + + A does-nothing version of the . Useful for + clients that have no need to report progress as they work. + + + + + Wraps an into an + so it can be used from the new streaming find references APIs. + + + + + Reports the progress of the FindReferences operation. Note: these methods may be called on + any thread. + + + + + Represents a group of s that should be treated as a single entity for + the purposes of presentation in a Find UI. For example, when a symbol is defined in a file + that is linked into multiple project contexts, there will be several unique symbols created + that we search for. Placing these in a group allows the final consumer to know that these + symbols can be merged together. + + + + + All the symbols in the group. + + + + + Reports the progress of the FindReferences operation. Note: these methods may be called on + any thread. + + + + + Represents a single result of the call to the synchronous + IFindReferencesService.FindReferences method. Finding the references to a symbol will result + in a set of definitions being returned (containing at least the symbol requested) as well as + any references to those definitions in the source. Multiple definitions may be found due to + how C# and VB allow a symbol to be both a definition and a reference at the same time (for + example, a method which implements an interface method). + + + + + The symbol definition that these are references to. + + + + + Same as but exposed as an for performance. + + + + + The set of reference locations in the solution. + + + + + Information about a reference to a symbol. + + + + + The document that the reference was found in. + + + + + If the symbol was bound through an alias, then this is the alias that was used. + + + + + The actual source location for a given symbol. + + + + + Indicates if this is an implicit reference to the definition. i.e. the definition wasn't + explicitly stated in the source code at this position, but it was still referenced. For + example, this can happen with special methods like GetEnumerator that are used + implicitly by a 'for each' statement. + + + + + Indicates if this is a location where the reference is written to. + + + + + Symbol usage info for this reference. + + + + + Additional properties for this reference + + + + + If this reference location is within a string literal, then this property + indicates the location of the containing string literal token. + Otherwise, . + + + + + Creates a reference location with the given properties. + + + + + Creates a reference location within a string literal. + For example, location inside the target string of a global SuppressMessageAttribute. + + + + + Indicates if this was not an exact reference to a location, but was instead a possible + location that was found through error tolerance. For example, a call to a method like + "Goo()" could show up as an error tolerance location to a method "Goo(int i)" if no + actual "Goo()" method existed. + + + + + Use an case-sensitive comparison when searching for matching items. + + + + + Use a case-insensitive comparison when searching for matching items. + + + + + Use a fuzzy comparison when searching for matching items. Fuzzy matching allows for + a certain amount of misspellings, missing words, etc. See for + more details. + + + + + Search term is matched in a custom manner (i.e. with a user provided predicate). + + + + The name being searched for. Is null in the case of custom predicate searching.. But + can be used for faster index based searching when it is available. + + + The kind of search this is. Faster index-based searching can be used if the + SearchKind is not . + + + The predicate to fall back on if faster index searching is not possible. + + + + Collects all the definitions and + references that are reported independently and packages them up into the final list + of . This is used by the old non-streaming Find-References + APIs to return all the results at the end of the operation, as opposed to broadcasting + the results as they are found. + + + + + Contains information about a call from one symbol to another. The symbol making the call is + stored in CallingSymbol and the symbol that the call was made to is stored in CalledSymbol. + Whether or not the call is direct or indirect is also stored. A direct call is a call that + does not go through any other symbols in the inheritance hierarchy of CalledSymbol, while an + indirect call does go through the inheritance hierarchy. For example, calls through a base + member that this symbol overrides, or through an interface member that this symbol + implements will be considered 'indirect'. + + + + + The symbol that is calling the symbol being called. + + + + + The locations inside the calling symbol where the called symbol is referenced. + + + + + The symbol being called. + + + + + True if the CallingSymbol is directly calling CalledSymbol. False if it is calling a + symbol in the inheritance hierarchy of the CalledSymbol. For example, if the called + symbol is a class method, then an indirect call might be through an interface method that + the class method implements. + + + + + Obsolete. Use . + + + + + Finds the symbol that is associated with a position in the text of a document. + + The semantic model associated with the document. + The character position within the document. + A workspace to provide context. + A CancellationToken. + + + + Finds the definition symbol declared in source code for a corresponding reference symbol. + Returns null if no such symbol can be found in the specified solution. + + + + + Finds symbols in the given compilation that are similar to the specified symbol. + + A found symbol may be the exact same symbol instance if the compilation is the origin of the specified symbol, + or it may be a different symbol instance if the compilation is not the originating compilation. + + Multiple symbols may be returned if there are ambiguous matches. + No symbols may be returned if the compilation does not define or have access to a similar symbol. + + The symbol to find corresponding matches for. + A compilation to find the corresponding symbol within. The compilation may or may not be the origin of the symbol. + A CancellationToken. + + + + + If is declared in a linked file, then this function returns all the symbols that + are defined by the same symbol's syntax in the all projects that the linked file is referenced from. + + In order to be returned the other symbols must have the same and as . This matches general user intuition that these are all + the 'same' symbol, and should be examined, regardless of the project context and they + originally started with. + + + + + Callback object we pass to the OOP server to hear about the result + of the FindReferencesEngine as it executes there. + + + + + Finds all the callers of a specified symbol. + + + + + Finds all the callers of a specified symbol. + + + + + Find the declared symbols from either source, referenced projects or metadata assemblies with the specified name. + + + + + Find the declared symbols from either source, referenced projects or metadata assemblies with the specified name. + + + + + Find the symbols for declarations made in source with a matching name. + + + + + Find the symbols for declarations made in source with a matching name. + + + + + Find the symbols for declarations made in source with a matching name. + + + + + Find the symbols for declarations made in source with a matching name. + + + + + Find the symbols for declarations made in source with the specified name. + + + + + Find the symbols for declarations made in source with the specified name. + + + + + Find the symbols for declarations made in source with the specified name. + + + + + Find the symbols for declarations made in source with the specified name. + + + + + Find the symbols for declarations made in source with the specified pattern. This pattern is matched + using heuristics that may change from release to release. So, the set of symbols matched by a given + pattern may change between releases. For example, new symbols may be matched by a pattern and/or + symbols previously matched by a pattern no longer are. However, the set of symbols matched by a + specific release will be consistent for a specific pattern. + + + + + Find the symbols for declarations made in source with the specified pattern. This pattern is matched + using heuristics that may change from release to release. So, the set of symbols matched by a given + pattern may change between releases. For example, new symbols may be matched by a pattern and/or + symbols previously matched by a pattern no longer are. However, the set of symbols matched by a + specific release will be consistent for a specific pattern. + + + + + Find the symbols for declarations made in source with the specified pattern. This pattern is matched + using heuristics that may change from release to release. So, the set of symbols matched by a given + pattern may change between releases. For example, new symbols may be matched by a pattern and/or + symbols previously matched by a pattern no longer are. However, the set of symbols matched by a + specific release will be consistent for a specific pattern. + + + + + Find the symbols for declarations made in source with the specified pattern. This pattern is matched + using heuristics that may change from release to release. So, the set of symbols matched by a given + pattern may change between releases. For example, new symbols may be matched by a pattern and/or + symbols previously matched by a pattern no longer are. However, the set of symbols matched by a + specific release will be consistent for a specific pattern. + + + + + Finds all references to a symbol throughout a solution + + The symbol to find references to. + The solution to find references within. + A cancellation token. + + + + Finds all references to a symbol throughout a solution + + The symbol to find references to. + The solution to find references within. + A set of documents to be searched. If documents is null, then that means "all documents". + A cancellation token. + + + + Finds all references to a symbol throughout a solution + + The symbol to find references to. + The solution to find references within. + An optional progress object that will receive progress + information as the search is undertaken. + An optional set of documents to be searched. If documents is null, then that means "all documents". + An optional cancellation token. + + + + Verifies that all pairs of named types in equivalentTypesWithDifferingAssemblies are equivalent forwarded types. + + + + + Returns if was forwarded to in + 's . + + + + + Find symbols for members that override the specified member symbol. + + + + + + Use this overload to avoid boxing the result into an . + + + + + Find symbols for declarations that implement members of the specified interface symbol + + + + + + Use this overload to avoid boxing the result into an . + + + + + Finds all the derived classes of the given type. Implementations of an interface are not considered + "derived", but can be found with . + + The symbol to find derived types of. + The solution to search in. + The projects to search. Can be null to search the entire solution. + + The derived types of the symbol. The symbol passed in is not included in this list. + + + + Finds the derived classes of the given type. Implementations of an interface are not considered + "derived", but can be found with . + + The symbol to find derived types of. + The solution to search in. + If the search should stop at immediately derived classes, or should continue past that. + The projects to search. Can be null to search the entire solution. + + The derived types of the symbol. The symbol passed in is not included in this list. + + + + Use this overload to avoid boxing the result into an . + + + + Finds the derived interfaces of the given interfaces. + + The symbol to find derived types of. + The solution to search in. + If the search should stop at immediately derived interfaces, or should continue past that. + The projects to search. Can be null to search the entire solution. + The derived interfaces of the symbol. The symbol passed in is not included in this list. + + + + Use this overload to avoid boxing the result into an . + + + + Finds the accessible or types that implement the given + interface. + + The symbol to find derived types of. + The solution to search in. + If the search should stop at immediately derived interfaces, or should continue past that. + The projects to search. Can be null to search the entire solution. + + + + Use this overload to avoid boxing the result into an . + + + + Finds all the accessible symbols that implement an interface or interface member. For an this will be both immediate and transitive implementations. + + + + + + Use this overload to avoid boxing the result into an . + + + + + Returns null if the info cannot be retrieved from the cache. + + + + + Returns null if the info cannot be retrieved from the cache. + + + + + The list of nodes that represent symbols. The primary key into the sorting of this + list is the name. They are sorted case-insensitively with the . + Finding case-sensitive matches can be found by binary searching for something that + matches insensitively, and then searching around that equivalence class for one that + matches. + + + + + Inheritance information for the types in this assembly. The mapping is between + a type's simple name (like 'IDictionary') and the simple metadata names of types + that implement it or derive from it (like 'Dictionary'). + + Note: to save space, all names in this map are stored with simple ints. These + ints are the indices into _nodes that contain the nodes with the appropriate name. + + This mapping is only produced for metadata assemblies. + + + + + Maps the name of receiver type name to its . + for the definition of simple/complex methods. + For non-array simple types, the receiver type name would be its metadata name, e.g. "Int32". + For any array types with simple type as element, the receiver type name would be just "ElementTypeName[]", e.g. "Int32[]" for int[][,] + For non-array complex types, the receiver type name is "". + For any array types with complex type as element, the receier type name is "[]" + + + + + The task that produces the spell checker we use for fuzzy match queries. + We use a task so that we can generate the + without having to wait for the spell checker construction to finish. + + Features that don't need fuzzy matching don't want to incur the cost of + the creation of this value. And the only feature which does want fuzzy + matching (add-using) doesn't want to block waiting for the value to be + created. + + + + + Finds symbols in this assembly that match the provided name in a fuzzy manner. + + + + + Get all symbols that have a name matching the specified name. + + + + + Gets all the node indices with matching names per the . + + + + + Searches for a name in the ordered list that matches per the . + + + + + Cache the symbol tree infos for assembly symbols that share the same underlying metadata. Generating symbol + trees for metadata can be expensive (in large metadata cases). And it's common for us to have many threads + to want to search the same metadata simultaneously. As such, we use an AsyncLazy to compute the value that + can be shared among all callers. + + + + + Used to produce the simple-full-name components of a type from metadata. + The name is 'simple' in that it does not contain things like backticks, + generic arguments, or nested type + separators. Instead just hte name + of the type, any containing types, and the component parts of its namespace + are added. For example, for the type "X.Y.O`1.I`2, we will produce [X, Y, O, I] + + + + + + s are produced when initially creating our indices. + They store Names of symbols and the index of their parent symbol. When we + produce the final though we will then convert + these to s. + + + + + The Name of this Node. + + + + + Index in of the parent Node of this Node. + Value will be if this is the + Node corresponding to the root symbol. + + + + + This is the type name of the parameter when is false. + For array types, this is just the elemtent type name. + e.g. `int` for `int[][,]` + + + + + Indicate if the type of parameter is any kind of array. + This is relevant for both simple and complex types. For example: + - array of simple type like int[], int[][], int[][,], etc. are all ultimately represented as "int[]" in index. + - array of complex type like T[], T[][], etc are all represented as "[]" in index, + in contrast to just "" for non-array types. + + + + + Similar to , we divide extension methods into simple + and complex categories for filtering purpose. Whether a method is simple is determined based on if we + can determine it's receiver type easily with a pure text matching. For complex methods, we will need to + rely on symbol to decide if it's feasible. + + Simple types include: + - Primitive types + - Types which is not a generic method parameter + - By reference type of any types above + - Array types with element of any types above + + + + + Name of the extension method. + This can be used to retrive corresponding symbols via + + + + + Fully qualified name for the type that contains this extension method. + + + + + Produces a for a given . + Note: will never return null; + + + + + Only applies to member kind. Represents the type info of the first parameter. + + + + + Loads the SpellChecker for a given assembly symbol (metadata or project). If the + info can't be loaded, it will be created (and persisted if possible). + + + + + Generalized function for loading/creating/persisting data. Used as the common core + code for serialization of SymbolTreeInfos and SpellCheckers. + + + + + Cache of project to the checksum for it so that we don't have to expensively recompute + this each time we get a project. + + + + + Name of the extension method's receiver type to the index of its DeclaredSymbolInfo in `_declarationInfo`. + + For simple types, the receiver type name is it's metadata name. All predefined types are converted to its metadata form. + e.g. int => Int32. For generic types, type parameters are ignored. + + For complex types, the receiver type name is "". + + For any kind of array types, it's "{element's receiver type name}[]". + e.g. + int[][,] => "Int32[]" + T (where T is a type parameter) => "" + T[,] (where T is a type parameter) => "T[]" + + + + + Returns true when the identifier is probably (but not guaranteed) to be within the + syntax tree. Returns false when the identifier is guaranteed to not be within the + syntax tree. + + + + + Returns true when the identifier is probably (but not guaranteed) escaped within the + text of the syntax tree. Returns false when the identifier is guaranteed to not be + escaped within the text of the syntax tree. An identifier that is not escaped within + the text can be found by searching the text directly. An identifier that is escaped can + only be found by parsing the text and syntactically interpreting any escaping + mechanisms found in the language ("\uXXXX" or "@XXXX" in C# or "[XXXX]" in Visual + Basic). + + + + + Returns true when the identifier is probably (but not guaranteed) to be within the + syntax tree. Returns false when the identifier is guaranteed to not be within the + syntax tree. + + + + + String interning table so that we can share many more strings in our DeclaredSymbolInfo + buckets. Keyed off a Project instance so that we share all these strings as we create + the or load the index items for this a specific Project. This helps as we will generally + be creating or loading all the index items for the documents in a Project at the same time. + Once this project is let go of (which happens with any solution change) then we'll dump + this string table. The table will have already served its purpose at that point and + doesn't need to be kept around further. + + + + + Same as , just stored as a set for easy containment checks. + + + + + Gets the set of global aliases that point to something with the provided name and arity. + For example of there is global alias X = A.B.C<int>, then looking up with + name="C" and arity=1 will return X. + + + + + Base implementation of C# and VB formatting services. + + + + + Formats whitespace in documents or syntax trees. + + + + + The annotation used to mark portions of a syntax tree to be formatted. + + + + + Gets the formatting rules that would be applied if left unspecified. + + + + + Gets the formatting rules that would be applied if left unspecified. + + + + + Formats the whitespace in a document. + + The document to format. + An optional set of formatting options. If these options are not supplied the current set of options from the document's workspace will be used. + An optional cancellation token. + The formatted document. + + + + Formats the whitespace in an area of a document corresponding to a text span. + + The document to format. + The span of the document's text to format. + An optional set of formatting options. If these options are not supplied the current set of options from the document's workspace will be used. + An optional cancellation token. + The formatted document. + + + + Formats the whitespace in areas of a document corresponding to multiple non-overlapping spans. + + The document to format. + The spans of the document's text to format. + An optional set of formatting options. If these options are not supplied the current set of options from the document's workspace will be used. + An optional cancellation token. + The formatted document. + + + + Formats the whitespace in areas of a document corresponding to annotated nodes. + + The document to format. + The annotation used to find on nodes to identify spans to format. + An optional set of formatting options. If these options are not supplied the current set of options from the document's workspace will be used. + An optional cancellation token. + The formatted document. + + + + Formats the whitespace in areas of a syntax tree corresponding to annotated nodes. + + The root node of a syntax tree to format. + The annotation used to find nodes to identify spans to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The formatted tree's root node. + + + + Formats the whitespace of a syntax tree. + + The root node of a syntax tree to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The formatted tree's root node. + + + + Formats the whitespace in areas of a syntax tree identified by a span. + + The root node of a syntax tree to format. + The span within the node's full span to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The formatted tree's root node. + + + + Formats the whitespace in areas of a syntax tree identified by multiple non-overlapping spans. + + The root node of a syntax tree to format. + The spans within the node's full span to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The formatted tree's root node. + + + + Determines the changes necessary to format the whitespace of a syntax tree. + + The root node of a syntax tree to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The changes necessary to format the tree. + + + + Determines the changes necessary to format the whitespace of a syntax tree. + + The root node of a syntax tree to format. + The span within the node's full span to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The changes necessary to format the tree. + + + + Determines the changes necessary to format the whitespace of a syntax tree. + + The root node of a syntax tree to format. + The spans within the node's full span to format. + A workspace used to give the formatting context. + An optional set of formatting options. If these options are not supplied the current set of options from the workspace will be used. + An optional cancellation token. + The changes necessary to format the tree. + + + + Organizes the imports in the document. + + The document to organize. + The cancellation token that the operation will observe. + The document with organized imports. If the language does not support organizing imports, or if no changes were made, this method returns . + + + + Solution-wide formatting options. + + + + + Default value of 120 was picked based on the amount of code in a github.com diff at 1080p. + That resolution is the most common value as per the last DevDiv survey as well as the latest + Steam hardware survey. This also seems to a reasonable length default in that shorter + lengths can often feel too cramped for .NET languages, which are often starting with a + default indentation of at least 16 (for namespace, class, member, plus the final construct + indentation). + + TODO: Currently the option has no storage and always has its default value. See https://github.com/dotnet/roslyn/pull/30422#issuecomment-436118696. + + + + + TODO: Currently the option has no storage and always has its default value. + + + + + + + + + + + + + + + + + + + + + + + Formats the whitespace in areas of a document corresponding to multiple non-overlapping spans. + + The document to format. + The spans of the document's text to format. If null, the entire document should be formatted. + An optional set of formatting options. If these options are not supplied the current set of options from the document's workspace will be used. + An optional cancellation token. + The formatted document. + + + + Provide a custom formatting operation provider that can intercept/filter/replace default formatting operations. + + All methods defined in this class can be called concurrently. Must be thread-safe. + + + + Returns SuppressWrappingIfOnSingleLineOperations under a node either by itself or by + filtering/replacing operations returned by NextOperation + + + + + returns AnchorIndentationOperations under a node either by itself or by filtering/replacing operations returned by NextOperation + + + + + returns IndentBlockOperations under a node either by itself or by filtering/replacing operations returned by NextOperation + + + + + returns AlignTokensOperations under a node either by itself or by filtering/replacing operations returned by NextOperation + + + + + returns AdjustNewLinesOperation between two tokens either by itself or by filtering/replacing a operation returned by NextOperation + + + + + returns AdjustSpacesOperation between two tokens either by itself or by filtering/replacing a operation returned by NextOperation + + + + + Returns SuppressWrappingIfOnSingleLineOperations under a node either by itself or by + filtering/replacing operations returned by NextOperation + + + + + returns AnchorIndentationOperations under a node either by itself or by filtering/replacing operations returned by NextOperation + + + + + returns IndentBlockOperations under a node either by itself or by filtering/replacing operations returned by NextOperation + + + + + returns AlignTokensOperations under a node either by itself or by filtering/replacing operations returned by NextOperation + + + + + returns AdjustNewLinesOperation between two tokens either by itself or by filtering/replacing a operation returned by NextOperation + + + + + returns AdjustSpacesOperation between two tokens either by itself or by filtering/replacing a operation returned by NextOperation + + + + + indicate how many lines are needed between two tokens + + + + + Options for . + + + + + the operation will leave lineBreaks as it is if original lineBreaks are equal or greater than given lineBreaks + + + + the operation will force existing lineBreaks to the given lineBreaks + + + + + + + indicate how many spaces are needed between two spaces + + + + + Options for . + + + + + Preserve spaces as it is + + + + + means a default space operation created by the formatting + engine by itself. It has its own option kind to indicates that this is an operation + generated by the engine itself. + + + + + means forcing the specified spaces between two tokens if two + tokens are on a single line. + + + + + means forcing the specified spaces regardless of positions of two tokens. + + + + + If two tokens are on a single line, second token will be placed at current indentation if possible + + + + + align first tokens on lines among the given tokens to the base token + + + + + option to control behavior + + + + + preserve relative spaces between anchor token and first tokens on lines within the given text span + as long as it doesn't have explicit line operations associated with them + + + + + create anchor indentation region around start and end token + start token will act as anchor token and right after anchor token to end of end token will become anchor region + + + + + create anchor indentation region more explicitly by providing all necessary information. + + + + + create suppress region around start and end token + + + + + create suppress region around the given text span + + + + + create indent block region around the start and end token with the given indentation delta added to the existing indentation at the position of the start token + + + + + create indent block region around the given text span with the given indentation delta added to the existing indentation at the position of the start token + + + + + create indent block region around the start and end token with the given indentation delta added to the column of the base token + + + + + create indent block region around the given text span with the given indentation delta added to the column of the base token + + + + + instruct the engine to try to align first tokens on the lines among the given tokens to be aligned to the base token + + + + + instruct the engine to try to put the give lines between two tokens + + + + + instruct the engine to try to put the given spaces between two tokens + + + + + return SuppressOperation for the node provided by the given formatting rules + + + + + return AnchorIndentationOperation for the node provided by the given formatting rules + + + + + return IndentBlockOperation for the node provided by the given formatting rules + + + + + return AlignTokensOperation for the node provided by the given formatting rules + + + + + return AdjustNewLinesOperation for the node provided by the given formatting rules + + + + + return AdjustSpacesOperation for the node provided by the given formatting rules + + + + + set indentation level for the given text span. it can be relative, absolute or dependent to other tokens + + + + + Options for . + + + + + This indentation will be a delta to the first token in the line in which the base token is present + + + + + will be interpreted as delta of its enclosing indentation + + + + + will be interpreted as absolute position + + + + + Mask for relative position options + + + + + Mask for position options. + + + Each specifies one of the position options to indicate the primary + behavior for the operation. + + + + + Increase the if the block is part of a + condition of the anchor token. For example: + + + if (value is + { // This open brace token is part of a condition of the 'if' token. + Length: 2 + }) + + + + + + suppress formatting operations within the given text span + + + + + Options for . + + + + + no wrapping if given tokens are on same line + + + + no wrapping regardless of relative positions of two tokens + + + + no spacing regardless of relative positions of two tokens + + + + + + + Completely disable formatting within a span. + + + + + a tweaked version of our interval tree to meet the formatting engine's need + + it now has an ability to return a smallest span that contains a position rather than + all Intersecting or overlapping spans + + + + + this class maintain contextual information such as + indentation of current position, based token to follow in current position and etc. + + + + + data that will be used in an interval tree related to Anchor. + + + + + data that will be used in an interval tree related to indentation. + + + + + data that will be used in an interval tree related to suppressing spacing operations. + + + + + data that will be used in an interval tree related to suppressing wrapping operations. + + + + + rewrite the node with the given trivia information in the map + + + + + return summary for current formatting work + + + + + this actually applies formatting operations to trivia between two tokens + + + + + span in the tree to format + + + + + rewrite the tree info root node with the trivia information in the map + + + + + represents a general trivia between two tokens. slightly more expensive than others since it + needs to calculate stuff unlike other cases + + + + + this collector gathers formatting operations that are based on a node + + + + + it represents a token that is inside of token stream not also outside of token stream + + it uses an index to navigate previous and after tokens in the stream to make navigation faster. and regular + Previous/NextToken for tokens outside of the stream. + + this object is supposed to be live very short but created a lot of time. that is why it is struct. + (same reason why SyntaxToken is struct - to reduce heap allocation) + + + + + it holds onto space and wrapping operation need to run between two tokens. + + + + + This class takes care of tokens consumed in the formatting engine. + + It will maintain information changed compared to original token information. and answers + information about tokens. + + + + + Thread-safe collection that holds onto changes + + + + + Get column of the token + * column means text position on a line where all tabs are converted to spaces that first position on a line becomes 0 + + + + + this provides information about the syntax tree formatting service is formatting. + this provides necessary abstraction between different kinds of syntax trees so that ones that contain + actual text or cache can answer queries more efficiently. + + + + + it holds onto trivia information between two tokens + + + + + This is the ID reported for formatting diagnostics. + + + + + This special diagnostic can be suppressed via #pragma to prevent the formatter from making changes to + code formatting within the span where the diagnostic is suppressed. + + + + + Formatting options stored in editorconfig. + + + + + Contains changes that can be either applied to different targets such as a buffer or a tree + or examined to be used in other places such as quick fix. + + + + + set up space string caches + + + + + format the trivia at the line column and put changes to the changes + + + + + create whitespace for the delta at the line column and put changes to the changes + + + + + return whether this formatting succeeded or not + for example, if there is skipped tokens in one of trivia between tokens + we consider formatting this region is failed + + + + + check whether given trivia is whitespace trivia or not + + + + + check whether given trivia is end of line trivia or not + + + + + true if previoustrivia is _ and nextTrivia is a Visual Basic comment + + + + + check whether given trivia is a Comment in VB or not + It is never reachable in C# since it follows a test for + LineContinuation Character. + + + + + check whether given string is either null or whitespace + + + + + check whether given char is whitespace + + + + + check whether given char is new line char + + + + + create whitespace trivia + + + + + create end of line trivia + + + + + return line column rule for the given two trivia + + + + + format the given trivia at the line column position and put result to the changes list + + + + + format the given trivia at the line column position and put text change result to the changes list + + + + + returns true if the trivia contains a Line break + + + + + get line column rule between two trivia + + + + + if the given trivia is the very first or the last trivia between two normal tokens and + if the trivia is structured trivia, get one token that belongs to the structured trivia and one belongs to the normal token stream + + + + + check whether string between start and end position only contains whitespace + + + + + check whether first line between two tokens contains only whitespace + + + + + return 0 or 1 based on line column of the trivia1's end point + this is based on our structured trivia's implementation detail that some structured trivia can have + one new line at the end of the trivia + + + + + absolute line number from first token + + + + + absolute column from beginning of a line + + + + + there is only whitespace on this line + + + + + relative line number between calls + + + + + relative spaces between calls + + + + + there is only whitespace in this space + + + + + force text change regardless line and space changes + + + + + Returns if the language specific should be deferred to figure out indentation. If so, it + will be asked to the resultant + provided by this method. + + + + + An indentation result represents where the indent should be placed. It conveys this through + a pair of values. A position in the existing document where the indent should be relative, + and the number of columns after that the indent should be placed at. + + This pairing provides flexibility to the implementor to compute the indentation results in + a variety of ways. For example, one implementation may wish to express indentation of a + newline as being four columns past the start of the first token on a previous line. Another + may wish to simply express the indentation as an absolute amount from the start of the + current line. With this tuple, both forms can be expressed, and the implementor does not + have to convert from one to the other. + + + + + The base position in the document that the indent should be relative to. This position + can occur on any line (including the current line, or a previous line). + + + + + The number of columns the indent should be at relative to the BasePosition's column. + + + + + Determines the desired indentation of a given line. + + + + + Gets the correct indentation to be used for the document. Depending on the host, there may be smarts to compensate for lack of an editorconfig if there + isn't one present. + + + + + Get the name of the target type of specified extension method declaration. + The node provided must be an extension method declaration, i.e. calling `TryGetDeclaredSymbolInfo()` + on `node` should return a `DeclaredSymbolInfo` of kind `ExtensionMethod`. + If the return value is null, then it means this is a "complex" method (as described at ). + + + + + Retrieves all symbols that could collide with a symbol at the specified location. + A symbol can possibly collide with the location if it is available to that location and/or + could cause a compiler error if its name is re-used at that location. + + + + + True if this language supports implementing an interface by signature only. If false, + implementations must specific explicitly which symbol they're implementing. + + + + + True if anonymous functions in this language have signatures that include named + parameters that can be referenced later on when the function is invoked. Or, if the + anonymous function is simply a signature that will be assigned to a delegate, and the + delegate's parameter names are used when invoking. + + For example, in VB one can do this: + + dim v = Sub(x as Integer) Blah() + v(x:=4) + + However, in C# that would need to be: + + Action<int> v = (int x) => Blah(); + v(obj:=4) + + Note that in VB one can access 'x' outside of the declaration of the anonymous type. + While in C# 'x' can only be accessed within the anonymous type. + + + + + True if a write is performed to the given expression. Note: reads may also be performed + to the expression as well. For example, "++a". In this expression 'a' is both read from + and written to. + + + + + True if a write is performed to the given expression. Note: unlike IsWrittenTo, this + will not return true if reads are performed on the expression as well. For example, + "++a" will return 'false'. However, 'a' in "out a" or "a = 1" will return true. + + + + + return speculative semantic model for supported node. otherwise, it will return null + + + + + get all alias names defined in the semantic model + + + + + Checks if the position is on the header of a type (from the start of the type up through it's name). + + + + + Tries to get an ancestor of a Token on current position or of Token directly to left: + e.g.: tokenWithWantedAncestor[||]tokenWithoutWantedAncestor + + + + + controls how much of the type header should be considered. If only the span up through the type name will be considered. If + then the span through the base-list will be considered. + + + + + Contains helpers to allow features and other algorithms to run over C# and Visual Basic code in a uniform fashion. + It should be thought of a generalized way to apply type-pattern-matching and syntax-deconstruction in a uniform + fashion over the languages. Helpers in this type should only be one of the following forms: + + + 'IsXXX' where 'XXX' exactly matches one of the same named syntax (node, token, trivia, list, etc.) constructs that + both C# and VB have. For example 'IsSimpleName' to correspond to C# and VB's SimpleNameSyntax node. These 'checking' + methods should never fail. For non leaf node types this should be implemented as a typecheck ('is' in C#, 'typeof ... is' + in VB). For leaf nodes, this should be implemented by deffering to to check against the + raw kind of the node. + + + 'GetPartsOfXXX(SyntaxNode node, out SyntaxNode/SyntaxToken part1, ...)' where 'XXX' one of the same named Syntax constructs + that both C# and VB have, and where the returned parts correspond to the members those nodes have in common across the + languages. For example 'GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken dotToken, out SyntaxNode right)' + VB. These functions should throw if passed a node that the corresponding 'IsXXX' did not return for. + For nodes that only have a single child, 'GetPartsOfXXX' is not not needed and can be replaced with the easier to use + 'GetXXXOfYYY' to get that single child. + + + 'GetXxxOfYYY' where 'XXX' matches the name of a property on a 'YYY' syntax construct that both C# and VB have. For + example 'GetExpressionOfMemberAccessExpression' corresponding to MemberAccessExpressionsyntax.Expression in both C# and + VB. These functions should throw if passed a node that the corresponding 'IsYYY' did not return for. + For nodes that only have a single child, these functions can stay here. For nodes with multiple children, these should migrate + to and be built off of 'GetPartsOfXXX'. + + + Absolutely trivial questions that relate to syntax and can be asked sensibly of each language. For example, + if certain constructs (like 'patterns') are supported in that language or not. + + + + Importantly, avoid: + + + + Functions that attempt to blur the lines between similar constructs in the same language. For example, a QualifiedName + is not the same as a MemberAccessExpression (despite A.B being representable as either depending on context). + Features that need to handle both should make it clear that they are doing so, showing that they're doing the right + thing for the contexts each can arise in (for the above example in 'type' vs 'expression' contexts). + + + Functions which are effectively specific to a single feature are are just trying to find a place to place complex + feature logic in a place such that it can run over VB or C#. For example, a function to determine if a position + is on the 'header' of a node. a 'header' is a not a well defined syntax concept that can be trivially asked of + nodes in either language. It is an excapsulation of a feature (or set of features) level idea that should be in + its own dedicated service. + + + Functions that mutate or update syntax constructs for example 'WithXXX'. These should be on SyntaxGenerator or + some other feature specific service. + + + Functions that a single item when one language may allow for multiple. For example 'GetIdentifierOfVariableDeclarator'. + In VB a VariableDeclarator can itself have several names, so calling code must be written to check for that and handle + it apropriately. Functions like this make it seem like that doesn't need to be considered, easily allowing for bugs + to creep in. + + + Abbreviating or otherwise changing the names that C# and VB share here. For example use 'ObjectCreationExpression' + not 'ObjectCreation'. This prevents accidental duplication and keeps consistency with all members. + + + + + Many helpers in this type currently violate the above 'dos' and 'do nots'. They should be removed and either + inlined directly into the feature that needs if (if only a single feature), or moved into a dedicated service + for that purpose if needed by multiple features. + + + + + Returns 'true' if this a 'reserved' keyword for the language. A 'reserved' keyword is a + identifier that is always treated as being a special keyword, regardless of where it is + found in the token stream. Examples of this are tokens like and + in C# and VB respectively. + + Importantly, this does *not* include contextual keywords. If contextual keywords are + important for your scenario, use or . Also, consider using + if all you need is the ability to know + if this is effectively any identifier in the language, regardless of whether the language + is treating it as a keyword or not. + + + + + Returns if this a 'contextual' keyword for the language. A + 'contextual' keyword is a identifier that is only treated as being a special keyword in + certain *syntactic* contexts. Examples of this is 'yield' in C#. This is only a + keyword if used as 'yield return' or 'yield break'. Importantly, identifiers like , and are *not* + 'contextual' keywords. This is because they are not treated as keywords depending on + the syntactic context around them. Instead, the language always treats them identifiers + that have special *semantic* meaning if they end up not binding to an existing symbol. + + Importantly, if is not in the syntactic construct where the + language thinks an identifier should be contextually treated as a keyword, then this + will return . + + Or, in other words, the parser must be able to identify these cases in order to be a + contextual keyword. If identification happens afterwards, it's not contextual. + + + + + The set of identifiers that have special meaning directly after the `#` token in a + preprocessor directive. For example `if` or `pragma`. + + + + + Get the node on the left side of the dot if given a dotted expression. + + + In VB, we have a member access expression with a null expression, this may be one of the + following forms: + 1) new With { .a = 1, .b = .a .a refers to the anonymous type + 2) With obj : .m .m refers to the obj type + 3) new T() With { .a = 1, .b = .a 'a refers to the T type + If `allowImplicitTarget` is set to true, the returned node will be set to approperiate node, otherwise, it will return null. + This parameter has no affect on C# node. + + + + + Gets the containing expression that is actually a language expression and not just typed + as an ExpressionSyntax for convenience. For example, NameSyntax nodes on the right side + of qualified names and member access expressions are not language expressions, yet the + containing qualified names or member access expressions are indeed expressions. + + + + + Call on the `.y` part of a `x?.y` to get the entire `x?.y` conditional access expression. This also works + when there are multiple chained conditional accesses. For example, calling this on '.y' or '.z' in + `x?.y?.z` will both return the full `x?.y?.z` node. This can be used to effectively get 'out' of the RHS of + a conditional access, and commonly represents the full standalone expression that can be operated on + atomically. + + + + + Returns the expression node the member is being accessed off of. If + is , this will be the node directly to the left of the dot-token. If + is , then this can return another node in the tree that the member will be accessed + off of. For example, in VB, if you have a member-access-expression of the form ".Length" then this + may return the expression in the surrounding With-statement. + + + + + True if this is an argument with just an expression and nothing else (i.e. no ref/out, + no named params, no omitted args). + + + + + Returns true for nodes that represent the body of a method. + + For VB this will be + MethodBlockBaseSyntax. This will be true for things like constructor, method, operator + bodies as well as accessor bodies. It will not be true for things like sub() function() + lambdas. + + For C# this will be the BlockSyntax or ArrowExpressionSyntax for a + method/constructor/deconstructor/operator/accessor. It will not be included for local + functions. + + + + + Returns true if the given character is a character which may be included in an + identifier to specify the type of a variable. + + + + + A block that has no semantics other than introducing a new scope. That is only C# BlockSyntax. + + + + + A node that contains a list of statements. In C#, this is BlockSyntax and SwitchSectionSyntax. + In VB, this includes all block statements such as a MultiLineIfBlockSyntax. + + + + + A node that can host a list of statements or a single statement. In addition to + every "executable block", this also includes C# embedded statement owners. + + + + + Given a , return the representing the span of the member body + it is contained within. This is used to determine whether speculative binding should be + used in performance-critical typing scenarios. Note: if this method fails to find a relevant span, it returns + an empty at position 0. + + + + + Returns the parent node that binds to the symbols that the IDE prefers for features like Quick Info and Find + All References. For example, if the token is part of the type of an object creation, the parenting object + creation expression is returned so that binding will return constructor symbols. + + + + + Given a , that represents and argument return the string representation of + that arguments name. + + + + + Given a , that represents an attribute argument return the string representation of + that arguments name. + + + + + Determines if there is preprocessor trivia *between* any of the + provided. The will be deduped and then ordered by position. + Specifically, the first token will not have it's leading trivia checked, and the last + token will not have it's trailing trivia checked. All other trivia will be checked to + see if it contains a preprocessor directive. + + + + + Gets the statement container node for the statement . + + The implementation. + The statement. + The statement container for . + + + + Similar to , this gets the containing + expression that is actually a language expression and not just typed as an ExpressionSyntax for convenience. + However, this goes beyond that that method in that if this expression is the RHS of a conditional access + (i.e. a?.b()) it will also return the root of the conditional access expression tree. + The intuition here is that this will give the topmost expression node that could realistically be + replaced with any other expression. For example, with a?.b() technically .b() is an + expression. But that cannot be replaced with something like (1 + 1) (as a?.(1 + 1) is not + legal). However, in a?.b(), then a itself could be replaced with (1 + 1)?.b() to form + a legal expression. + + + + + Provides a uniform view of SyntaxKinds over C# and VB for constructs they have + in common. + + + + + Gets the syntax kind for a multi-line comment. + + + The raw syntax kind for a multi-line comment; otherwise, if the language does not + support multi-line comments. + + + + + Provides a uniform view of SyntaxKinds over C# and VB for constructs they have + in common. + + + + + Helper service for telling you what type can be inferred to be viable in a particular + location in code. This is useful for features that are starting from code that doesn't bind, + but would like to know type that code should be in the location that it can be found in. For + example: + + int i = Here(); + + If 'Here()' doesn't bind, then this class can be used to say that it is currently in a + location whose type has been inferred to be 'int' from the surrounding context. Note: this + is simply a best effort guess. 'byte/short/etc.' as well as any user convertible types to + int would also be valid here, however 'int' seems the most reasonable when considering user + intuition. + + + + + Given a symbol in source, returns the syntax nodes that compromise its declarations. + This differs from symbol.Locations in that Locations returns a list of ILocations that + normally correspond to the name node of the symbol. + + + + + a logger that aggregate multiple loggers + + + + + a logger that doesn't do anything + + + + + A logger that publishes events to ETW using an EventSource. + + + + + A logger that publishes events to a log file. + + + + + Task queue to serialize all the IO to the log file. + + + + + Defines a log aggregator to create a histogram + + + + + An interaction class defines how much time is expected to reach a time point, the response + time point being the most commonly used. The interaction classes correspond to human perception, + so, for example, all interactions in the Fast class are perceived as fast and roughly feel like + they have the same performance. By defining these interaction classes, we can describe + performance using adjectives that have a precise, consistent meaning. + + + + + LogMessage that creates key value map lazily + + + + + Creates a with default , since + KV Log Messages are by default more informational and should be logged as such. + + + + + Type of log it is making. + + + + + Log some traces of an activity (default) + + + + + Log an user explicit action + + + + + Represents telemetry data that's classified as personally identifiable information. + + + + + This EventSource exposes our events to ETW. + RoslynEventSource GUID is {bf965e67-c7fb-5c5b-d98f-cdf68f8154c2}. + + When updating this class, use the following to also update Main\Source\Test\Performance\Log\RoslynEventSourceParser.cs: + Main\Tools\Source\TraceParserGen\bin\Debug\TraceParserGen.exe Microsoft.CodeAnalysis.Workspaces.dll -eventsource:RoslynEventSource + + Use this command to register the ETW manifest on any machine where you need to decode events in xperf/etlstackbrowse: + "\\clrmain\tools\managed\etw\eventRegister\bin\Debug\eventRegister.exe" Microsoft.CodeAnalysis.Workspaces.dll + + + + + Logs an informational block with given 's representation as the message + and specified . + On dispose of the returned disposable object, it logs the 'tick' count between the start and end of the block. + Unlike other logging methods on , this method does not check + if the specified was explicitly enabled. + Instead it checks if the was enabled at level. + + + + + Logs an informational message block with the given > and specified . + On dispose of the returned disposable object, it logs the 'tick' count between the start and end of the block. + Unlike other logging methods on , this method does not check + if the specified was explicitly enabled. + Instead it checks if the was enabled at level. + + + + + This tracks the logged message. On instantiation, it logs 'Started block' with other event data. + On dispose, it logs 'Ended block' with the same event data so we can track which block started and ended when looking at logs. + + + + + next unique block id that will be given to each LogBlock + + + + + return next unique pair id + + + + + Implementation of that produce timing debug output. + + + + + no op log block + + + + + Enum to uniquely identify each function location. + + + + + logger interface actual logger should implements + + + + + answer whether it is enabled or not for the specific function id + + + + + log a specific event with context message + + + + + log a start event with context message + + + + + log an end event + + + + + provide a way to log activities to various back end such as etl, code marker and etc + + + + + next unique block id that will be given to each LogBlock + + + + + give a way to explicitly set/replace the logger + + + + + ensure we have a logger by putting one from workspace service if one is not there already. + + + + + log a specific event with a simple context message which should be very cheap to create + + + + + log a specific event with a context message that will only be created when it is needed. + the messageGetter should be cheap to create. in another word, it shouldn't capture any locals + + + + + log a specific event with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a specific event with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a specific event with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a specific event with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a specific event with a context message. + + + + + return next unique pair id + + + + + simplest way to log a start and end pair + + + + + simplest way to log a start and end pair with a simple context message which should be very cheap to create + + + + + log a start and end pair with a context message that will only be created when it is needed. + the messageGetter should be cheap to create. in another word, it shouldn't capture any locals + + + + + log a start and end pair with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a start and end pair with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a start and end pair with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a start and end pair with a context message that requires some arguments to be created when requested. + given arguments will be passed to the messageGetter so that it can create the context message without requiring lifted locals + + + + + log a start and end pair with a context message. + + + + + This tracks the logged message. On instantiation, it logs 'Started block' with other event data. + On dispose, it logs 'Ended block' with the same event data so we can track which block started and ended when looking at logs. + + + + + Defines logging severity levels. Each logger may choose to report differently based on the level of the message being logged. + + Copied from Microsoft.Extensions.Logging https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.logging.loglevel + + + + + + Logs that contain the most detailed messages. These messages may contain sensitive application data. These messages are disabled by default and should never be enabled in a production environment. + + + + + Logs that are used for interactive investigation during development. These logs should primarily contain information useful for debugging and have no long-term value. + + + + + Logs that track the general flow of the application. These logs should have long-term value. + + + + + Logs that highlight an abnormal or unexpected event in the application flow, but do not otherwise cause the application execution to stop. + + + + + Logs that highlight when the current flow of execution is stopped due to a failure. These should indicate a failure in the current activity, not an application-wide failure. + + + + + Logs that describe an unrecoverable application or system crash, or a catastrophic failure that requires immediate attention. + + + + + Not used for writing log messages. Specifies that a logging category should not write any messages. + + + + + log message that can generate string lazily + + + + + Logger will call this to return LogMessage to its pool + + + + + helper class to aggregate some numeric value log in client side + + + + + maximum value + + + + + minimum value + + + + + middle value of the total data set + + + + + average value of the total data set + + + + + most frequent value in the total data set + + + + + difference between max and min value + + + + + number of data points in the total data set + + + + + Used to indicate that the global operation completed fully. The only effect this has is how this operation + will be logged when is called. If this has been called, then + will log that we completed without cancellation. If this has not been called, then + will log that we were canceled. + + + + + raised when global operation is started + + + + + raised when global operation is stopped + + + + + start new global operation + + + + + An that comes from . It behaves just like a normal + but remembers which language the is, so you don't have to + pass that information redundantly when calling . + + + + + Creates a new that contains the changed value. + + + + + Creates a new that contains the changed value. + + + + + Gets force computed serializable options with prefetched values for all the registered options applicable to the given by quering the option persisters. + + + + + Returned from a + + + + + Attempts to fetch the value for the given option. + + + The value returned. May be null even if the function returns true as "null" may be valid value for some options. + True if this provider had a specific value for this option. False to indicate other providers should be queried. + + + + Implemented to provide options that apply to specific documents, like from .editorconfig files. + + + This is passed to to activate it + for a workspace. This instance then lives around for the lifetime of the workspace. + + + + + Fetches a for the given document. Any asynchronous work (looking for config files, etc.) + should be done here. Can return a null-valued task to mean there is no options being provided for this document. + + + + + A MEF-exported factory which produces s for s. + + + + + Provides services for reading and writing options. + This will provide support for options at the global level (i.e. shared among + all workspaces/services). + + In general you should not import this type directly, and should instead get an + from + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current values of specified options. + All options are read atomically. + + + + + Applies a set of options. + If any option changed its value invokes registered option persisters, updates current solutions of all registered workspaces and triggers . + + + + + Sets and persists the value of a global option. + Sets the value of a global option. + Invokes registered option persisters. + Triggers . + Does not update any workspace (since this option is not a solution option). + + + + + Atomically sets the values of specified global options. The option values are persisted. + Triggers . + Does not update any workspace (since this option is not a solution option). + + + + + Gets force computed serializable options snapshot with prefetched values for the registered options applicable to the given by quering the option persisters. + + + + + Returns the set of all registered options. + + + + + Map an .editorconfig key to a corresponding and + that can be used to read and write the value stored in an . + + The .editorconfig key. + The language to use for the , if the matching option has + set. + The for the key. + The for the key and language. + if a matching option was found; otherwise, . + + + + Returns the set of all registered serializable options applicable for the given . + + + + + Refreshes the stored value of a serialized option. This should only be called from serializers. + + + + + Registers a workspace with the option service. + + + + + Unregisters a workspace from the option service. + + + + + Exportable by a host to specify the save and restore behavior for a particular set of + values. + + + + + Gets the . If the persister does not already exist, it is created. + + + This method is safe for concurrent use from any thread. No guarantees are made regarding the use of the UI + thread. + + A cancellation token the operation may observe. + The option persister. + + + + Provides services for reading and writing options. This will provide support for + customizations workspaces need to perform around options. Note that + options will normally still be offered through + implementations of this. However, implementations may customize things differently + depending on their needs. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Gets the current value of the specific option. + + + + + Fetches an immutable set of all current options. + + + + + Gets a serializable option set snapshot with force computed values for all registered serializable options applicable for the given by quering the option persisters. + + + + + Applies a set of options. + + New options to set. + + + + Returns the set of all registered options. + + + + + + + + Returns the set of all registered serializable options applicable for the given . + + + + + Registers a provider that can modify the result of . Providers registered earlier are queried first + for options, and the first provider to give a value wins. + + + + + Returns the that applies to a specific document, given that document and the global options. + + + + + Registers a workspace with the option service. + + + + + Unregisters a workspace from the option service. + + + + + Interface used for exposing functionality from the option service that we don't want to + ever be public. + + + + + An global option. An instance of this class can be used to access an option value from an OptionSet. + + + + + + + + + + + + + + + + + + + + Storage locations for the option. + + + + + + + + + + + + + + Wraps an underlying and exposes its data to workspace + clients. Also takes the notifications + and forwards them along using the same used by the + this is connected to. i.e. instead of synchronously just passing + along the underlying events, these will be enqueued onto the workspace's eventing queue. + + + + + Gate guarding and . + + + + + Map from language name to the wrapper. + + + + + Gets the value of the option, or the default value if not otherwise set. + + + + + Gets the value of the option cast to type , or the default value if not otherwise set. + + + + + Gets the value of the option, or the default value if not otherwise set. + + + + + Gets the value of the option cast to type , or the default value if not otherwise set. + + + + + Gets the value of the option, or the default value if not otherwise set. + + + + + Gets the value of the option, or the default value if not otherwise set. + + + + + Gets the value of the option, or the default value if not otherwise set. + + + + + Gets the value of the option, or the default value if not otherwise set. + + + + + Creates a new that contains the changed value. + + + + + Creates a new that contains the changed value. + + + + + Creates a new that contains the changed value. + + + + + Creates a new that contains the changed value. + + + + + Creates a new that contains the changed value. + + + + + Creates a new that contains the changed value. + + + + + The base type of all types that specify where options are stored. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + An option that can be specified once per language. + + + + + + + + + + + + + + + + + + + + + Storage locations for the option. + + + + + The name of the providers for .editorconfig. Both the current and legacy providers will use this name, so that way any other clients can + order relative to the pair. The two factories are unordered themselves because only one ever actually gives a real provider. + + + + + Optional source language for language specific option providers. See . + This will be empty string for language agnostic option providers. + + + + + True if the option is a client global option provided by . + + + + + Global client-only options. + + + + + Options that are part of the solution snapshot. + Some of these options may be configurable per document via editorconfig. + + + + + Serializable implementation of for . + It contains prepopulated fetched option values for all serializable options and values, and delegates to for non-serializable values. + It ensures a contract that values are immutable from this instance once observed. + + + + + Fallback option set for non-serializable options. See comments on for more details. + + + + + Prefetched option values applicable for . + + + + + Set of changed options in this option set which are serializable. + + + + + Set of changed options in this option set which are non-serializable. + + + + + Set of languages referenced in . Cached + only so we can shortcircuit . + + + + + Returns an option set with all the serializable option values prefetched for given , + while also retaining all the explicitly changed option values in this option set for any language. + Note: All the provided must be . + + + + + Gets a list of all the options that were changed. + + + + + An implementation of for non-serializable options that are defined in VS layers. + It fetches values it doesn't know about to the workspace's option service. It ensures a contract + that values are immutable from this instance once observed. + TODO: Remove this type once we move all the options from the VS layers into Workspaces/Features, so the entire + option set is serializable and becomes pure data snapshot for options. + + + + + Gets a list of all the options that were changed. + + + + + Specifies that the option is stored in feature flag storage. + + + + + Specifies that an option should be read from an .editorconfig file. + + + + + Gets the editorconfig string representation for this storage location. + + + + + Gets the editorconfig string representation for this storage location. The result is a complete line of the + .editorconfig file, such as the following: + + dotnet_sort_system_directives_first = true + + + + + + Gets the editorconfig string representation for this storage location. The result only includes the value + for the .editorconfig entry. + + + + + + Internal base option type that is available in both the Workspaces layer and CodeStyle layer. + Its definition in Workspaces layer sub-types "IOption" and its definition in CodeStyle layer + explicitly defines all the members from "IOption" type as "IOption" is not available in CodeStyle layer. + This ensures that all the sub-types of in either layer see an identical + set of interface members. + + + + + Group/sub-feature associated with an . + + + + + Group/sub-feature for this option. + + + + + Specifies that the option should be stored into the user's local registry hive. + + + + + Group/sub-feature associated with an option. + + + + + A localizable resource description string for the option group. + + + + + Relative priority of the option group with respect to other option groups within the same feature. + + + + + Feature this option is associated with. + + + + + Optional group/sub-feature for this option. + + + + + The name of the option. + + + + + The default value of the option. + + + + + The type of the option value. + + + + + Flag indicating if this is a per-language option or a language specific option. + + + + + The base type of all types that specify where options are stored. + + + + + Marker interface for language specific options. + + + + + Marker interface for language specific options. + + + + + Marker interface for + + + + + Marker interface for + + + + + Specifies that the option should be stored into a roamed profile across machines. + + + + + Creates a that has different key names for different languages. + + A function that maps from a value to the key name. + + + + Attempts to get the package sources applicable to the workspace. Note: this call is made on a best effort + basis. If the results are not available (for example, they have not been computed, and doing so would + require switching to the UI thread), then an empty array can be returned. + + + A collection of package sources. + + + + + The pattern matcher is not thread-safe. Do not use the pattern matcher across mutiple threads concurrently. It + also keeps an internal cache of data for speeding up operations. As such, it should be disposed when done to + release the cached data back. and release the matcher appropriately once you no longer need it. Also, while the + pattern matcher is culture aware, it uses the culture specified in the constructor. + + + + + Encapsulated matches responsible for matching an all lowercase pattern against + a candidate using CamelCase matching. i.e. this code is responsible for finding the + match between "cofipro" and "CodeFixProvider". + + + + + Returns null if no match was found, 1 if a contiguous match was found, 2 if a + match as found that starts at the beginning of the candidate, and 3 if a contiguous + match was found that starts at the beginning of the candidate. + + + + + Updates the currently stored 'best result' if the current result is better. + Returns 'true' if no further work is required and we can break early, or + 'false' if we need to keep on going. + + If 'weight' is better than 'bestWeight' and matchSpanToAdd is not null, then + matchSpanToAdd will be added to matchedSpansInReverse. + + + + + Construct a new PatternMatcher using the specified culture. + + The culture to use for string searching and comparison. + Whether or not the matching parts of the candidate should be supplied in results. + Whether or not close matches should count as matches. + + + + Internal helper for MatchPatternInternal + + + PERF: Designed to minimize allocations in common cases. + If there's no match, then null is returned. + If there's a single match, or the caller only wants the first match, then it is returned (as a Nullable) + If there are multiple matches, and the caller wants them all, then a List is allocated. + + The word being tested. + The segment of the pattern to check against the candidate. + The result array to place the matches in. + If a fuzzy match should be performed + If there's only one match, then the return value is that match. Otherwise it is null. + + + + Do the two 'parts' match? i.e. Does the candidate part start with the pattern part? + + The candidate text + The span within the text + The pattern text + The span within the text + Options for doing the comparison (case sensitive or not) + True if the span identified by within starts with + the span identified by within . + + + + Does the given part start with the given pattern? + + The candidate text + The span within the text + The pattern text + Options for doing the comparison (case sensitive or not) + True if the span identified by within starts with + + + + First we break up the pattern given by dots. Each portion of the pattern between the + dots is a 'Segment'. The 'Segment' contains information about the entire section of + text between the dots, as well as information about any individual 'Words' that we + can break the segment into. + + + + + Information about a chunk of text from the pattern. The chunk is a piece of text, with + cached information about the character spans within in. Character spans separate out + capitalized runs and lowercase runs. i.e. if you have AAbb, then there will be two + character spans, one for AA and one for BB. + + + + + Character spans separate out + capitalized runs and lowercase runs. i.e. if you have AAbb, then there will be two + character spans, one for AA and one for BB. + + + + + Determines if a given candidate string matches under a multiple word query text, as you + would find in features like Navigate To. + + If this was a match, a set of match types that occurred while matching the + patterns. If it was not a match, it returns null. + + + + True if this was a case sensitive match. + + + + + The type of match that occurred. + + + + + The spans in the original text that were matched. Only returned if the + pattern matcher is asked to collect these spans. + + + + + Note(cyrusn): this enum is ordered from strongest match type to weakest match type. + + + + + The candidate string matched the pattern exactly. + + + + + The pattern was a prefix of the candidate string. + + + + + The pattern was a substring of the candidate string, but in a way that wasn't a CamelCase match. The + pattern had to have at least one non lowercase letter in it, and the match needs to be case sensitive. + This will match 'savedWork' against 'FindUnsavedWork'. + + + + + The pattern was a substring of the candidate string, starting at a word within that candidate. The pattern + can be all lowercase here. This will match 'save' or 'Save' in 'FindSavedWork' + + + + + All camel-humps in the pattern matched a camel-hump in the candidate. All camel-humps + in the candidate were matched by a camel-hump in the pattern. + + Example: "CFPS" matching "CodeFixProviderService" + Example: "cfps" matching "CodeFixProviderService" + Example: "CoFiPrSe" matching "CodeFixProviderService" + + + + + All camel-humps in the pattern matched a camel-hump in the candidate. The first camel-hump + in the pattern matched the first camel-hump in the candidate. There was no gap in the camel- + humps in the candidate that were matched. + + Example: "CFP" matching "CodeFixProviderService" + Example: "cfp" matching "CodeFixProviderService" + Example: "CoFiPRo" matching "CodeFixProviderService" + + + + + All camel-humps in the pattern matched a camel-hump in the candidate. The first camel-hump + in the pattern matched the first camel-hump in the candidate. There was at least one gap in + the camel-humps in the candidate that were matched. + + Example: "CP" matching "CodeFixProviderService" + Example: "cp" matching "CodeFixProviderService" + Example: "CoProv" matching "CodeFixProviderService" + + + + + All camel-humps in the pattern matched a camel-hump in the candidate. The first camel-hump + in the pattern did not match the first camel-hump in the pattern. There was no gap in the camel- + humps in the candidate that were matched. + + Example: "FP" matching "CodeFixProviderService" + Example: "fp" matching "CodeFixProviderService" + Example: "FixPro" matching "CodeFixProviderService" + + + + + All camel-humps in the pattern matched a camel-hump in the candidate. The first camel-hump + in the pattern did not match the first camel-hump in the pattern. There was at least one gap in + the camel-humps in the candidate that were matched. + + Example: "FS" matching "CodeFixProviderService" + Example: "fs" matching "CodeFixProviderService" + Example: "FixSer" matching "CodeFixProviderService" + + + + + The pattern matches the candidate in a fuzzy manner. Fuzzy matching allows for + a certain amount of misspellings, missing words, etc. See for + more details. + + + + + The pattern was a substring of the candidate and wasn't either or . This can happen when the pattern is allow lowercases and matches some non + word portion of the candidate. For example, finding 'save' in 'GetUnsavedWork'. This will not match across + word boundaries. i.e. it will not match 'save' to 'VisaVerify' even though 'saVe' is in that candidate. + + + + + Callback the host (VS) passes to the OOP service to allow it to send batch notifications + about telemetry. + + + + + Interface to allow host (VS) to inform the OOP service to start incrementally analyzing and + reporting results back to the host. + + + + + Serialization typed used to pass information to/from OOP and VS. + + + + + Service which can analyze a span of a document and identify all locations of parameters or locals that are ever + reassigned. Note that the locations provided are not the reassignment points. Rather if a local or parameter + is ever reassigned, these are all the locations of those locals or parameters within that span. + + + + + Tries to get a type of its' lambda parameter of argument for each candidate symbol. + + symbols corresponding to or + Here, some_args can be multi-variables lambdas as well, e.g. f((a,b) => a+b, (a,b,c)=>a*b*c.Length) + + ordinal of the arguments of function: (a,b) or (a,b,c) in the example above + ordinal of the lambda parameters, e.g. a, b or c. + + + + + If container is a tuple type, any of its tuple element which has a friendly name will cause + the suppression of the corresponding default name (ItemN). + In that case, Rest is also removed. + + + + + The named symbols to recommend. + + + + + The unnamed symbols to recommend. For example, operators, conversions and indexers. + + + + + Returns a that a user can use to communicate with a remote host (i.e. ServiceHub) + + + + + Get to current RemoteHost + + + + + Token signaled when the host starts to shut down. + + + + + Information related to pinned solution + + + + + Unique ID for this pinned solution + + This later used to find matching solution between VS and remote host + + + + + This indicates whether this scope is for primary branch or not (not forked solution) + + Features like OOP will use this flag to see whether caching information related to this solution + can benefit other requests or not + + + + + This indicates a Solution.WorkspaceVersion of this solution. remote host engine uses this version + to decide whether caching this solution will benefit other requests or not + + + + + An optional project that we are pinning information for. This is used for features that only need + information for a project (and its dependencies) and not the entire solution. + + + + + This represents client in client/server model. + + user can create a connection to communicate with the server (remote host) through this client + + + + + Equivalent to + except that only the project (and its dependent projects) will be sync'ed to the remote host before executing. + This is useful for operations that don't every do any work outside of that project-cone and do not want to pay + the high potential cost of a full sync. + + + + + Equivalent to + except that only the project (and its dependent projects) will be sync'ed to the remote host before executing. + This is useful for operations that don't every do any work outside of that project-cone and do not want to pay + the high potential cost of a full sync. + + + + + Equivalent to + except that only the project (and its dependent projects) will be sync'ed to the remote host before executing. + This is useful for operations that don't every do any work outside of that project-cone and do not want to pay + the high potential cost of a full sync. + + + + + Equivalent to + except that only the project (and its dependent projects) will be sync'ed to the remote host before executing. + This is useful for operations that don't every do any work outside of that project-cone and do not want to pay + the high potential cost of a full sync. + + + + + Invokes a remote API that streams data back to the caller via a pipe. + + + + + Equivalent to + except that only the project (and its dependent projects) will be sync'ed to the remote host before executing. + This is useful for operations that don't every do any work outside of that project-cone and do not want to pay + the high potential cost of a full sync. + + + + + Abstracts a connection to a service implementing type . + + Remote interface type of the service. + + + + Given two solution snapshots ( and ), determines + the set of document text changes necessary to convert to . + + + + + Applies the result of to to produce + a solution textually equivalent to the newSolution passed to . + + + + + Enables logging of using loggers of the specified . + + + + + Initializes telemetry session. + + + + + This deal with serializing/deserializing language specific data + + + + + This lets consumer to get to inner temporary storage that references use + as its shadow copy storage + + + + + This is just internal utility type to reduce allocations and reduntant code + + + + + Represents a which can be serialized for sending to another process. The text is not + required to be a live object in the current process, and can instead be held in temporary storage accessible by + both processes. + + + + + The storage location for . + + + Exactly one of or will be non-. + + + + + The in the current process. + + + + + + + + serialize and deserialize objects to stream. + some of these could be moved into actual object, but putting everything here is a bit easier to find I believe. + + + serialize and deserialize objects to straem. + some of these could be moved into actual object, but putting everything here is a bit easier to find I believe. + + + + + collection which children is checksum. + + + + + this is a collection that has its own checksum and contains only checksum or checksum collection as its children. + + + + + hold onto object checksum that currently doesn't have a place to hold onto checksum + + + + + The core data structure of the tracker. This is a dictionary of variable name to the + current identifier tokens that are declaring variables. This should only ever be updated + via the AddIdentifier and RemoveIdentifier helpers. + + + + + Used to find the symbols associated with the Invocation Expression surrounding the Token + + + + + Computes an adds conflicts relating to declarations, which are independent of + location-based checks. Examples of these types of conflicts include renaming a member to + the same name as another member of a type: binding doesn't change (at least from the + perspective of find all references), but we still need to track it. + + + + + Gives the First Location for a given Symbol by ordering the locations using DocumentId first and Location starting position second + + + + + Helper class to track the state necessary for finding/resolving conflicts in a + rename session. + + + + + Find conflicts in the new solution + + + + + Gets the list of the nodes that were annotated for a conflict check + + + + + The method determines the set of documents that need to be processed for Rename and also determines + the possible set of names that need to be checked for conflicts. + + + + We try to rewrite all locations that are invalid candidate locations. If there is only + one location it must be the correct one (the symbol is ambiguous to something else) + and we always try to rewrite it. If there are multiple locations, we only allow it + if the candidate reason allows for it). + + + + We try to compute the sub-spans to rename within the given . + If we are renaming within a string, the locations to rename are always within this containing string location + and we can identify these sub-spans. + However, if we are renaming within a comment, the rename locations can be anywhere in trivia, + so we return null and the rename rewriter will perform a complete regex match within comment trivia + and rename all matches instead of specific matches. + + + + + The result of the conflict engine. Can be made immutable by calling . + + + + + The base workspace snapshot + + + + + Whether the text that was resolved with was even valid. This may be false if the + identifier was not valid in some language that was involved in the rename. + + + + + The original text that is the rename replacement. + + + + + The solution snapshot as it is being updated with specific rename steps. + + + + + Gives information about an identifier span that was affected by Rename (Reference or Non reference) + + + + + The Span of the original identifier if it was in source, otherwise the span to check for implicit + references. + + + + + If there was a conflict at ConflictCheckSpan during rename, then the next phase in rename uses + ComplexifiedTargetSpan span to be expanded to resolve the conflict. + + + + + There was no conflict. + + + + + A conflict was resolved at a location that references the symbol being renamed. + + + + + A conflict was resolved in a piece of code that does not reference the symbol being + renamed. + + + + + There was a conflict that could not be resolved. + + + + + These are the conflicts that cannot be resolved. E.g.: Declaration Conflict + + + + + Tracks the text spans that were modified as part of a rename operation + + + + + Information to track deltas of complexified spans + + Consider the following example where renaming a->b causes a conflict + and Goo is an extension method: + "a.Goo(a)" is rewritten to "NS1.NS2.Goo(NS3.a, NS3.a)" + + The OriginalSpan is the span of "a.Goo(a)" + + The NewSpan is the span of "NS1.NS2.Goo(NS3.a, NS3.a)" + + The ModifiedSubSpans are the pairs of complexified symbols sorted + according to their order in the original source code span: + "a", "NS3.a" + "Goo", "NS1.NS2.Goo" + "a", "NS3.a" + + + + + + This annotation will be used by rename to mark all places where it needs to rename an identifier (token replacement) and where to + check if the semantics have been changes (conflict detection). + + This annotation should be put on tokens only. + + + + The span this token occupied in the original syntax tree. Can be used to show e.g. conflicts in the UI. + + + + + A flag indicating whether this is a location that needs to be renamed or just tracked for conflicts. + + + + + A flag indicating whether the token at this location has the same ValueText then the original name + of the symbol that gets renamed. + + + + + When replacing the annotated token this string will be prepended to the token's value. This is used when renaming compiler + generated fields and methods backing properties (e.g. "get_X" or "_X" for property "X"). + + + + + When replacing the annotated token this string will be appended to the token's value. This is used when renaming compiler + generated types whose names are derived from user given names (e.g. "XEventHandler" for event "X"). + + + + + A single dimensional array of annotations to verify after rename. + + + + + States if this token is a Namespace Declaration Reference + + + + + States if this token is a member group reference, typically found in NameOf expressions + + + + + States if this token is annotated as a part of the Invocation Expression that needs to be checked for the Conflicts + + + + + This class is used to refer to a Symbol definition which could be in source or metadata + it has a metadata name. + + + + + The metadata name for this symbol. + + + + + Count of symbol location (Partial Types, Constructors, etc). + + + + + A flag indicating that the associated symbol is an override of a symbol from metadata + + + + + The final solution snapshot. Including any renamed documents. + + + + + The list of all document ids of documents that have been touched for this rename operation. + + + + + Runs the entire rename operation OOP and returns the final result. More efficient (due to less back and + forth marshaling) when the intermediary results of rename are not needed. To get the individual parts of + rename remoted use and . + + + + + A helper class that contains some of the methods and filters that must be used when + processing the raw results from the FindReferences API. + + + Holds the Locations of a symbol that should be renamed, along with the symbol and Solution + for the set. + + + + + Given a symbol in a document, returns the "right" symbol that should be renamed in + the case the name binds to things like aliases _and_ the underlying type at once. + + + + + Given a symbol, finds the symbol that actually defines the name that we're using. + + + + + Given a ISymbol, returns the renameable locations for a given symbol. + + + + + Find the locations that need to be renamed. + + + + + Performs the renaming of the symbol in the solution, identifies renaming conflicts and automatically + resolves them where possible. + + The new name of the identifier + Used after renaming references. References that now bind to any of these + symbols are not considered to be in conflict. Useful for features that want to rename existing references to + point at some existing symbol. Normally this would be a conflict, but this can be used to override that + behavior. + The cancellation token. + A conflict resolution containing the new solution. + + + + This method annotates the given syntax tree with all the locations that need to be checked for conflict + after the rename operation. It also renames all the reference locations and expands any conflict locations. + + The options describing this rename operation + The root of the annotated tree. + + + + Based on the kind of the symbol and the new name, this function determines possible conflicting names that + should be tracked for semantic changes during rename. + + The symbol that gets renamed. + The new name for the symbol. + List where possible conflicting names will be added to. + + + + Identifies the conflicts caused by the new declaration created during rename. + + The replacementText as given from the user. + The new symbol (after rename). + The original symbol that got renamed. + All referenced symbols that are part of this rename session. + The original solution when rename started. + The resulting solution after rename. + A mapping from new to old locations. + The cancellation token. + All locations where conflicts were caused because the new declaration. + + + + Identifies the conflicts caused by implicitly referencing the renamed symbol. + + The original symbol that got renamed. + The new symbol (after rename). + All implicit reference locations. + The cancellation token. + A list of implicit conflicts. + + + + Identifies the conflicts caused by implicitly referencing the renamed symbol. + + The new symbol (after rename). + The SemanticModel of the document in the new solution containing the renamedSymbol + The location of the renamedSymbol in the old solution + The starting position of the renamedSymbol in the new solution + The cancellation token. + A list of implicit conflicts. + + + + Identifies potential Conflicts into the inner scope locals. This may give false positives. + + The Token that may introduce errors else where + The symbols that this token binds to after the rename + has been applied + Returns if there is a potential conflict + + + + Used to find if the replacement Identifier is valid + + + + + + + + Gets the top most enclosing statement as target to call MakeExplicit on. + It's either the enclosing statement, or if this statement is inside of a lambda expression, the enclosing + statement of this lambda. + + The token to get the complexification target for. + + + + + mentions that the result is for the base symbol of the rename + + + + + mentions that the result is for the overloaded symbols of the rename + + + + + Set to true if the file name should match the type name after a rename operation + + + + + Call to perform a rename of document or change in document folders. Returns additional code changes related to the document + being modified, such as renaming symbols in the file. + + Each change is added as a in the returned . + + Each action may individually encounter errors that prevent it from behaving correctly. Those are reported in . + + + + Current supported actions that may be returned: + + Rename symbol action that will rename the type to match the document name. + Sync namespace action that will sync the namespace(s) of the document to match the document folders. + + + + The document to be modified + The new name for the document. Pass null or the same name to keep unchanged. + The new set of folders for the property + + + + Individual action from RenameDocument APIs in . Represents + changes that will be done to one or more document contents to help facilitate + a smooth experience while moving documents around. + + See on use case and how to apply them to a solution. + + + + + Get any errors that have been noted for this action before it is applied. + Can be used to present to a user. + + + + + Gets the description of the action. Can be used to present to a user to describe + what extra actions will be taken. + + + + + Information about rename document calls that allows them to be applied as individual actions. Actions are individual units of work + that can change the contents of one or more document in the solution. Even if the is empty, the + document metadata will still be updated by calling + + To apply all actions use , or use a subset + of the actions by calling . + Actions can be applied in any order. + Each action has a description of the changes that it will apply that can be presented to a user. + + + + + All applicable actions computed for the action. Action set may be empty, which represents updates to document + contents rather than metadata. Document metadata will still not be updated unless + is called. + + + + + Same as calling with + as the argument + + + + + Applies each in order and returns the final solution. + All actions must be contained in + + + An empty action set is still allowed and will return a modified solution + that will update the document properties as appropriate. This means we + can still support when is empty. It's desirable + that consumers can call a rename API to produce a and + immediately call without + having to inspect the returned . + + + + + Attempts to find the document in the solution. Tries by documentId first, but + that's not always reliable between analysis and application of the rename actions + + + + + Action that will rename a type to match the current document name. Works by finding a type matching the origanl name of the document (case insensitive) + and updating that type. + + + + + Finds a matching type such that the display name of the type matches the name passed in, ignoring case. Case isn't used because + documents with name "Foo.cs" and "foo.cs" should still have the same type name + + + + + Name of the document that the action was produced for. + + + + + The new document name that will be used. + + + + + The original name of the symbol that will be changed. + + + + + The new name for the symbol. + + + + + Action that will sync the namespace of the document to match the folders property + of that document, similar to if a user performed the "Sync Namespace" code refactoring. + + For example, if a document is moved from "Bat/Bar/Baz" folder structure to "Bat/Bar/Baz/Bat" and contains + a namespace definition of Bat.Bar.Baz in the document, then it would update that definition to + Bat.Bar.Baz.Bat and update the solution to reflect these changes. Uses + + + + + Renaming a private symbol typically confines the set of references and potential + conflicts to that symbols declaring project. However, rename may cascade to + non-public symbols which may then require other projects be considered. + + + + + Determine whether we can change the namespace for given in the document. + Linked documents are not supported, except for a regular document in a multi-targeting project, + where the container node must be consistent among all linked documents. + Here's the additional requirements on to use this service: + + - If is a namespace declaration node: + 1. Doesn't contain or is nested in other namespace declarations + 2. The name of the namespace is valid (i.e. no errors) + 3. No partial type declared in the namespace. Otherwise its multiple declarations will + end up in different namespace. + + - If is a compilation unit node: + 1. It must contain no namespace declaration + 2. No partial type declared in the document. Otherwise its multiple declarations will + end up in different namespace. + + - Otherwise, an will be thrown. + + Returns only when all the requirements above are met. + + + While this service might be used by features that change namespace based on some property of the document + (e.g. Sync namespace refactoring), those logic is implemented by those individual features and isn't part + of the IChangeNamespaceService service. + + + + + Change namespace for given to the name specified by . + Everything declared in the will be moved to the new namespace. + Change will only be made if returns and + is a valid name for namespace. Use "" for to specify the global namespace. + + An will be thrown if: + 1. is not a namespace declaration or a compilation unit node. + 2. is null or contains an invalid character. + + + If the declared namespace for is already identical to , then it will be + a no-op and original solution will be returned. + + + + + Using only the top level namespace declarations of a document, change all of them to the target namespace. Will only + use namespace containers considered valid by + + + + + Used to make sure we only report one watson per sessoin here. + + + + + Interface only for use by . Includes language specific + implementations on how to get an appropriate speculated semantic model given an older semantic model and a + changed method body. + + + + + Given a node, returns the parent method-body-esque node that we can get a new speculative semantic model + for. Returns if not in such a location. + + + + + Given a previous semantic model, and a method-eque node in the current tree for that same document, attempts + to create a new speculative semantic model using the top level symbols of but the new body level symbols produced for . + + Note: it is critical that no top level changes have occurred between the syntax tree that points at and the syntax tree that points + at. In other words, they must be (..., topLevel: true). This + function is undefined if they are not. + + + + + + The original non-speculative semantic model we retrieved for this document at some point. + + + + + The current semantic model we retrieved for the . Could + be speculative or non-speculative. + + + + + The current method body we retrieved the for. + + + + + The top level version of the project when we retrieved . As long as this is the + same we can continue getting speculative models to use. + + + + + A mapping from a document id to the last semantic model we produced for it, along with the top level + semantic version that that semantic model corresponds to. We can continue reusing the semantic model as + long as no top level changes occur. + + In general this dictionary will only contain a single key-value pair. However, in the case of linked + documents, there will be a key-value pair for each of the independent document links that a document + has. + + + A value simply means we haven't cached any information for that particular id. + + + + + + a service that provides a semantic model that will re-use last known compilation if + semantic version hasn't changed. + + + + + Don't call this directly. use (or an overload). + + + + + Gets a mutable reference to a stored in a using variable. + + + This supporting method allows , a non-copyable + implementing , to be used with using statements while still allowing them to + be passed by reference in calls. The following two calls are equivalent: + + + using var array = TemporaryArray<T>.Empty; + + // Using the 'Unsafe.AsRef' method + Method(ref Unsafe.AsRef(in array)); + + // Using this helper method + Method(ref array.AsRef()); + + + ⚠ Do not move or rename this method without updating the corresponding + RS0049 + analyzer. + + The type of element stored in the temporary array. + A read-only reference to a temporary array which is part of a using statement. + A mutable reference to the temporary array. + + + + Provides temporary storage for a collection of elements. This type is optimized for handling of small + collections, particularly for cases where the collection will eventually be discarded or used to produce an + . + + + This type stores small collections on the stack, with the ability to transition to dynamic storage if/when + larger number of elements are added. + + The type of elements stored in the collection. + + + + The number of elements the temporary can store inline. Storing more than this many elements requires the + array transition to dynamic storage. + + + + + The first inline element. + + + This field is only used when is . In other words, this type + stores elements inline or stores them in , but does not use both approaches + at the same time. + + + + + The second inline element. + + + + + + The third inline element. + + + + + + The fourth inline element. + + + + + + The number of inline elements held in the array. This value is only used when is + . + + + + + A builder used for dynamic storage of collections that may exceed the limit for inline elements. + + + This field is initialized to non- the first time the + needs to store more than four elements. From that point, is used instead of inline + elements, even if items are removed to make the result smaller than four elements. + + + + + Create an with the elements currently held in the temporary array, and clear + the array. + + + + + + Transitions the current from inline storage to dynamic storage storage. An + instance is taken from the shared pool, and all elements currently in inline + storage are added to it. After this point, dynamic storage will be used instead of inline storage. + + + + + Throws . + + + This helper improves the ability of the JIT to inline callers. + + + + + An interval tree represents an ordered tree data structure to store intervals of the form + [start, end). It allows you to efficiently find all intervals that intersect or overlap + a provided interval. + + + + The number of matching intervals found by the method. + + + The number of matching intervals found by the method. + + + + Warning. Mutates the tree in place. + + + + + + Warning. Mutates the tree in place. + + + + + Returns the semantic model for this document that may be produced from partial semantics. The semantic model + is only guaranteed to contain the syntax tree for and nothing else. + + + + + Attempts to return an speculative semantic model for if possible if is contained within a method body in the tree. Specifically, this will attempt to get an + existing cached semantic model for . If it can find one, and the top-level semantic + version for this project matches the cached version, and the position is within a method body, then it will + be returned, just with the previous corresponding method body swapped out with the current method body. + + If this is not possible, the regular semantic model for will be returned. + + When using this API, semantic model should only be used to ask questions about nodes inside of the member + that contains the given . + + As a speculative semantic model may be returned, location based information provided by it may be innacurate. + + + + + Attempts to return an speculative semantic model for if possible if is contained within a method body in the tree. Specifically, this will attempt to get an + existing cached semantic model . If it can find one, and the top-level semantic + version for this project matches the cached version, and the position is within a method body, then it will + be returned, just with the previous corresponding method body swapped out with the current method body. + + If this is not possible, the regular semantic model for will be returned. + + When using this API, semantic model should only be used to ask questions about nodes inside of the + member that contains the given . + + As a speculative semantic model may be returned, location based information provided by it may be innacurate. + + + + + Attempts to return an speculative semantic model for if possible if is contained within a method body in the tree. Specifically, this will attempt to get an + existing cached semantic model . If it can find one, and the top-level semantic + version for this project matches the cached version, and the position is within a method body, then it will + be returned, just with the previous corresponding method body swapped out with the current method body. + + If this is not possible, the regular semantic model for will be returned. + + When using this API, semantic model should only be used to ask questions about nodes inside of the + member that contains the given . + + As a speculative semantic model may be returned, location based information provided by it may be innacurate. + + + + + Get mapped file path if exist, otherwise return null. + + + + + Returns the methodSymbol and any partial parts. + + + + + Returns true for void returning methods with two parameters, where + the first parameter is of type and the second + parameter inherits from or equals type. + + + + + Gets the set of members in the inheritance chain of that + are overridable. The members will be returned in furthest-base type to closest-base + type order. i.e. the overridable members of will be at the start + of the list, and the members of the direct parent type of + will be at the end of the list. + + If a member has already been overridden (in or any base type) + it will not be included in the list. + + + + + Searches the namespace for namespaces with the provided name. + + + + + Checks a given symbol for browsability based on its declaration location, attributes + explicitly limiting browsability, and whether showing of advanced members is enabled. + The optional editorBrowsableInfo parameters may be used to specify the symbols of the + constructors of the various browsability limiting attributes because finding these + repeatedly over a large list of symbols can be slow. If these are not provided, + they will be found in the compilation. + + + + + First, remove symbols from the set if they are overridden by other symbols in the set. + If a symbol is overridden only by symbols outside of the set, then it is not removed. + This is useful for filtering out symbols that cannot be accessed in a given context due + to the existence of overriding members. Second, remove remaining symbols that are + unsupported (e.g. pointer types in VB) or not editor browsable based on the EditorBrowsable + attribute. + + + + + Returns if the signature of this symbol requires the modifier. For example a method that takes List<int*[]> + is unsafe, as is int* Goo { get; }. This will return for + symbols that cannot have the modifier on them. + + + + + Returns true if symbol is a local variable and its declaring syntax node is + after the current position, false otherwise (including for non-local symbols) + + + + + If the is a method symbol, returns if the method's return type is "awaitable", but not if it's . + If the is a type symbol, returns if that type is "awaitable". + An "awaitable" is any type that exposes a GetAwaiter method which returns a valid "awaiter". This GetAwaiter method may be an instance method or an extension method. + + + + + Returns true for symbols whose name starts with an underscore and + are optionally followed by an integer, such as '_', '_1', '_2', etc. + These are treated as special discard symbol names. + + + + + Returns , if the symbol is marked with the . + + + if the symbol is marked with the . + + + + Visits types or members that have signatures (i.e. methods, fields, etc.) and determines + if any of them reference a pointer type and should thus have the modifier on them. + + + + + Checks if 'symbol' is accessible from within 'within'. + + + + + Checks if 'symbol' is accessible from within assembly 'within'. + + + + + Checks if 'symbol' is accessible from within name type 'within', with an optional + qualifier of type "throughTypeOpt". + + + + + Checks if 'symbol' is accessible from within assembly 'within', with an qualifier of + type "throughTypeOpt". Sets "failedThroughTypeCheck" to true if it failed the "through + type" check. + + + + + Checks if 'symbol' is accessible from within 'within', which must be a INamedTypeSymbol + or an IAssemblySymbol. If 'symbol' is accessed off of an expression then + 'throughTypeOpt' is the type of that expression. This is needed to properly do protected + access checks. Sets "failedThroughTypeCheck" to true if this protected check failed. + + + + + Returns the corresponding symbol in this type or a base type that implements + interfaceMember (either implicitly or explicitly), or null if no such symbol exists + (which might be either because this type doesn't implement the container of + interfaceMember, or this type doesn't supply a member that successfully implements + interfaceMember). + + + + + Gets extended host language services, which includes language services from . + + + + + Acquires a lease on a safe handle. The lease increments the reference count of the + to ensure the handle is not released prior to the lease being released. + + + This method is intended to be used in the initializer of a using statement. Failing to release the + lease will permanently prevent the underlying from being released by the garbage + collector. + + The to lease. + A , which must be disposed to release the resource. + If the lease could not be acquired. + + + + Represents a lease of a . + + + + + + Releases the lease. The behavior of this method is unspecified if called more than + once. + + + + + Fetches the ITypeSymbol that should be used if we were generating a parameter or local that would accept . If + expression is a type, that's returned; otherwise this will see if it's something like a method group and then choose an appropriate delegate. + + + + + Gets semantic information, such as type, symbols, and diagnostics, about the parent of a token. + + The SemanticModel object to get semantic information + from. + The token to get semantic information from. This must be part of the + syntax tree associated with the binding. + A cancellation token. + + + + Returns the leading whitespace of the line located at the specified position in the given snapshot. + + + + + Same as OverlapsHiddenPosition but doesn't throw on cancellation. Instead, returns false + in that case. + + + + + Generates a call to a method *through* an existing field or property symbol. + + + + + + Generates an override of similar to the one + generated for anonymous types. + + + + + In VB it's more idiomatic to write things like Dim t = TryCast(obj, SomeType) + instead of Dim t As SomeType = TryCast(obj, SomeType), so we just elide the type + from the decl. For C# we don't want to do this though. We want to always include the + type and let the simplifier decide if it should be var or not. + + + + + Returns true if the binaryExpression consists of an expression that can never be negative, + such as length or unsigned numeric types, being compared to zero with greater than, + less than, or equals relational operator. + + + + + Gets a type by its metadata name to use for code analysis within a . This method + attempts to find the "best" symbol to use for code analysis, which is the symbol matching the first of the + following rules. + + + + If only one type with the given name is found within the compilation and its referenced assemblies, that + type is returned regardless of accessibility. + + + If the current defines the symbol, that symbol is returned. + + + If exactly one referenced assembly defines the symbol in a manner that makes it visible to the current + , that symbol is returned. + + + Otherwise, this method returns . + + + + The to consider for analysis. + The fully-qualified metadata type name to find. + The symbol to use for code analysis; otherwise, . + + + + Gets project-level effective severity of the given accounting for severity configurations from both the following sources: + 1. Compilation options from ruleset file, if any, and command line options such as /nowarn, /warnaserror, etc. + 2. Analyzer config documents at the project root directory or in ancestor directories. + + + + + Tries to get configured severity for the given + from bulk configuration analyzer config options, i.e. + 'dotnet_analyzer_diagnostic.category-%RuleCategory%.severity = %severity%' + or + 'dotnet_analyzer_diagnostic.severity = %severity%' + Docs: https://docs.microsoft.com/visualstudio/code-quality/use-roslyn-analyzers?view=vs-2019#set-rule-severity-of-multiple-analyzer-rules-at-once-in-an-editorconfig-file for details + + + + + Update a list in place, where a function has the ability to either transform or remove each item. + + The type of items in the list. + The type of state argument passed to the transformation callback. + The list to update. + A function which transforms each element. The function returns the transformed list + element, or to remove the current item from the list. + The state argument to pass to the transformation callback. + + + + Attempts to remove the first item selected by . + + + True if any item has been removed. + + + + + check whether the given span is intersects with the tree + + + + + Returns true if is a given token is a child token of a certain type of parent node. + + The type of the parent node. + The node that we are testing. + A function that, when given the parent node, returns the child token we are interested in. + + + + Returns true if this node is found underneath the specified child in the given parent. + + + + + create a new root node from the given root after adding annotations to the tokens + + tokens should belong to the given root + + + + + create a new root node from the given root after adding annotations to the nodes + + nodes should belong to the given root + + + + + Creates a new tree of nodes from the existing tree with the specified old nodes replaced with a newly computed nodes. + + The root of the tree that contains all the specified nodes. + The nodes from the tree to be replaced. + A function that computes a replacement node for + the argument nodes. The first argument is one of the original specified nodes. The second argument is + the same node possibly rewritten with replaced descendants. + + + + + Creates a new tree of tokens from the existing tree with the specified old tokens replaced with a newly computed tokens. + + The root of the tree that contains all the specified tokens. + The tokens from the tree to be replaced. + A function that computes a replacement token for + the argument tokens. The first argument is one of the originally specified tokens. The second argument is + the same token possibly rewritten with replaced trivia. + + + + + Look inside a trivia list for a skipped token that contains the given position. + + + + + Look inside a trivia list for a skipped token that contains the given position. + + + + + Look inside a trivia list for a skipped token that contains the given position. + + + + + Look inside a trivia list for a skipped token that contains the given position. + + + + + If the position is inside of token, return that token; otherwise, return the token to the right. + + + + + If the position is inside of token, return that token; otherwise, return the token to the left. + + + + + Creates a new token with the leading trivia removed. + + + + + Creates a new token with the trailing trivia removed. + + + + + Gets a list of ancestor nodes (including this node) + + + + + Returns the identifier, keyword, contextual keyword or preprocessor keyword touching this + position, or a token of Kind = None if the caret is not touching either. + + + + + If the position is inside of token, return that token; otherwise, return the token to the right. + + + + + If the position is inside of token, return that token; otherwise, return the token to the left. + + + + + Returns the first non-whitespace position on the given line, or null if + the line is empty or contains only whitespace. + + + + + Returns the first non-whitespace position on the given line as an offset + from the start of the line, or null if the line is empty or contains only + whitespace. + + + + + Determines whether the specified line is empty or contains whitespace only. + + + + + merge provided spans to each distinct group of spans in ascending order + + + + + Returns true if the span encompasses the specified node or token and is contained within its trivia. + + + + + Returns true if the span encompasses a span between the specified nodes or tokens + and is contained within trivia around them. + + + + + Lazily returns all nested types contained (recursively) within this namespace or type. + In case of a type, it is included itself as the first result. + + + + + Standard format for displaying to the user. + + + No return type. + + + + + Contains enough information to determine whether two symbols have the same signature. + + + + + The token to the left of . This token may be touching the position. + + + + + The first token to the left of that we're not touching. Equal to + if we aren't touching . + + + + + Performs several edits to a document. If multiple edits are made within the same + expression context, then the document/semantic-model will be forked after each edit + so that further edits can see if they're still safe to apply. + + + + + Performs several edits to a document. If multiple edits are made within the same + expression context, then the document/semantic-model will be forked after each edit + so that further edits can see if they're still safe to apply. + + + + + Performs several edits to a document. If multiple edits are made within the same + expression context, then the document/semantic-model will be forked after each edit + so that further edits can see if they're still safe to apply. + + + + + Performs several edits to a document. If multiple edits are made within a method + body then the document/semantic-model will be forked after each edit so that further + edits can see if they're still safe to apply. + + + + + Performs several edits to a document. If multiple edits are made within a method + body then the document/semantic-model will be forked after each edit so that further + edits can see if they're still safe to apply. + + + + + Helper function for fix-all fixes where individual fixes may affect the viability + of another. For example, consider the following code: + + if ((double)x == (double)y) + + In this code either cast can be removed, but at least one cast must remain. Even + though an analyzer marks both, a fixer must not remove both. One way to accomplish + this would be to have the fixer do a semantic check after each application. However + This is extremely expensive, especially for hte common cases where one fix does + not affect each other. + + To address that, this helper groups fixes at certain boundary points. i.e. at + statement boundaries. If there is only one fix within the boundary, it does not + do any semantic verification. However, if there are multiple fixes in a boundary + it will call into to validate if the subsequent fix + can be made or not. + + + + + Creates a new instance of this text document updated to have the text specified. + + + + + Creates a new instance of this additional document updated to have the text specified. + + + + + Creates a new instance of this analyzer config document updated to have the text specified. + + + + + Stores the source information for an value. Helpful when + tracking down tokens which aren't properly disposed. + + + + + use in product code to get + and use + in test to get waiter. + + + + + indicate whether asynchronous listener is enabled or not. + it is tri-state since we want to retrieve this value, if never explicitly set, from environment variable + and then cache it. + we read value from environment variable (RoslynWaiterEnabled) because we want team, that doesn't have + access to Roslyn code (InternalVisibleTo), can use this listener/waiter framework as well. + those team can enable this without using API + + + + + indicate whether is enabled or not + it is tri-state since we want to retrieve this value, if never explicitly set, from environment variable + and then cache it. + we read value from environment variable (RoslynWaiterDiagnosticTokenEnabled) because we want team, that doesn't have + access to Roslyn code (InternalVisibleTo), can use this listener/waiter framework as well. + those team can enable this without using API + + + + + Provides a default value for . + + + + + Enable or disable TrackActiveTokens for test + + + + + Get Waiters for listeners for test + + + + + Wait for all of the instances to finish their + work. + + + This is a very handy method for debugging hangs in the unit test. Set a break point in the + loop, dig into the waiters and see all of the active values + representing the remaining work. + + + + + Get all saved DiagnosticAsyncToken to investigate tests failure easier + + + + + Return for the given featureName + + We have this abstraction so that we can have isolated listener/waiter in unit tests + + + + + Get for given feature. + same provider will return a singleton listener for same feature + + + + + Returns a task which completes when all asynchronous operations currently tracked by this waiter are + completed. Asynchronous operations are expedited when possible, meaning artificial delays placed before + asynchronous operations are shortened. + + + + + Returns an awaitable for the specified task that will never throw, even if the source task + faults or is canceled. + + The task whose completion should signal the completion of the returned awaitable. + if set to true the continuation will be scheduled on the caller's context; false to always execute the continuation on the threadpool. + An awaitable. + + + + An awaitable that wraps a task and never throws an exception when waited on. + + + + + The task. + + + + + A value indicating whether the continuation should be scheduled on the current sync context. + + + + + Initializes a new instance of the struct. + + The task. + Whether the continuation should be scheduled on the current sync context. + + + + Gets the awaiter. + + The awaiter. + + + + An awaiter that wraps a task and never throws an exception when waited on. + + + + + The task. + + + + + A value indicating whether the continuation should be scheduled on the current sync context. + + + + + Initializes a new instance of the struct. + + The task. + if set to true [capture context]. + + + + Gets a value indicating whether the task has completed. + + + + + Schedules a delegate for execution at the conclusion of a task's execution. + + The action. + + + + Schedules a delegate for execution at the conclusion of a task's execution + without capturing the ExecutionContext. + + The action. + + + + Does nothing. + + + + + Creates a task that will complete after a time delay, but can be expedited if an operation is waiting for + the task to complete. + + The time to wait before completing the returned task, or TimeSpan.FromMilliseconds(-1) to wait indefinitely. + A cancellation token to observe while waiting for the task to complete. + if the delay compeleted normally; otherwise, if the delay completed due to a request to expedite the delay. + + represents a negative time interval other than TimeSpan.FromMilliseconds(-1). + -or- + The argument's property is greater than . + + The delay has been canceled. + + + + + + + Modification of the murmurhash2 algorithm. Code is simpler because it operates over + strings instead of byte arrays. Because each string character is two bytes, it is known + that the input will be an even number of bytes (though not necessarily a multiple of 4). + + This is needed over the normal 'string.GetHashCode()' because we need to be able to generate + 'k' different well distributed hashes for any given string s. Also, we want to be able to + generate these hashes without allocating any memory. My ideal solution would be to use an + MD5 hash. However, there appears to be no way to do MD5 in .NET where you can: + + a) feed it individual values instead of a byte[] + + b) have the hash computed into a byte[] you provide instead of a newly allocated one + + Generating 'k' pieces of garbage on each insert and lookup seems very wasteful. So, + instead, we use murmur hash since it provides well distributed values, allows for a + seed, and allocates no memory. + + Murmur hash is public domain. Actual code is included below as reference. + + + + + A documentation comment derived from either source text or metadata. + + + + + True if an error occurred when parsing. + + + + + The full XML text of this tag. + + + + + The text in the <example> tag. Null if no tag existed. + + + + + The text in the <summary> tag. Null if no tag existed. + + + + + The text in the <returns> tag. Null if no tag existed. + + + + + The text in the <value> tag. Null if no tag existed. + + + + + The text in the <remarks> tag. Null if no tag existed. + + + + + The names of items in <param> tags. + + + + + The names of items in <typeparam> tags. + + + + + The types of items in <exception> tags. + + + + + The item named in the <completionlist> tag's cref attribute. + Null if the tag or cref attribute didn't exist. + + + + + Used for method, to prevent new allocation of string + + + + + Cache of the most recently parsed fragment and the resulting DocumentationComment + + + + + Parses and constructs a from the given fragment of XML. + + The fragment of XML to parse. + A DocumentationComment instance. + + + + Helper class for parsing XML doc comments. Encapsulates the state required during parsing. + + + + + Parse and construct a from the given fragment of XML. + + The fragment of XML to parse. + A DocumentationComment instance. + + + + Returns the text for a given parameter, or null if no documentation was given for the parameter. + + + + + Returns the text for a given type parameter, or null if no documentation was given for the type parameter. + + + + + Returns the texts for a given exception, or an empty if no documentation was given for the exception. + + + + + An empty comment. + + + + + Finds the constructor which takes exactly one argument, which must be of type EditorBrowsableState. + It does not require that the EditorBrowsableAttribute and EditorBrowsableState types be those + shipped by Microsoft, but it does demand the types found follow the expected pattern. If at any + point that pattern appears to be violated, return null to indicate that an appropriate constructor + could not be found. + + + + + The TypeLib*Attribute classes that accept TypeLib*Flags with FHidden as an option all have two constructors, + one accepting a TypeLib*Flags and the other a short. This methods gets those two constructor symbols for any + of these attribute classes. It does not require that the either of these types be those shipped by Microsoft, + but it does demand the types found follow the expected pattern. If at any point that pattern appears to be + violated, return an empty enumerable to indicate that no appropriate constructors were found. + + + + + Determines, using heuristics, what the next likely value is in this enum. + + + + + Helper for checking whether cycles exist in the extension ordering. + Throws if a cycle is detected. + + A cycle was detected in the extension ordering. + + + + Returns an that will call on + when it is disposed. + + + + + An optional interface which allows an environment to customize the behavior for synchronous methods that need to + block on the result of an asynchronous invocation. An implementation of this is provided in the MEF catalog when + applicable. + + + For Visual Studio, Microsoft.VisualStudio.Threading provides the JoinableTaskFactory.Run method, which is + the expected way to invoke an asynchronous method from a synchronous entry point and block on its completion. + Other environments may choose to use this or any other strategy, or omit an implementation of this interface to + allow callers to simply use . + + New code is expected to use fully-asynchronous programming where possible. In cases where external APIs + restrict ability to be asynchronous, this service allows Roslyn to adhere to environmental policies related to + joining asynchronous work. + + + + + Utility class that can be used to track the progress of an operation in a threadsafe manner. + + + + + Utility class that can be used to track the progress of an operation in a threadsafe manner. + + + + + An XML parser that is designed to parse small fragments of XML such as those that appear in documentation comments. + PERF: We try to re-use the same underlying to reduce the allocation costs of multiple parses. + + + + + Parse the given XML fragment. The given callback is executed until either the end of the fragment + is reached or an exception occurs. + + Type of an additional argument passed to the delegate. + The fragment to parse. + Action to execute while there is still more to read. + Additional argument passed to the callback. + + It is important that the action advances the , + otherwise parsing will never complete. + + + + + A text reader over a synthesized XML stream consisting of a single root element followed by a potentially + infinite stream of fragments. Each time "SetText" is called the stream is rewound to the element immediately + following the synthetic root node. + + + + + Current text to validate. + + + + + Helper class to analyze the semantic effects of a speculated syntax node replacement on the parenting nodes. + Given an expression node from a syntax tree and a new expression from a different syntax tree, + it replaces the expression with the new expression to create a speculated syntax tree. + It uses the original tree's semantic model to create a speculative semantic model and verifies that + the syntax replacement doesn't break the semantics of any parenting nodes of the original expression. + + + + + Creates a semantic analyzer for speculative syntax replacement. + + Original expression to be replaced. + New expression to replace the original expression. + Semantic model of node's syntax tree. + Cancellation token. + + True if semantic analysis should be skipped for the replaced node and performed starting from parent of the original and replaced nodes. + This could be the case when custom verifications are required to be done by the caller or + semantics of the replaced expression are different from the original expression. + + + True if semantic analysis should fail when any of the invocation expression ancestors of in original code has overload resolution failures. + + + + + Original expression to be replaced. + + + + + First ancestor of which is either a statement, attribute, constructor initializer, + field initializer, default parameter initializer or type syntax node. + It serves as the root node for all semantic analysis for this syntax replacement. + + + + + Semantic model for the syntax tree corresponding to + + + + + Node which replaces the . + Note that this node is a cloned version of node, which has been re-parented + under the node to be speculated, i.e. . + + + + + Node created by replacing under node. + This node is used as the argument to the GetSpeculativeSemanticModel API and serves as the root node for all + semantic analysis of the speculated tree. + + + + + Speculative semantic model used for analyzing the semantics of the new tree. + + + + + Determines whether performing the given syntax replacement will change the semantics of any parenting expressions + by performing a bottom up walk from the up to + in the original tree and simultaneously walking bottom up from up to + in the speculated syntax tree and performing appropriate semantic comparisons. + + + + + Checks whether the semantic symbols for the and are non-null and compatible. + + + + + + Determine if removing the cast could cause the semantics of System.Object method call to change. + E.g. Dim b = CStr(1).GetType() is necessary, but the GetType method symbol info resolves to the same with or without the cast. + + + + + Determines if the symbol is a non-overridable, non static method on System.Object (e.g. GetType) + + + + + If the token1 is expected to be part of the leading trivia of the token2 then the trivia + before the token1FullSpanEnd, which the fullspan end of the token1 should be ignored + + + + + this will create a span that includes its trailing trivia of its previous token and leading trivia of its next token + for example, for code such as "class A { int ...", if given tokens are "A" and "{", this will return span [] of "class[ A { ]int ..." + which included trailing trivia of "class" which is previous token of "A", and leading trivia of "int" which is next token of "{" + + + + + Given a set of folders from build the namespace that would match + the folder structure. If a document is located in { "Bat" , "Bar", "Baz" } then the namespace could be + "Bat.Bar.Baz". If a rootNamespace is provided, it is prepended to the generated namespace. + + Returns null if the folders contain parts that are invalid identifiers for a namespace. + + + + + Helper as VB's CType doesn't work without arithmetic overflow. + + + + + Helper class to allow one to do simple regular expressions over a sequence of objects (as + opposed to a sequence of characters). + + + + + Matcher equivalent to (m*) + + + + + Matcher equivalent to (m+) + + + + + Matcher equivalent to (m_1|m_2|...|m_n) + + + + + Matcher equivalent to (m_1 ... m_n) + + + + + Matcher that matches an element if the provide predicate returns true. + + + + + Breaks an identifier string into constituent parts. + + + + + Provides a way to test two symbols for equivalence. While there are ways to ask for + different sorts of equivalence, the following must hold for two symbols to be considered + equivalent. + + The kinds of the two symbols must match. + The names of the two symbols must match. + The arity of the two symbols must match. + If the symbols are methods or parameterized properties, then the signatures of the two + symbols must match. + Both symbols must be definitions or must be instantiations. If they are instantiations, + then they must be instantiated in the same manner. + The containing symbols of the two symbols must be equivalent. + Nullability of symbols is not involved in the comparison. + + Note: equivalence does not concern itself with whole symbols. Two types are considered + equivalent if the above hold, even if one type has different members than the other. Note: + type parameters, and signature parameters are not considered 'children' when comparing + symbols. + + Options are provided to tweak the above slightly. For example, by default, symbols are + equivalent only if they come from the same assembly or different assemblies of the same simple name. + However, one can ask if two symbols are equivalent even if their assemblies differ. + + + + + Compares given symbols and for equivalence. + + + + + Compares given symbols and for equivalence and populates + with equivalent non-nested named type key-value pairs that are contained in different assemblies. + These equivalent named type key-value pairs represent possibly equivalent forwarded types, but this API doesn't perform any type forwarding equivalence checks. + + This API is only supported for . + + + + Worker for comparing two named types for equivalence. Note: The two + types must have the same TypeKind. + + The first type to compare + The second type to compare + + Map of equivalent non-nested types to be populated, such that each key-value pair of named types are equivalent but reside in different assemblies. + This map is populated only if we are ignoring assemblies for symbol equivalence comparison, i.e. is true. + + True if the two types are equivalent. + + + + Opens a scope that will call on once + disposed. This is useful to easily wrap a series of operations and now that progress will be reported no + matter how it completes. + + + + + Transforms baseName into a name that does not conflict with any name in 'reservedNames' + + + + + Ensures that any 'names' is unique and does not collide with any other name. Names that + are marked as IsFixed can not be touched. This does mean that if there are two names + that are the same, and both are fixed that you will end up with non-unique names at the + end. + + + + + Updates the names in to be unique. A name at a particular + index i will not be touched if isFixed[i] is . All + other names will not collide with any other in and will all + return for canUse(name). + + + + + Initializes a new instance of that is + empty. + + + + + Initializes a new instance of that contains the specified span. + + TextSpan contained by the span set. + + + + Initializes a new instance of that contains the specified list of spans. + + The spans to be added. + + The list of spans will be sorted and normalized (overlapping and adjoining spans will be combined). + This constructor runs in O(N log N) time, where N = spans.Count. + is null. + + + + Finds the union of two span sets. + + + The first span set. + + + The second span set. + + + The new span set that corresponds to the union of and . + + This operator runs in O(N+M) time where N = left.Count, M = right.Count. + Either or is null. + + + + Finds the overlap of two span sets. + + The first span set. + The second span set. + The new span set that corresponds to the overlap of and . + This operator runs in O(N+M) time where N = left.Count, M = right.Count. + or is null. + + + + Finds the intersection of two span sets. + + The first span set. + The second span set. + The new span set that corresponds to the intersection of and . + This operator runs in O(N+M) time where N = left.Count, M = right.Count. + is null. + is null. + + + + Finds the difference between two sets. The difference is defined as everything in the first span set that is not in the second span set. + + The first span set. + The second span set. + The new span set that corresponds to the difference between and . + + Empty spans in the second set do not affect the first set at all. This method returns empty spans in the first set that are not contained by any set in + the second set. + + is null. + is null. + + + + Determines whether two span sets are the same. + + The first set. + The second set. + true if the two sets are equivalent, otherwise false. + + + + Determines whether two span sets are not the same. + + The first set. + The second set. + true if the two sets are not equivalent, otherwise false. + + + + Determines whether this span set overlaps with another span set. + + The span set to test. + true if the span sets overlap, otherwise false. + is null. + + + + Determines whether this span set overlaps with another span. + + The span to test. + true if this span set overlaps with the given span, otherwise false. + + + + Determines whether this span set intersects with another span set. + + Set to test. + true if the span sets intersect, otherwise false. + is null. + + + + Determines whether this span set intersects with another span. + + true if this span set intersects with the given span, otherwise false. + + + + Gets a unique hash code for the span set. + + A 32-bit hash code associated with the set. + + + + Determines whether this span set is the same as another object. + + The object to test. + true if the two objects are equal, otherwise false. + + + + Provides a string representation of the set. + + The string representation of the set. + + + + Private constructor for use when the span list is already normalized. + + An already normalized span list. + + + + Contains the options that needs to be drilled down to the Simplification Engine + + + + + This option tells the simplification engine if the Qualified Name should be replaced by Alias + if the user had initially not used the Alias + + + + + This option influences the name reduction of members of a module in VB. If set to true, the + name reducer will e.g. reduce Namespace.Module.Member to Namespace.Member. + + + + + This option says that if we should simplify the Generic Name which has the type argument inferred + + + + + This option says if we should simplify the Explicit Type in Local Declarations + + + + + This option says if we should simplify to NonGeneric Name rather than GenericName + + + + + This option says if we should simplify from Derived types to Base types in Static Member Accesses + + + + + This option says if we should simplify away the or in member access expressions. + + + + + This option says if we should simplify away the . or . in field access expressions. + + + + + This option says if we should simplify away the . or . in property access expressions. + + + + + This option says if we should simplify away the . or . in method access expressions. + + + + + This option says if we should simplify away the . or . in event access expressions. + + + + + This option says if we should prefer keyword for Intrinsic Predefined Types in Declarations + + + + + This option says if we should prefer keyword for Intrinsic Predefined Types in Member Access Expression + + + + + Expands and Reduces subtrees. + + Expansion: + 1) Makes inferred names explicit (on anonymous types and tuples). + 2) Replaces names with fully qualified dotted names. + 3) Adds parentheses around expressions + 4) Adds explicit casts/conversions where implicit conversions exist + 5) Adds escaping to identifiers + 6) Rewrites extension method invocations with explicit calls on the class containing the extension method. + + Reduction: + 1) Shortens dotted names to their minimally qualified form + 2) Removes unnecessary parentheses + 3) Removes unnecessary casts/conversions + 4) Removes unnecessary escaping + 5) Rewrites explicit calls to extension methods to use dot notation + 6) Removes unnecessary tuple element names and anonymous type member names + + + + + The annotation the reducer uses to identify sub trees to be reduced. + The Expand operations add this annotation to nodes so that the Reduce operations later find them. + + + + + This is the annotation used by the simplifier and expander to identify Predefined type and preserving + them from over simplification + + + + + The annotation used to identify sub trees to look for symbol annotations on. + It will then add import directives for these symbol annotations. + + + + + Expand qualifying parts of the specified subtree, annotating the parts using the annotation. + + + + + Expand qualifying parts of the specified subtree, annotating the parts using the annotation. + + + + + Expand qualifying parts of the specified subtree, annotating the parts using the annotation. + + + + + Expand qualifying parts of the specified subtree, annotating the parts using the annotation. + + + + + Reduce all sub-trees annotated with found within the document. The annotated node and all child nodes will be reduced. + + + + + Reduce the sub-trees annotated with found within the subtrees identified with the specified . + The annotated node and all child nodes will be reduced. + + + + + Reduce the sub-trees annotated with found within the specified span. + The annotated node and all child nodes will be reduced. + + + + + Reduce the sub-trees annotated with found within the specified spans. + The annotated node and all child nodes will be reduced. + + + + + This option describes the naming rules that should be applied to specified categories of symbols, + and the level to which those rules should be enforced. + + + + + This annotation will be used by the expansion/reduction to annotate expanded syntax nodes to store the information that an + alias was used before expansion. + + + + + When applied to a SyntaxNode, prevents the simplifier from converting a type to 'var'. + + + + + An annotation that holds onto information about a type or namespace symbol. + + + + + Resets all the document state cached by the analyzer. + + + + + Resets all the document state cached by the analyzer. + + + + + Register a solution crawler for a particular workspace + + + + + null implementation of the service. it doesn't do anything since there is no way to observe + its impact in this layer. + + + + + Option to turn configure background analysis scope for the current user. + + + + + Option to turn configure background analysis scope for the current solution. + + + + + This option is used by TypeScript and F#. + + + + + Enables forced scope when low VM is detected to improve performance. + + + + + Gets the background analysis scope configured through Tools → Options... + + This value is not affected by the solution-specific configuration set through + . + + + + + Gets the effective background analysis scope for the specified project. + + Gets the solution-specific analysis scope set through + , or the default analysis scope if no solution-specific + scope is set. + + + + + Gets the effective background analysis scope for the current solution. + + Gets the solution-specific analysis scope set through + , or the default analysis scope if no solution-specific + scope is set. + + + + + A service that enables storing and retrieving of information associated with solutions, + projects or documents across runtime sessions. + + + + + This lock guards all mutable fields in this type. + + + + + Can throw. If it does, the caller () will attempt + to delete the database and retry opening one more time. If that fails again, the instance will be used. + + + + + A trivial wrapper that we can hand out for instances from the + that wraps the underlying singleton. + + + + + Obsolete. Roslyn no longer supports a mechanism to perform arbitrary persistence of data. If such functionality + is needed, consumers are responsible for providing it themselves with whatever semantics are needed. + + + + + Handle that can be used with to read data for a + without needing to have the entire snapshot available. + This is useful for cases where acquiring an entire snapshot might be expensive (for example, during + solution load), but querying the data is still desired. + + + + + Handle that can be used with to read data for a + without needing to have the entire snapshot available. + This is useful for cases where acquiring an entire snapshot might be expensive (for example, during + solution load), but querying the data is still desired. + + + + + Handle that can be used with to read data for a + without needing to have the entire snapshot available. + This is useful for cases where acquiring an entire snapshot might be expensive (for example, during + solution load), but querying the data is still desired. + + + + + encoded bytes of a text value. Span + should not be NUL-terminated. + + + + + The database that is stored on disk and actually persists data across VS sessions. + + + + + An in-memory database that caches values before being transferred to . Does not persist across VS sessions. + + + + + Name of the different dbs. + + 1. "main" is the default that sqlite uses. This just allows us to be explicit that we + want this db. + + 2. "writecache" is the name for the in-memory write-cache db. Writes will be staged + there and will be periodically flushed to the real on-disk db to help with perf. + + Perf measurements show this as significantly better than all other design options. It's + also one of the simplest in terms of the design. + + The design options in order of performance (slowest to fastest) are: + + 1. send writes directly to the main db. this is incredibly slow (since each write incurs + the full IO overhead of a transaction). It is the absolute simplest in terms of + implementation though. + + 2. send writes to a temporary on-disk db (with synchronous=off and journal_mode=memory), + then flush those to the main db. This is also quite slow due to their still needing to + be disk IO with each write. Implementation is fairly simple, with writes just going to + the temp db and reads going to both. + + 3. Buffer writes in (.net) memory and flush them to disk. This is much faster than '1' + or '2' but requires a lot of manual book-keeping and extra complexity. For example, any + reads go to the db. So that means that reads have to ensure that any writes to the same + rows have been persisted so they can observe them. + + 4. send writes to an sqlite in-memory cache DB. This is extremely fast for sqlite as + there is no actual IO that is performed. It is also easy in terms of bookkeeping as + both DBs have the same schema and are easy to move data between. '4' is faster than all + of the above. Complexity is minimized as reading can be done just by examining both DBs + in the same way. It's not as simple as '1' but it's much simpler than '3'. + + + + + Simple wrapper struct for a that helps ensure that the statement is always has it's + bindings cleared () and is after it is + used. + + See https://sqlite.org/c3ref/stmt.html: + The life-cycle of a prepared statement object usually goes like this: + 1) Create the prepared statement object using sqlite3_prepare_v2(). + 2) Bind values to parameters using the sqlite3_bind_* () interfaces. + 3) Run the SQL by calling sqlite3_step() one or more times. + 4) Reset the prepared statement using sqlite3_reset() then go back to step 2. Do this zero or more times. + 5) Destroy the object using sqlite3_finalize(). + + This type helps ensure that '4' happens properly by clients executing statement. + Note that destroying/finalizing a statement is not the responsibility of a client + as it will happen to all prepared statemnets when the is + d. + + + + + Encapsulates a connection to a sqlite database. On construction an attempt will be made + to open the DB if it exists, or create it if it does not. + + Connections are considered relatively heavyweight and are pooled until the + is d. Connections can be used by different threads, + but only as long as they are used by one thread at a time. They are not safe for concurrent + use by several threads. + + s can be created through the user of . + These statements are cached for the lifetime of the connection and are only finalized + (i.e. destroyed) when the connection is closed. + + + + + The raw handle to the underlying DB. + + + + + Our cache of prepared statements for given sql strings. + + + + + Whether or not we're in a transaction. We currently don't supported nested transactions. + If we want that, we can achieve it through sqlite "save points". However, that's adds a + lot of complexity that is nice to avoid. + + + + + Represents a prepared sqlite statement. s can be + ed (i.e. executed). Executing a statement can result in + either if the command completed and produced no + value, or if it evaluated out to a sql row that can + then be queried. + + If a statement is parameterized then parameters can be provided by the + BindXXX overloads. Bind is 1-based (to match sqlite). + + When done executing a statement, the statement should be . + The easiest way to ensure this is to just use a 'using' statement along with + a . By resetting the statement, it can + then be used in the future with new bound parameters. + + Finalization/destruction of the underlying raw sqlite statement is handled + by . + + + + + Gets a from the connection pool, or creates one if none are available. + + + Database connections have a large amount of overhead, and should be returned to the pool when they are no + longer in use. In particular, make sure to avoid letting a connection lease cross an + boundary, as it will prevent code in the asynchronous operation from using the existing connection. + + + + + + Only use this overload if it is safe to bypass the normal scheduler check. Only startup code (which runs + before any reads/writes/flushes happen) should use this. + + + + + Maps from database file path to connection pool. + + + Access to this field is synchronized through . + + + + + Use a to simulate a reader-writer lock. + Read operations are performed on the + and writes are performed on the . + + We use this as a condition of using the in-memory shared-cache sqlite DB. This DB + doesn't busy-wait when attempts are made to lock the tables in it, which can lead to + deadlocks. Specifically, consider two threads doing the following: + + Thread A starts a transaction that starts as a reader, and later attempts to perform a + write. Thread B is a writer (either started that way, or started as a reader and + promoted to a writer first). B holds a RESERVED lock, waiting for readers to clear so it + can start writing. A holds a SHARED lock (it's a reader) and tries to acquire RESERVED + lock (so it can start writing). The only way to make progress in this situation is for + one of the transactions to roll back. No amount of waiting will help, so when SQLite + detects this situation, it doesn't honor the busy timeout. + + To prevent this scenario, we control our access to the db explicitly with operations that + can concurrently read, and operations that exclusively write. + + All code that reads or writes from the db should go through this. + + + + + Returns null in the case where an IO exception prevented us from being able to acquire + the db lock file. + + + + + Implementation of an backed by SQLite. + + + + + Abstracts out access to specific tables in the DB. This allows us to share overall + logic around cancellation/pooling/error-handling/etc, while still hitting different + db tables. + + + + + Gets the internal sqlite db-id (effectively the row-id for the doc or proj table, or just the string-id + for the solution table) for the provided caller key. This db-id will be looked up and returned if a + mapping already exists for it in the db. Otherwise, a guaranteed unique id will be created for it and + stored in the db for the future. This allows all associated data to be cheaply associated with the + simple ID, avoiding lots of db bloat if we used the full in numerous places. + + Whether or not the caller owns the write lock and thus is ok with the DB id + being generated and stored for this component key when it currently does not exist. If then failing to find the key will result in being returned. + + + + + Mapping from the workspace's ID for a document, to the ID we use in the DB for the document. + Kept locally so we don't have to hit the DB for the common case of trying to determine the + DB id for a document. + + + + + Given a document, and the name of a stream to read/write, gets the integral DB ID to + use to find the data inside the DocumentData table. + + + + + responsible for storing and + retrieving data from . + + + + + A queue to batch up flush requests and ensure that we don't issue then more often than every . + + + + + Amount of time to wait between flushing writes to disk. 500ms means we can flush + writes to disk two times a second. + + + + + We use a pool to cache reads/writes that are less than 4k. Testing with Roslyn, + 99% of all writes (48.5k out of 49.5k) are less than that size. So this helps + ensure that we can pool as much as possible, without caching excessively large + arrays (for example, Roslyn does write out nearly 50 chunks that are larger than + 100k each). + + + + + The max amount of byte[]s we cache. This caps our cache at 4MB while allowing + us to massively speed up writing (by batching writes). Because we can write to + disk two times a second. That means a total of 8MB/s that can be written to disk + using only our cache. Given that Roslyn itself only writes about 50MB to disk + after several minutes of analysis, this amount of bandwidth is more than sufficient. + + + + + Mapping from the workspace's ID for a project, to the ID we use in the DB for the project. + Kept locally so we don't have to hit the DB for the common case of trying to determine the + DB id for a project. + + + + + Given a project, and the name of a stream to read/write, gets the integral DB ID to + use to find the data inside the ProjectData table. + + + + + responsible for storing and + retrieving data from . + + + + + responsible for storing and + retrieving data from . Note that with the Solution + table there is no need for key->id translation. i.e. the key acts as the ID itself. + + + + + Inside the DB we have a table dedicated to storing strings that also provides a unique + integral ID per string. This allows us to store data keyed in a much more efficient + manner as we can use those IDs instead of duplicating strings all over the place. For + example, there may be many pieces of data associated with a file. We don't want to + key off the file path in all these places as that would cause a large amount of bloat. + + Because the string table can map from arbitrary strings to unique IDs, it can also be + used to create IDs for compound objects. For example, given the IDs for the FilePath + and Name of a Project, we can get an ID that represents the project itself by just + creating a compound key of those two IDs. This ID can then be used in other compound + situations. For example, a Document's ID is creating by compounding its Project's + ID, along with the IDs for the Document's FilePath and Name. + + The format of the table is: + + StringInfo + -------------------------------------------------------------- + | Id (integer, primary key, auto increment) | Data (varchar) | + -------------------------------------------------------------- + + + + + Inside the DB we have a table for data corresponding to the . The + data is just a blob that is keyed by a string Id. Data with this ID can be retrieved + or overwritten. + + The format of the table is: + + SolutionData + ------------------------------------------------------------------- + | DataId (primary key, varchar) | | Checksum (blob) | Data (blob) | + ------------------------------------------------------------------- + + + + + Inside the DB we have a table for data that we want associated with a . + The data is keyed off of an integral value produced by combining the ID of the Project and + the ID of the name of the data (see . + + This gives a very efficient integral key, and means that the we only have to store a + single mapping from stream name to ID in the string table. + + The format of the table is: + + ProjectData + ------------------------------------------------------------------- + | DataId (primary key, integer) | | Checksum (blob) | Data (blob) | + ------------------------------------------------------------------- + + + + + Inside the DB we have a table for data that we want associated with a . + The data is keyed off of an integral value produced by combining the ID of the Document and + the ID of the name of the data (see . + + This gives a very efficient integral key, and means that the we only have to store a + single mapping from stream name to ID in the string table. + + The format of the table is: + + DocumentData + ------------------------------------------------------------------- + | DataId (primary key, integer) | | Checksum (blob) | Data (blob) | + ------------------------------------------------------------------- + + + + + Used so we can mock out logging in unit tests. + + + + + Searches for packages that contain a type with the provided name and arity. + Note: Implementations are free to return the results they feel best for the + given data. Specifically, they can do exact or fuzzy matching on the name. + They can use or ignore the arity depending on their capabilities. + + Implementations should return results in order from best to worst (from their + perspective). + + + + + Searches for packages that contain an assembly with the provided name. + Note: Implementations are free to return the results they feel best for the + given data. Specifically, they can do exact or fuzzy matching on the name. + + Implementations should return results in order from best to worst (from their + perspective). + + + + + Searches for reference assemblies that contain a type with the provided name and arity. + Note: Implementations are free to return the results they feel best for the + given data. Specifically, they can do exact or fuzzy matching on the name. + They can use or ignore the arity depending on their capabilities. + + Implementations should return results in order from best to worst (from their + perspective). + + + + + Service that allows you to query the SymbolSearch database and which keeps + the database up to date. + + + + + Provides access to the telemetry service to workspace services. + Abstract away the actual implementation of the telemetry service (e.g. Microsoft.VisualStudio.Telemetry). + + + + + True if a telemetry session has started. + + + + + Serialized the current telemetry settings. Returns if session hasn't started. + + + + + Adds a used to log unexpected exceptions. + + + + + Removes a used to log unexpected exceptions. + + + + + Reports telemetry on API usage. + + + + + Feature name used in telemetry. + + + + + Interface to allow host (VS) to inform the OOP service to start incrementally analyzing and + reporting results back to the host. + + + + + Callback the host (VS) passes to the OOP service to allow it to send batch notifications about todo comments. + + + + + Serialization type used to pass information to/from OOP and VS. + + + + + The documentation provider used to lookup xml docs for any metadata reference we pass out. They'll + all get the same xml doc comment provider (as different references to the same compilation don't + see the xml docs any differently). This provider does root a Compilation around. However, this should + not be an issue in practice as the compilation we are rooting is a clone of the acutal compilation of + project, and not the compilation itself. This clone doesn't share any symbols/semantics with the main + compilation, and it can dump syntax trees whenever necessary. What is does store is the compact + decl-table which is safe and cheap to hold onto long term. When some downstream consumer of this + metadata-reference then needs to get xml-doc comments, it will resolve a doc-comment-id against this + decl-only-compilation. Resolution is very cheap, only causing the necessary symbols referenced directly + in the ID to be created. As downstream consumers are only likely to resolve a small handful of these + symbols in practice, this should not be expensive to hold onto. Importantly, semantic models and + complex method binding/caching should never really happen with this compilation. + + + + + A class used to provide XML documentation to the compiler for members from metadata from an XML document source. + + + + + Gets the source stream for the XML document. + + The cancellation token. + + + + + Creates an from bytes representing XML documentation data. + + The XML document bytes. + An . + + + + Creates an from an XML documentation file. + + The path to the XML file. + An . + + + + A trivial XmlDocumentationProvider which never returns documentation. + + + + + The name the underlying naming system came up with based on the argument itself. + This might be a name like "_value". We pass this along because it can help + later parts of the GenerateConstructor process when doing things like field hookup. + + + + + The name we think should actually be used for this parameter. This will include + stripping the name of things like underscores. + + + + + Returns true if a type name matches a document name. We use + case insensitive matching to determine this match so that files + "a.cs" and "A.cs" both match a class called "A" + + + + + Standard way to get the display name from a SyntaxNode. If the display + name is null, returns false. Otherwise uses + + + + + Gets a type name based on a document name. Returns null + if the document has no name or the document has invalid characters in the name + such that would throw. + + + + + A workspace that allows full manipulation of projects and documents, + but does not persist changes. + + + + + Returns true, signifiying that you can call the open and close document APIs to add the document into the open document list. + + + + + Clears all projects and documents from the workspace. + + + + + Adds an entire solution to the workspace, replacing any existing solution. + + + + + Adds a project to the workspace. All previous projects remain intact. + + + + + Adds a project to the workspace. All previous projects remain intact. + + + + + Adds multiple projects to the workspace at once. All existing projects remain intact. + + + + + + Adds a document to the workspace. + + + + + Adds a document to the workspace. + + + + + Puts the specified document into the open state. + + + + + Puts the specified document into the closed state. + + + + + Puts the specified additional document into the open state. + + + + + Puts the specified additional document into the closed state + + + + + Puts the specified analyzer config document into the open state. + + + + + Puts the specified analyzer config document into the closed state + + + + + Create a structure initialized from a compilers command line arguments. + + + + + Create a structure initialized with data from a compiler command line. + + + + + Hidden registry key to control maximum size of a text file we will read into memory. + we have this option to reduce a chance of OOM when user adds massive size files to the solution. + Default threshold is 100MB which came from some internal data on big files and some discussion. + + User can override default value by setting DWORD value on FileLengthThreshold in + "[VS HIVE]\Roslyn\Internal\Performance\Text" + + + + + Absolute path of the file. + + + + + Specifies an encoding to be used if the actual encoding of the file + can't be determined from the stream content (the stream doesn't start with Byte Order Mark). + If null auto-detect heuristics are used to determine the encoding. + Note that if the stream starts with Byte Order Mark the value of is ignored. + + + + + Creates a content loader for specified file. + + An absolute file path. + + Specifies an encoding to be used if the actual encoding can't be determined from the stream content (the stream doesn't start with Byte Order Mark). + If not specified auto-detect heuristics are used to determine the encoding. + Note that if the stream starts with Byte Order Mark the value of is ignored. + + is null. + is not an absolute path. + + + + Load a text and a version of the document in the workspace. + + + + + + + Load a text and a version of the document in the workspace. + + + + + + + Represents an additional file passed down to analyzers. + + + + + solution branch Id + + + + + Checksum of data can be used later to see whether two data are same or not + without actually comparing data itself + + + + + The intended size of the structure. + + + + + Create Checksum from given byte array. if byte array is bigger than , it will be + truncated to the size. + + + + + Create Checksum from given byte array. if byte array is bigger than , it will be + truncated to the size. + + + + + This structure stores the 20-byte hash as an inline value rather than requiring the use of + byte[]. + + + + + Paths of files produced by the compilation. + + + + + Full path to the assembly or module produced by the compilation, or if unknown. + + + + + for regular C#/VB files. + + + + + Represents a source code document that is part of a project. + It provides access to the source text, parsed syntax tree and the corresponding semantic model. + + + + + A cached reference to the . + + + + + A cached task that can be returned once the tree has already been created. This is only set if returns true, + so the inner value can be non-null. + + + + + The kind of source code this document contains. + + + + + True if the info of the document change (name, folders, file path; not the content) + + + + + Get the current syntax tree for the document if the text is already loaded and the tree is already parsed. + In almost all cases, you should call to fetch the tree, which will parse the tree + if it's not already parsed. + + + + + Get the current syntax tree version for the document if the text is already loaded and the tree is already parsed. + In almost all cases, you should call to fetch the version, which will load the tree + if it's not already available. + + + + + Gets the version of the document's top level signature if it is already loaded and available. + + + + + Gets the version of the syntax tree. This is generally the newer of the text version and the project's version. + + + + + if this Document supports providing data through the + and methods. + + If then these methods will return instead. + + + + + if this Document supports providing data through the + method. + + If then that method will return instead. + + + + + Gets the for this document asynchronously. + + + The returned syntax tree can be if the returns . This function may cause computation to occur the first time it is called, but will return + a cached result every subsequent time. 's can hold onto their roots lazily. So calls + to or may end up causing computation + to occur at that point. + + + + + Gets the root node of the current syntax tree if the syntax tree has already been parsed and the tree is still cached. + In almost all cases, you should call to fetch the root node, which will parse + the document if necessary. + + + + + Gets the root node of the syntax tree asynchronously. + + + The returned will be if returns . This function will return + the same value if called multiple times. + + + + + Only for features that absolutely must run synchronously (probably because they're + on the UI thread). Right now, the only feature this is for is Outlining as VS will + block on that feature from the UI thread when a document is opened. + + + + + Gets the current semantic model for this document if the model is already computed and still cached. + In almost all cases, you should call , which will compute the semantic model + if necessary. + + + + + Gets the semantic model for this document asynchronously. + + + The returned may be if returns . This function will + return the same value if called multiple times. + + + + + Creates a new instance of this document updated to have the source code kind specified. + + + + + Creates a new instance of this document updated to have the text specified. + + + + + Creates a new instance of this document updated to have a syntax tree rooted by the specified syntax node. + + + + + Creates a new instance of this document updated to have the specified name. + + + + + Creates a new instance of this document updated to have the specified folders. + + + + + Creates a new instance of this document updated to have the specified file path. + + + + + + Get the text changes between this document and a prior version of the same document. + The changes, when applied to the text of the old document, will produce the text of the current document. + + + + + Gets the list of s that are linked to this + . s are considered to be linked if they + share the same . This is excluded from the + result. + + + + + Creates a branched version of this document that has its semantic model frozen in whatever state it is available at the time, + assuming a background process is constructing the semantics asynchronously. Repeated calls to this method may return + documents with increasingly more complete semantics. + + Use this method to gain access to potentially incomplete semantics quickly. + + + + + Returns the options that should be applied to this document. This consists of global options from , + merged with any settings the user has specified at the document levels. + + + This method is async because this may require reading other files. In files that are already open, this is expected to be cheap and complete synchronously. + + + + + An identifier that can be used to retrieve the same across versions of the + workspace. + + + + + Creates a new instance. + + The project id this document id is relative to. + An optional name to make this id easier to recognize while debugging. + + + + A class that represents all the arguments necessary to create a new document instance. + + + + + The Id of the document. + + + + + The name of the document. + + + + + The names of the logical nested folders the document is contained in. + + + + + The kind of the source code. + + + + + The file path of the document. + + + + + True if the document is a side effect of the build. + + + + + A loader that can retrieve the document text. + + + + + A associated with this document + + + + + Create a new instance of a . + + + + + type that contains information regarding this document itself but + no tree information such as document info + + + + + The Id of the document. + + + + + The name of the document. + + + + + The names of the logical nested folders the document is contained in. + + + + + The kind of the source code. + + + + + The file path of the document. + + + + + True if the document is a side effect of the build. + + + + + True if the source code contained in the document is only used in design-time (e.g. for completion), + but is not passed to the compiler when the containing project is built, e.g. a Razor view + + + + + A source for constructed from an syntax tree. + + + + + Indicates whether a type has checksum or not + + + + + Computes the text changes between two documents. + + The old version of the document. + The new version of the document. + The cancellation token. + An array of changes. + + + + Computes the text changes between two documents. + + The old version of the document. + The new version of the document. + The type of differencing to perform. Not supported by all text differencing services. + The cancellation token. + An array of changes. + + + + The mode in which value is preserved. + + + + + The value is guaranteed to have the same contents across multiple accesses. + + + + + The value is guaranteed to the same instance across multiple accesses. + + + + + Represents a project that is part of a . + + + + + The solution this project is part of. + + + + + The ID of the project. Multiple instances may share the same ID. However, only + one project may have this ID in any given solution. + + + + + The path to the project file or null if there is no project file. + + + + + The path to the output file, or null if it is not known. + + + + + The path to the reference assembly output file, or null if it is not known. + + + + + Compilation output file paths. + + + + + The default namespace of the project ("" if not defined, which means global namespace), + or null if it is unknown or not applicable. + + + Right now VB doesn't have the concept of "default namespace". But we conjure one in workspace + by assigning the value of the project's root namespace to it. So various feature can choose to + use it for their own purpose. + In the future, we might consider officially exposing "default namespace" for VB project + (e.g. through a "defaultnamespace" msbuild property) + + + + + if this supports providing data through the + method. + + If then method will return instead. + + + + + The language services from the host environment associated with this project's language. + + + + + The language associated with the project. + + + + + The name of the assembly this project represents. + + + + + The name of the project. This may be different than the assembly name. + + + + + The list of all other metadata sources (assemblies) that this project references. + + + + + The list of all other projects within the same solution that this project references. + + + + + The list of all other projects that this project references, including projects that + are not part of the solution. + + + + + The list of all the diagnostic analyzer references for this project. + + + + + The options used by analyzers for this project. + + + + + The options used when building the compilation for this project. + + + + + The options used when parsing documents for this project. + + + + + Returns true if this is a submission project. + + + + + True if the project has any documents. + + + + + All the document IDs associated with this project. + + + + + All the additional document IDs associated with this project. + + + + + All the additional document IDs associated with this project. + + + + + All the regular documents associated with this project. Documents produced from source generators are returned by + . + + + + + All the additional documents associated with this project. + + + + + All the s associated with this project. + + + + + True if the project contains a document with the specified ID. + + + + + True if the project contains an additional document with the specified ID. + + + + + True if the project contains an with the specified ID. + + + + + Get the documentId in this project with the specified syntax tree. + + + + + Get the document in this project with the specified syntax tree. + + + + + Get the document in this project with the specified document Id. + + + + + Get the additional document in this project with the specified document Id. + + + + + Get the analyzer config document in this project with the specified document Id. + + + + + Gets a document or a source generated document in this solution with the specified document ID. + + + + + Gets a document, additional document, analyzer config document or a source generated document in this solution with the specified document ID. + + + + + Gets all source generated documents in this project. + + + + + Returns the for a source generated document that has already been generated and observed. + + + This is only safe to call if you already have seen the SyntaxTree or equivalent that indicates the document state has already been + generated. This method exists to implement and is best avoided unless you're doing something + similarly tricky like that. + + + + + Tries to get the cached for this project if it has already been created and is still cached. In almost all + cases you should call which will either return the cached + or create a new one otherwise. + + + + + Get the for this project asynchronously. + + + Returns the produced , or if returns . This function will + return the same value if called multiple times. + + + + + Determines if the compilation returned by and all its referenced compilation are from fully loaded projects. + + + + + Gets an object that lists the added, changed and removed documents between this project and the specified project. + + + + + The project version. This equates to the version of the project file. + + + + + The version of the most recently modified document. + + + + + The most recent version of the project, its documents and all dependent projects and documents. + + + + + The semantic version of this project including the semantics of referenced projects. + This version changes whenever the consumable declarations of this project and/or projects it depends on change. + + + + + The semantic version of this project not including the semantics of referenced projects. + This version changes only when the consumable declarations of this project change. + + + + + Calculates a checksum that contains a project's checksum along with a checksum for each of the project's + transitive dependencies. + + + This checksum calculation can be used for cases where a feature needs to know if the semantics in this project + changed. For example, for diagnostics or caching computed semantic data. The goal is to ensure that changes to + + Files inside the current project + Project properties of the current project + Visible files in referenced projects + Project properties in referenced projects + + are reflected in the metadata we keep so that comparing solutions accurately tells us when we need to recompute + semantic work. + + This method of checking for changes has a few important properties that differentiate it from other methods of determining project version. + + Changes to methods inside the current project will be reflected to compute updated diagnostics. + does not change as it only returns top level changes. + Reloading a project without making any changes will re-use cached diagnostics. + changes as the project is removed, then added resulting in a version change. + + + + + + + Creates a new instance of this project updated to have the new assembly name. + + + + + Creates a new instance of this project updated to have the new default namespace. + + + + + Creates a new instance of this project updated to have the specified compilation options. + + + + + Creates a new instance of this project updated to have the specified parse options. + + + + + Creates a new instance of this project updated to include the specified project reference + in addition to already existing ones. + + + + + Creates a new instance of this project updated to include the specified project references + in addition to already existing ones. + + + + + Creates a new instance of this project updated to no longer include the specified project reference. + + + + + Creates a new instance of this project updated to replace existing project references + with the specified ones. + + + + + Creates a new instance of this project updated to include the specified metadata reference + in addition to already existing ones. + + + + + Creates a new instance of this project updated to include the specified metadata references + in addition to already existing ones. + + + + + Creates a new instance of this project updated to no longer include the specified metadata reference. + + + + + Creates a new instance of this project updated to replace existing metadata reference + with the specified ones. + + + + + Creates a new instance of this project updated to include the specified analyzer reference + in addition to already existing ones. + + + + + Creates a new instance of this project updated to include the specified analyzer references + in addition to already existing ones. + + + + + Creates a new instance of this project updated to no longer include the specified analyzer reference. + + + + + Creates a new instance of this project updated to replace existing analyzer references + with the specified ones. + + + + + Creates a new document in a new instance of this project. + + + + + Creates a new document in a new instance of this project. + + + + + Creates a new document in a new instance of this project. + + + + + Creates a new additional document in a new instance of this project. + + + + + Creates a new additional document in a new instance of this project. + + + + + Creates a new analyzer config document in a new instance of this project. + + + + + Creates a new instance of this project updated to no longer include the specified document. + + + + + Creates a new instance of this project updated to no longer include the specified documents. + + + + + Creates a new instance of this project updated to no longer include the specified additional document. + + + + + Creates a new instance of this project updated to no longer include the specified additional documents. + + + + + Creates a new instance of this project updated to no longer include the specified analyzer config document. + + + + + Creates a new solution instance that no longer includes the specified s. + + + + + Get s of added documents in the order they appear in of the . + + + + + Get s of added dditional documents in the order they appear in of . + + + + + Get s of added analyzer config documents in the order they appear in of . + + + + + Get s of documents with any changes (textual and non-textual) + in the order they appear in of . + + + + + Get changed documents in the order they appear in of . + When is true, only get documents with text changes (we only check text source, not actual content); + otherwise get documents with any changes i.e. , and file path. + + + + + Get s of additional documents with any changes (textual and non-textual) + in the order they appear in of . + + + + + Get s of analyzer config documents with any changes (textual and non-textual) + in the order they appear in of . + + + + + Get s of removed documents in the order they appear in of . + + + + + Get s of removed additional documents in the order they appear in of . + + + + + Get s of removed analyzer config documents in the order they appear in of . + + + + + A models the dependencies between projects in a solution. + + + + + The map of projects to dependencies. This field is always fully initialized. Projects which do not reference + any other projects do not have a key in this map (i.e. they are omitted, as opposed to including them with + an empty value). + + + This field is always fully initialized + Projects which do not reference any other projects do not have a key in this map (i.e. + they are omitted, as opposed to including them with an empty value) + The keys and values in this map are always contained in + + + + + + + The lazily-initialized map of projects to projects which reference them. This field is either null, or + fully-computed. Projects which are not referenced by any other project do not have a key in this map (i.e. + they are omitted, as opposed to including them with an empty value). + + + + + Gets the list of projects that this project directly depends on. + + + + + Gets the list of projects that directly depend on this project. + + + + + Gets the list of projects that directly or transitively this project depends on, if it has already been + cached. + + + + + Gets the list of projects that directly or transitively this project depends on + + + + + Gets the list of projects that directly or transitively depend on this project. + + + + + Returns all the projects for the solution in a topologically sorted order with respect + to their dependencies. Projects that depend on other projects will always show up later in this sequence + than the projects they depend on. + + + + + Returns a sequence of sets, where each set contains items with shared interdependency, + and there is no dependency between sets. Each set returned will sorted in topological order. + + + + + Gets the list of projects that directly or transitively depend on this project, if it has already been + cached. + + + + + Computes a new for the addition of additional project references. + + + + + Computes a new for the addition of additional project references. + + The previous , or + if the reverse references map was not computed for the previous graph. + + + + Computes a new for the addition of additional project references. + + + + + Computes a new for the addition of new projects. + + + + + Computes a new for the removal of a project. + + The prior to the removal. + The prior to the removal. + This map serves as a hint to the removal process; i.e. it is assumed correct if it contains data, but may be + omitted without impacting correctness. + The ID of the project which is being removed. + The for the project dependency graph once the project is removed. + + + + Computes a new for the removal of a project. + + The prior to the removal, + or if the value prior to removal was not computed for the graph. + + + + Computes a new for the removal of a project. + + + + + + Computes a new for the removal of a project. + + + + + + Computes a new for the removal of a project reference. + + The prior to the removal, + or if the reverse references map was not computed for the prior graph. + The project ID from which a project reference is being removed. + The target of the project reference which is being removed. + The updated (complete) reverse references map, or if the reverse references + map could not be incrementally updated. + + + + An identifier that can be used to refer to the same across versions. + + + + + The system generated unique id. + + + + + Create a new ProjectId instance. + + An optional name to make this id easier to recognize while debugging. + + + + A class that represents all the arguments necessary to create a new project instance. + + + + + The unique Id of the project. + + + + + The version of the project. + + + + + The name of the project. This may differ from the project's filename. + + + + + + + + The name of the assembly that this project will create, without file extension. + , + + + + The language of the project. + + + + + The path to the project file or null if there is no project file. + + + + + The path to the output file (module or assembly). + + + + + The path to the reference assembly output file. + + + + + The path to the compiler output file (module or assembly). + + + + + The default namespace of the project ("" if not defined, which means global namespace), + or null if it is unknown or not applicable. + + + Right now VB doesn't have the concept of "default namespace", but we conjure one in workspace + by assigning the value of the project's root namespace to it. So various features can choose to + use it for their own purpose. + In the future, we might consider officially exposing "default namespace" for VB project + (e.g. through a "defaultnamespace" msbuild property) + + + + + True if this is a submission project for interactive sessions. + + + + + True if project information is complete. In some workspace hosts, it is possible + a project only has partial information. In such cases, a project might not have all + information on its files or references. + + + + + True if we should run analyzers for this project. + + + + + The initial compilation options for the project, or null if the default options should be used. + + + + + The initial parse options for the source code documents in this project, or null if the default options should be used. + + + + + The list of source documents initially associated with the project. + + + + + The project references initially defined for the project. + + + + + The metadata references initially defined for the project. + + + + + The analyzers initially associated with this project. + + + + + The list of non-source documents associated with this project. + + + + + The list of analyzerconfig documents associated with this project. + + + + + Type of the host object. + + + + + Create a new instance of a . + + + + + Create a new instance of a . + + + + + type that contains information regarding this project itself but + no tree information such as document info + + + + + Matches names like: Microsoft.CodeAnalysis.Features (netcoreapp3.1) + + + + + The unique Id of the project. + + + + + The version of the project. + + + + + The name of the project. This may differ from the project's filename. + + + + + The name and flavor portions of the project broken out. For example, the project + Microsoft.CodeAnalysis.Workspace (netcoreapp3.1) would have the name + Microsoft.CodeAnalysis.Workspace and the flavor netcoreapp3.1. Values may be null if the name does not contain a flavor. + + + + + The name of the assembly that this project will create, without file extension. + , + + + + The language of the project. + + + + + The path to the project file or null if there is no project file. + + + + + The path to the output file (module or assembly). + + + + + The path to the reference assembly output file. + + + + + Paths to the compiler output files. + + + + + The default namespace of the project. + + + + + True if this is a submission project for interactive sessions. + + + + + True if project information is complete. In some workspace hosts, it is possible + a project only has partial information. In such cases, a project might not have all + information on its files or references. + + + + + True if we should run analyzers for this project. + + + + + The id report during telemetry events. + + + + + Aliases for the reference. Empty if the reference has no aliases. + + + + + True if interop types defined in the referenced project should be embedded into the referencing project. + + + + + The documents in this project. They are sorted by to provide a stable sort for + . + + + + + The additional documents in this project. They are sorted by to provide a stable sort for + . + + + + + The analyzer config documents in this project. They are sorted by to provide a stable sort for + . + + + + + The to be used for analyzer options for specific trees. + + + + + Backing field for ; this is a default ImmutableArray if it hasn't been computed yet. + + + + + + + + Determines whether contains a reference to a specified project. + + The target project of the reference. + if this project references ; otherwise, . + + + + A recoverable TextAndVersion source that saves its text to temporary storage. + + + + + Represents a set of projects and their source code documents. + + + + + The Workspace this solution is associated with. + + + + + The Id of the solution. Multiple solution instances may share the same Id. + + + + + The path to the solution file or null if there is no solution file. + + + + + The solution version. This equates to the solution file's version. + + + + + A list of all the ids for all the projects contained by the solution. + + + + + A list of all the projects contained by the solution. + + + + + The version of the most recently modified project. + + + + + True if the solution contains a project with the specified project ID. + + + + + Gets the project in this solution with the specified project ID. + + If the id is not an id of a project that is part of this solution the method returns null. + + + + + Gets the associated with an assembly symbol. + + + + + Given a returns the of the it came + from. Returns if does not come from any project in this solution. + + + This function differs from in terms of how it + treats s. Specifically, say there is the following: + + + Project-A, containing Symbol-A. + Project-B, with a reference to Project-A, and usage of Symbol-A. + + + It is possible (with retargeting, and other complex cases) that Symbol-A from Project-B will be a different + symbol than Symbol-A from Project-A. However, + will always try to return Project-A for either of the Symbol-A's, as it prefers to return the original + Source-Project of the original definition, not the project that actually produced the symbol. For many + features this is an acceptable abstraction. However, for some cases (Find-References in particular) it is + necessary to resolve symbols back to the actual project/compilation that produced them for correctness. + + + + + + + + True if the solution contains the document in one of its projects + + + + + True if the solution contains the additional document in one of its projects + + + + + True if the solution contains the analyzer config document in one of its projects + + + + + Gets the documentId in this solution with the specified syntax tree. + + + + + Gets the documentId in this solution with the specified syntax tree. + + + + + Gets the document in this solution with the specified document ID. + + + + + Gets a document or a source generated document in this solution with the specified document ID. + + + + + Gets a document, additional document, analyzer config document or a source generated document in this solution with the specified document ID. + + + + + Gets the additional document in this solution with the specified document ID. + + + + + Gets the analyzer config document in this solution with the specified document ID. + + + + + Gets the document in this solution with the specified syntax tree. + + + + + Creates a new solution instance that includes a project with the specified language and names. + Returns the new project. + + + + + Creates a new solution instance that includes a project with the specified language and names. + + + + + Create a new solution instance that includes a project with the specified project information. + + + + + Create a new solution instance without the project specified. + + + + + Creates a new solution instance with the project specified updated to have the new + assembly name. + + + + + Creates a new solution instance with the project specified updated to have the output file path. + + + + + Creates a new solution instance with the project specified updated to have the reference assembly output file path. + + + + + Creates a new solution instance with the project specified updated to have the compiler output file path. + + + + + Creates a new solution instance with the project specified updated to have the default namespace. + + + + + Creates a new solution instance with the project specified updated to have the name. + + + + + Creates a new solution instance with the project specified updated to have the project file path. + + + + + Create a new solution instance with the project specified updated to have + the specified compilation options. + + + + + Create a new solution instance with the project specified updated to have + the specified parse options. + + + + + Create a new solution instance with the project specified updated to have + the specified hasAllInformation. + + + + + Create a new solution instance with the project specified updated to have + the specified runAnalyzers. + + + + + Creates a new solution instance with the project documents in the order by the specified document ids. + The specified document ids must be the same as what is already in the project; no adding or removing is allowed. + + is . + is . + The solution does not contain . + The number of documents specified in is not equal to the number of documents in project . + Document specified in does not exist in project . + + + + Create a new solution instance with the project specified updated to include + the specified project reference. + + is . + is . + The solution does not contain . + The project already references the target project. + + + + Create a new solution instance with the project specified updated to include + the specified project references. + + is . + contains . + contains duplicate items. + The solution does not contain . + The project already references the target project. + Adding the project reference would create a circular dependency. + + + + Create a new solution instance with the project specified updated to no longer + include the specified project reference. + + is . + is . + The solution does not contain . + + + + Create a new solution instance with the project specified updated to contain + the specified list of project references. + + Id of the project whose references to replace with . + New project references. + is . + contains . + contains duplicate items. + The solution does not contain . + + + + Create a new solution instance with the project specified updated to include the + specified metadata reference. + + is . + is . + The solution does not contain . + The project already contains the specified reference. + + + + Create a new solution instance with the project specified updated to include the + specified metadata references. + + is . + contains . + contains duplicate items. + The solution does not contain . + The project already contains the specified reference. + + + + Create a new solution instance with the project specified updated to no longer include + the specified metadata reference. + + is . + is . + The solution does not contain . + The project does not contain the specified reference. + + + + Create a new solution instance with the project specified updated to include only the + specified metadata references. + + is . + contains . + contains duplicate items. + The solution does not contain . + + + + Create a new solution instance with the project specified updated to include the + specified analyzer reference. + + is . + is . + The solution does not contain . + + + + Create a new solution instance with the project specified updated to include the + specified analyzer references. + + is . + contains . + contains duplicate items. + The solution does not contain . + The project already contains the specified reference. + + + + Create a new solution instance with the project specified updated to no longer include + the specified analyzer reference. + + is . + is . + The solution does not contain . + The project does not contain the specified reference. + + + + Create a new solution instance with the project specified updated to include only the + specified analyzer references. + + is . + contains . + contains duplicate items. + The solution does not contain . + + + + Create a new solution instance updated to include the specified analyzer reference. + + is . + + + + Create a new solution instance updated to include the specified analyzer references. + + contains . + contains duplicate items. + The solution already contains the specified reference. + + + + Create a new solution instance with the project specified updated to no longer include + the specified analyzer reference. + + is . + The solution does not contain the specified reference. + + + + Creates a new solution instance with the specified analyzer references. + + contains . + contains duplicate items. + + + + Creates a new solution instance with the corresponding project updated to include a new + document instance defined by its name and text. + + + + + Creates a new solution instance with the corresponding project updated to include a new + document instance defined by its name and text. + + + + + Creates a new solution instance with the corresponding project updated to include a new + document instance defined by its name and root . + + + + + Creates a new solution instance with the project updated to include a new document with + the arguments specified. + + + + + Create a new solution instance with the corresponding project updated to include a new + document instanced defined by the document info. + + + + + Create a new instance with the corresponding s updated to include + the documents specified by . + + A new with the documents added. + + + + Creates a new solution instance with the corresponding project updated to include a new + additional document instance defined by its name and text. + + + + + Creates a new solution instance with the corresponding project updated to include a new + additional document instance defined by its name and text. + + + + + Creates a new solution instance with the corresponding project updated to include a new + analyzer config document instance defined by its name and text. + + + + + Creates a new Solution instance that contains a new compiler configuration document like a .editorconfig file. + + + + + Creates a new solution instance that no longer includes the specified document. + + + + + Creates a new solution instance that no longer includes the specified documents. + + + + + Creates a new solution instance that no longer includes the specified additional document. + + + + + Creates a new solution instance that no longer includes the specified additional documents. + + + + + Creates a new solution instance that no longer includes the specified . + + + + + Creates a new solution instance that no longer includes the specified s. + + + + + Creates a new solution instance with the document specified updated to have the new name. + + + + + Creates a new solution instance with the document specified updated to be contained in + the sequence of logical folders. + + + + + Creates a new solution instance with the document specified updated to have the specified file path. + + + + + Creates a new solution instance with the document specified updated to have the text + specified. + + + + + Creates a new solution instance with the additional document specified updated to have the text + specified. + + + + + Creates a new solution instance with the analyzer config document specified updated to have the text + supplied by the text loader. + + + + + Creates a new solution instance with the document specified updated to have the text + and version specified. + + + + + Creates a new solution instance with the additional document specified updated to have the text + and version specified. + + + + + Creates a new solution instance with the analyzer config document specified updated to have the text + and version specified. + + + + + Creates a new solution instance with the document specified updated to have a syntax tree + rooted by the specified syntax node. + + + + + Creates a new solution instance with the document specified updated to have the source + code kind specified. + + + + + Creates a new solution instance with the document specified updated to have the text + supplied by the text loader. + + + + + Creates a new solution instance with the additional document specified updated to have the text + supplied by the text loader. + + + + + Creates a new solution instance with the analyzer config document specified updated to have the text + supplied by the text loader. + + + + + Creates a branch of the solution that has its compilations frozen in whatever state they are in at the time, assuming a background compiler is + busy building this compilations. + + A compilation for the project containing the specified document id will be guaranteed to exist with at least the syntax tree for the document. + + This not intended to be the public API, use Document.WithFrozenPartialSemantics() instead. + + + + + Formerly, returned a copy of the solution isolated from the original so that they do not share computed state. It now does nothing. + + + + + Creates a new solution instance with all the documents specified updated to have the same specified text. + + + + + Returns a new Solution that will always produce a specific output for a generated file. This is used only in the + implementation of where if a user has a source + generated file open, we need to make sure everything lines up. + + + + + Gets an objects that lists the added, changed and removed projects between + this solution and the specified solution. + + + + + Gets the set of s in this with a + that matches the given file path. + + + + + Gets a that details the dependencies between projects for this solution. + + + + + Returns the options that should be applied to this solution. This is equivalent to when the + instance was created. + + + + + Analyzer references associated with the solution. + + + + + Creates a new solution instance with the specified . + + + + + Creates a new solution instance with the specified serializable . + + + + + Throws if setting the project references of project to specified + would form a cycle in project dependency graph. + + + + + Throws if setting the project references of project to specified + would form an invalid submission project chain. + + Submission projects can reference at most one other submission project. Regular projects can't reference any. + + + + + An identifier that can be used to refer to the same Solution across versions. + + + + + The unique id of the solution. + + + + + Create a new Solution Id + + An optional name to make this id easier to recognize while debugging. + + + + A class that represents all the arguments necessary to create a new solution instance. + + + + + The unique Id of the solution. + + + + + The version of the solution. + + + + + The path to the solution file, or null if there is no solution file. + + + + + A list of projects initially associated with the solution. + + + + + The analyzers initially associated with this solution. + + + + + Create a new instance of a SolutionInfo. + + + + + Create a new instance of a SolutionInfo. + + + + + type that contains information regarding this solution itself but + no tree information such as project info + + + + + The unique Id of the solution. + + + + + The version of the solution. + + + + + The path to the solution file, or null if there is no solution file. + + + + + The id report during telemetry events. + + + + + This class basically holds onto a set of services and gets reused across solution instances. + + + + + Represents a set of projects and their source code documents. + + this is a green node of Solution like ProjectState/DocumentState are for + Project and Document. + + + + + Represents a change that needs to be made to a , , or both in response to + some user edit. + + + + + Whether or not can be called on Compilations that may contain + generated documents. + + + Most translation actions add or remove a single syntax tree which means we can do the "same" change + to a compilation that contains the generated files and one that doesn't; however some translation actions + (like ) will unilaterally remove all trees, and would have unexpected + side effects. This opts those out of operating on ones with generated documents where there would be side effects. + + + + + When changes are made to a solution, we make a list of translation actions. If multiple similar changes happen in rapid + succession, we may be able to merge them without holding onto intermediate state. + + The action prior to this one. May be a different type. + A non-null if we could create a merged one, null otherwise. + + + + Tracks the changes made to a project and provides the facility to get a lazily built + compilation for that project. As the compilation is being built, the partial results are + stored as well so that they can be used in the 'in progress' workspace snapshot. + + + + + When we're working with compilations, we often have two: a compilation that does not contain generated files + (which we might need later to run generators again), and one that has the stale generated files that we might + be able to reuse as well. In those cases we have to do the same transformations to both, and this gives us + a handy way to do precisely that while not forking compilations twice if there are no generated files anywhere. + + + + + The best generated documents we have for the current state. + specifies whether the documents are to be considered final and can be reused, or whether they're from + a prior snapshot which needs to be recomputed. + + + + + The that was used for the last run, to allow for incremental reuse. May + be null if we don't have generators in the first place, haven't ran generators yet for this project, + or had to get rid of our driver for some reason. + + + + + Whether the generated documents in are final and should not be regenerated. + It's important that once we've ran generators once we don't want to run them again. Once we've ran + them the first time, those syntax trees are visible from other parts of the Workspaces model; if we + run them a second time we'd end up with new trees which would confuse our snapshot model -- once the + tree has been handed out we can't make a second tree later. + + + + + Whether the generated documents are frozen and generators should never be ran again, ever, even if a document + is later changed. This is used to ensure that when we produce a frozen solution for partial semantics, + further downstream forking of that solution won't rerun generators. This is because of two reasons: + + Generally once we've produced a frozen solution with partial semantics, we now want speed rather + than accuracy; a generator running in a later path will still cause issues there. + The frozen solution with partial semantics makes no guarantee that other syntax trees exist or + whether we even have references -- it's pretty likely that running a generator might produce worse results + than what we originally had. + + + + + + The base type of all states. The state of a + starts at , and then will progress through the other states until it finally reaches + . + + + + + The base that starts with everything empty. + + + + + The best compilation that is available that source generators have not ran on. May be an + in-progress, full declaration, a final compilation, or . + + + + + Specifies whether and all compilations it depends on contain full information or not. This can return + if the state isn't at the point where it would know, and it's necessary to transition to to figure that out. + + + + + The final compilation is potentially available, otherwise . + + + + + State used when we potentially have some information (like prior generated documents) + but no compilation. + + + + + A state where we are holding onto a previously built compilation, and have a known set of transformations + that could get us to a more final state. + + + + + The list of changes that have happened since we last computed a compilation. The oldState corresponds to + the state of the project prior to the mutation. + + + + + The result of taking the original completed compilation that had generated documents and updating them by + apply the ; this is not a correct snapshot in that + the generators have not been rerun, but may be reusable if the generators are later found to give the + same output. + + + + + A built compilation for the tracker that contains the fully built DeclarationTable, + but may not have references initialized + + + + + The final state a compilation tracker reaches. The real is available. It is a + requirement that any provided to any clients of the + (for example, through or must be from a . This is because stores extra information in it about that compilation that the can be queried for (for example: . If s from other s are passed out, then these other APIs will not function correctly. + + + + + Weak set of the assembly, module and dynamic symbols that this compilation tracker has created. + This can be used to determine which project an assembly symbol came from after the fact. This is + needed as the compilation an assembly came from can be GC'ed and further requests to get that + compilation (or any of it's assemblies) may produce new assembly symbols. + + + + + The final compilation, with all references and source generators run. This is distinct from , which in the case will be the compilation before any + source generators were ran. This ensures that a later invocation of the source generators consumes + which will avoid generators being ran a second time on a compilation that + already contains the output of other generators. If source generators are not active, this is equal + to . + + + + Not held onto + Not held onto + Not held onto + + + + Access via the and methods. + + + + + Creates a tracker for the provided project. The tracker will be in the 'empty' state + and will have no extra information beyond the project itself. + + + + + Creates a new instance of the compilation info, retaining any already built + compilation state as the now 'old' state + + + + + Tries to get the latest snapshot of the compilation without waiting for it to be + fully built. This method takes advantage of the progress side-effect produced during + . + It will either return the already built compilation, any + in-progress compilation or any known old compilation in that order of preference. + The compilation state that is returned will have a compilation that is retained so + that it cannot disappear. + + + + + Gets the final compilation if it is available. + + + + + Builds the compilation matching the project state. In the process of building, also + produce in progress snapshots that can be accessed from other threads. + + + + + Add all appropriate references to the compilation and set it as our final compilation + state. + + The generator info that contains the last run of the documents, if any exists, as + well as the driver that can be used to run if need to. + The compilation from a prior run that contains generated trees, which + match the states included in . If a generator run here produces + the same set of generated documents as are in , and we don't need to make any other + changes to references, we can then use this compilation instead of re-adding source generated files again to the + . + + + + Attempts to get (without waiting) a metadata reference to a possibly in progress + compilation. Only actual compilation references are returned. Could potentially + return null if nothing can be provided. + + + + + Mapping from project-id to the checksums needed to synchronize it (and the projects it depends on) over + to an OOP host. Lock this specific field before reading/writing to it. + + + + + Cache we use to map between unrooted symbols (i.e. assembly, module and dynamic symbols) and the project + they came from. That way if we are asked about many symbols from the same assembly/module we can answer the + question quickly after computing for the first one. Created on demand. + + + + + branch id of this solution + + currently, it only supports one level of branching. there is a primary branch of a workspace and all other + branches that are branched from the primary branch. + + one still can create multiple forked solutions from an already branched solution, but versions among those + can't be reliably used and compared. + + version only has a meaning between primary solution and branched one or between solutions from same branch. + + + + + The Workspace this solution is associated with. + + + + + The Id of the solution. Multiple solution instances may share the same Id. + + + + + The path to the solution file or null if there is no solution file. + + + + + The solution version. This equates to the solution file's version. + + + + + A list of all the ids for all the projects contained by the solution. + + + + + The version of the most recently modified project. + + + + + True if the solution contains a project with the specified project ID. + + + + + True if the solution contains the document in one of its projects + + + + + True if the solution contains the additional document in one of its projects + + + + + True if the solution contains the analyzer config document in one of its projects + + + + + Gets the associated with an assembly symbol. + + + + + Create a new solution instance that includes a project with the specified project information. + + + + + Create a new solution instance without the project specified. + + + + + Creates a new solution instance with the project specified updated to have the new + assembly name. + + + + + Creates a new solution instance with the project specified updated to have the output file path. + + + + + Creates a new solution instance with the project specified updated to have the output file path. + + + + + Creates a new solution instance with the project specified updated to have the compiler output file path. + + + + + Creates a new solution instance with the project specified updated to have the default namespace. + + + + + Creates a new solution instance with the project specified updated to have the name. + + + + + Creates a new solution instance with the project specified updated to have the project file path. + + + + + Create a new solution instance with the project specified updated to have + the specified compilation options. + + + + + Create a new solution instance with the project specified updated to have + the specified parse options. + + + + + Create a new solution instance with the project specified updated to have + the specified hasAllInformation. + + + + + Create a new solution instance with the project specified updated to have + the specified runAnalyzers. + + + + + Create a new solution instance with the project specified updated to include + the specified project references. + + + + + Create a new solution instance with the project specified updated to no longer + include the specified project reference. + + + + + Create a new solution instance with the project specified updated to contain + the specified list of project references. + + + + + Creates a new solution instance with the project documents in the order by the specified document ids. + The specified document ids must be the same as what is already in the project; no adding or removing is allowed. + + + + + Create a new solution instance with the project specified updated to include the + specified metadata references. + + + + + Create a new solution instance with the project specified updated to no longer include + the specified metadata reference. + + + + + Create a new solution instance with the project specified updated to include only the + specified metadata references. + + + + + Create a new solution instance with the project specified updated to include the + specified analyzer references. + + + + + Create a new solution instance with the project specified updated to no longer include + the specified analyzer reference. + + + + + Create a new solution instance with the project specified updated to include only the + specified analyzer references. + + + + + Create a new solution instance with the corresponding projects updated to include new + documents defined by the document info. + + + + + Core helper that takes a set of s and does the application of the appropriate documents to each project. + + The set of documents to add. + Returns the new with the documents added, and the needed as well. + + + + + Creates a new solution instance that no longer includes the specified document. + + + + + Creates a new solution instance that no longer includes the specified additional documents. + + + + + Creates a new solution instance with the document specified updated to have the specified name. + + + + + Creates a new solution instance with the document specified updated to be contained in + the sequence of logical folders. + + + + + Creates a new solution instance with the document specified updated to have the specified file path. + + + + + Creates a new solution instance with the document specified updated to have the text + specified. + + + + + Creates a new solution instance with the additional document specified updated to have the text + specified. + + + + + Creates a new solution instance with the document specified updated to have the text + specified. + + + + + Creates a new solution instance with the document specified updated to have the text + and version specified. + + + + + Creates a new solution instance with the additional document specified updated to have the text + and version specified. + + + + + Creates a new solution instance with the analyzer config document specified updated to have the text + and version specified. + + + + + Creates a new solution instance with the document specified updated to have a syntax tree + rooted by the specified syntax node. + + + + + Creates a new solution instance with the document specified updated to have the source + code kind specified. + + + + + Creates a new solution instance with the additional document specified updated to have the text + supplied by the text loader. + + + + + Creates a new solution instance with the analyzer config document specified updated to have the text + supplied by the text loader. + + + + + Creates a new snapshot with an updated project and an action that will produce a new + compilation matching the new project out of an old compilation. All dependent projects + are fixed-up if the change to the new project affects its public metadata, and old + dependent compilations are forgotten. + + + + + Gets the set of s in this with a + that matches the given file path. + + + + + Creates a branch of the solution that has its compilations frozen in whatever state they are in at the time, assuming a background compiler is + busy building this compilations. + + A compilation for the project containing the specified document id will be guaranteed to exist with at least the syntax tree for the document. + + This not intended to be the public API, use Document.WithFrozenPartialSemantics() instead. + + + + + Creates a new solution instance with all the documents specified updated to have the same specified text. + + + + + Returns the compilation for the specified . Can return when the project + does not support compilations. + + + The compilation is guaranteed to have a syntax tree for each document of the project. + + + + + Returns the compilation for the specified . Can return when the project + does not support compilations. + + + The compilation is guaranteed to have a syntax tree for each document of the project. + + + + + Return reference completeness for the given project and all projects this references. + + + + + Returns the generated document states for source generated documents. + + + + + Returns the for a source generated document that has already been generated and observed. + + + This is only safe to call if you already have seen the SyntaxTree or equivalent that indicates the document state has already been + generated. This method exists to implement and is best avoided unless you're doing something + similarly tricky like that. + + + + + Returns a new SolutionState that will always produce a specific output for a generated file. This is used only in the + implementation of where if a user has a source + generated file open, we need to make sure everything lines up. + + + + + Symbols need to be either or . + + + + + Get a metadata reference for the project's compilation. Returns upon failure, which + can happen when trying to build a skeleton reference that fails to build. + + + + + Get a metadata reference to this compilation info's compilation with respect to + another project. For cross language references produce a skeletal assembly. If the + compilation is not available, it is built. If a skeletal assembly reference is + needed and does not exist, it is also built. + + + + + Attempt to get the best readily available compilation for the project. It may be a + partially built compilation. + + + + + Gets a that details the dependencies between projects for this solution. + + + + + An implementation of that takes a compilation from another compilation tracker and updates it + to return a generated document with a specific content, regardless of what the generator actually produces. In other words, it says + "take the compilation this other thing produced, and pretend the generator gave this content, even if it wouldn't." + + + + + The lazily-produced compilation that has the generated document updated. This is initialized by call to + . + + + + + Returns if this / could produce the + given . The symbol must be a , or . + + + If is true, then will not be considered + when answering this question. In other words, if is an and is then this will only + return true if the symbol is . If is + false, then it can return true if is or any + of the symbols returned by for + any of the references of the . + + + + + Caches the skeleton references produced for a given project/compilation under the varying + it might be referenced by. Skeletons are used in the compilation + tracker to allow cross-language project references with live semantic updating between VB/C# and vice versa. + Specifically, in a cross language case we will build a skeleton ref for the referenced project and have the + referrer use that to understand its semantics. + + This approach works, but has the caveat that live cross-language semantics are only possible when the + skeleton assembly can be built. This should always be the case for correct code, but it may not be the + case for code with errors depending on if the respective language compiler is resilient to those errors or not. + In that case though where the skeleton cannot be built, this type provides mechanisms to fallback to the last + successfully built skeleton so that a somewhat reasonable experience can be maintained. If we failed to do this + and instead returned nothing, a user would find that practically all semantic experiences that depended on + that particular project would fail or be seriously degraded (e.g. diagnostics). To that end, it's better to + limp along with stale date, then barrel on ahead with no data. + + The implementation works by keeping metadata references around associated with a specific + for a project. As long as the for that project + is the same, then all the references of it can be reused. When an forks + itself, it will also this, allowing previously computed references to be used by later forks. + However, this means that later forks (esp. ones that fail to produce a skeleton, or which produce a skeleton for + different semantics) will not leak backward to a prior , causing it to see a view of the world + inapplicable to its current snapshot. + + + + + Lock we take before emitting metadata. Metadata emit is extremely expensive. So we want to avoid cases + where N threads come in and try to get the skeleton for a particular project. This way they will instead + yield if something else is computing and will then use the single instance computed once one thread succeeds. + + + + + Lock around and to ensure they are updated/read + in an atomic fashion. + + + + + The version of the project that the + corresponds to. + + + + + Mapping from metadata-reference-properties to the actual metadata reference for them. + + + + + Produces a copy of the , allowing forks of to + reuse s when their dependent semantic version matches ours. In the case where + the version is different, then the clone will attempt to make a new skeleton reference for that version. If it + succeeds, it will use that. If it fails however, it can still use our skeletons. + + + + + A map to ensure that the streams from the temporary storage service that back the metadata we create stay alive as long + as the metadata is alive. + + + + + The documentation provider used to lookup xml docs for any metadata reference we pass out. See + docs on for why this is safe to hold onto despite it + rooting a compilation internally. + + + + + Use WeakReference so we don't keep MetadataReference's alive if they are not being consumed. + Note: if the weak-reference is actually (not that it points to null), + that means we know we were unable to generate a reference for those properties, and future + calls can early exit. + + + This instance should be locked when being read/written. + + + + + + + + A helper type for mapping back to an originating . + + + In IDE scenarios we have the need to map from an to the that + contained a that could have produced that symbol. This is especially needed with + OOP scenarios where we have to communicate to OOP from VS (And vice versa) what symbol we are referring to. + To do this, we pass along a project where this symbol could be found, and enough information (a ) to resolve that symbol back in that that . + + This is challenging however as symbols do not necessarily have back-pointers to s, + and as such, we can't just see which Project produced the that produced that . In other words, the doesn't root the compilation. Because + of that we keep track of those symbols per project in a weak fashion. Then, we can later see if a + symbol came from a particular project by checking if it is one of those weak symbols. We use weakly held + symbols to that a instance doesn't hold symbols alive. But, we know if we are + holding the symbol itself, then the weak-ref will stay alive such that we can do this containment check. + + + + + + The produced directly by . + + + + + The produced directly by . Only + valid for . + + + + + The s or s produced through for all the references exposed by . Sorted by the hash code produced by so that it can be binary searched efficiently. + + + + Gets the checksum for only the requested project (and any project it depends on) + + + Gets the checksum for only the requested project (and any project it depends on) + + + Cone of projects to compute a checksum for. Pass in + to get a checksum for the entire solution + + + + A that was generated by an . + + + + + A small struct that holds the values that define the identity of a source generated document, and don't change + as new generations happen. This is mostly for convenience as we are reguarly working with this combination of values. + + + + + A class that represents both a source text and its version stamp. + + + + + The source text. + + + + + The version of the source text + + + + + An optional file path that identifies the origin of the source text. Empty if not available. + + + + + If an error occurred while loading the text the corresponding diagnostic, otherwise null. + + + + + Create a new instance. + + The text + The version + An optional file path that identifies the original of the source text. + + + + + Create a new instance. + + The text + The version + An optional file path that identifies the original of the source text. + Diagnostic describing failure to load the source text. + + + + + A bitwise combination of the enumeration values to use when computing differences with + . + + + Since computing differences can be slow with large data sets, you should not use the Character type + unless the given text is relatively small. + + + + + Compute the line difference. + + + + + Compute the word difference. + + + + + Compute the character difference. + + + + + The project this document belongs to. + + + + + The document's identifier. Many document instances may share the same ID, but only one + document in a solution may have that ID. + + + + + The path to the document file or null if there is no document file. + + + + + The name of the document. + + + + + The sequence of logical folders the document is contained in. + + + + + A associated with this document + + + + + Get the current text for the document if it is already loaded and available. + + + + + Gets the version of the document's text if it is already loaded and available. + + + + + Gets the current text for the document asynchronously. + + + + + Fetches the current text for the document synchronously. + + This is internal for the same reason is internal: + we have specialized cases where we need it, but we worry that making it public will do more harm than good. + + + + Gets the version of the document's text. + + + + + Fetches the current version for the document synchronously. + + This is internal for the same reason is internal: + we have specialized cases where we need it, but we worry that making it public will do more harm than good. + + + + Gets the version of the document's top level signature. + + + + + True if the info of the document change (name, folders, file path; not the content). + + + + + Only checks if the source of the text has changed, no content check is done. + + + + + Indicates kind of a + + + + + Indicates a regular source + + + + + Indicates an + + + + + Indicates an + + + + + A direct reference to our source text. This is only kept around in specialized scenarios. + Specifically, we keep this around when a document is opened. By providing this we can allow + clients to easily get to the text of the document in a non-blocking fashion if that's all + that they need. + + Note: this facility does not extend to getting the version as well. That's because the + version of a document depends on both the current source contents and the contents from + the previous version of the document. (i.e. if the contents are the same, then we will + preserve the same version, otherwise we'll move the version forward). Because determining + the version depends on comparing text, and because getting the old text may block, we + do not have the ability to know the version of the document up front, and instead can + only retrieve is asynchronously through . + + + + + A associated with this document + + + + + Only checks if the source of the text has changed, no content check is done. + + + + + Holds on a to map and an ordering. + + + + + The entries in the map are sorted by , which yields locally deterministic order but not the order that + matches the order in which documents were added. Therefore this ordering can't be used when creating compilations and it can't be + used when persisting document lists that do not preserve the GUIDs. + + + + + s in the order in which they were added to the project (the compilation order). + + + + + States ordered by . + + + + + Get states ordered in compilation order. + + + + + + Returns a s of documents whose state changed when compared to older states. + + + + + Returns a s of added documents. + + + + + Returns a s of removed documents. + + + + + A class that represents access to a source text and its version from a storage location. + + + + + Load a text and a version of the document. + + + + + + + + Load a text and a version of the document in the workspace. + + + + + + + + Creates a new from an already existing source text and version. + + + + + Creates a from a and version. + + The text obtained from the loader will be the current text of the container at the time + the loader is accessed. + + + + + A class that represents both a tree and its top level signature version + + + + + The syntax tree + + + + + The version of the top level signature of the tree + + + + + VersionStamp should be only used to compare versions returned by same API. + + + + + global counter to avoid collision within same session. + it starts with a big initial number just for a clarity in debugging + + + + + time stamp + + + + + indicate whether there was a collision on same item + + + + + unique version in same session + + + + + Creates a new instance of a VersionStamp. + + + + + Creates a new instance of a version stamp based on the specified DateTime. + + + + + compare two different versions and return either one of the versions if there is no collision, otherwise, create a new version + that can be used later to compare versions between different items + + + + + Gets a new VersionStamp that is guaranteed to be newer than its base one + this should only be used for same item to move it to newer version + + + + + Returns the serialized text form of the VersionStamp. + + + + + Check whether given persisted version is re-usable. Used by VS for Mac + + + + + True if this VersionStamp is newer than the specified one. + + + + + Gets the documents from the corresponding workspace's current solution that are associated with the source text's container, + updated to contain the same text as the source if necessary. + + + + + Gets the document from the corresponding workspace's current solution that is associated with the source text's container + in its current project context, updated to contain the same text as the source if necessary. + + + + + Gets the documents from the corresponding workspace's current solution that are associated with the text container. + + + + + Gets the document from the corresponding workspace's current solution that is associated with the text container + in its current project context. + + + + + Tries to get the document corresponding to the text from the current partial solution + associated with the text's container. If the document does not contain the exact text a document + from a new solution containing the specified text is constructed. If no document is associated + with the specified text's container, or the text's container isn't associated with a workspace, + then the method returns false. + + + + + Encoding to use when there is no byte order mark (BOM) on the stream. This encoder may throw a + if the stream contains invalid UTF-8 bytes. + + + + + Encoding to use when UTF-8 fails. We try to find the following, in order, if available: + 1. The default ANSI codepage + 2. CodePage 1252. + 3. Latin1. + + + + + Initializes an instance of from the provided stream. This version differs + from in two ways: + 1. It attempts to minimize allocations by trying to read the stream into a byte array. + 2. If is null, it will first try UTF8 and, if that fails, it will + try CodePage 1252. If CodePage 1252 is not available on the system, then it will try Latin1. + + The stream containing encoded text. + + Specifies an encoding to be used if the actual encoding can't be determined from the stream content (the stream doesn't start with Byte Order Mark). + If not specified auto-detect heuristics are used to determine the encoding. If these heuristics fail the decoding is assumed to be Encoding.Default. + Note that if the stream starts with Byte Order Mark the value of is ignored. + + Indicates if the file can be embedded in the PDB. + Hash algorithm used to calculate document checksum. + + The stream content can't be decoded using the specified , or + is null and the stream appears to be a binary file. + + An IO error occurred while reading from the stream. + + + + Try to create a from the given stream using the given encoding. + + The input stream containing the encoded text. The stream will not be closed. + The expected encoding of the stream. The actual encoding used may be different if byte order marks are detected. + The checksum algorithm to use. + Throw if binary (non-text) data is detected. + Indicates if the text can be embedded in the PDB. + The decoded from the stream. + The decoder was unable to decode the stream with the given encoding. + Error reading from stream. + + + + Some streams are easily represented as bytes. + + The stream + The bytes, if available. + + True if the stream's bytes could easily be read, false otherwise. + + + + + Read the contents of a FileStream into a byte array. + + The FileStream with encoded text. + A byte array filled with the contents of the file. + True if a byte array could be created. + + + + A workspace provides access to a active set of source code projects and documents and their + associated syntax trees, compilations and semantic models. A workspace has a current solution + that is an immutable snapshot of the projects and documents. This property may change over time + as the workspace is updated either from live interactions in the environment or via call to the + workspace's method. + + + + + Determines whether changes made to unchangeable documents will be silently ignored or cause exceptions to be thrown + when they are applied to workspace via . + A document is unchangeable if is false. + + + + + Constructs a new workspace instance. + + The this workspace uses + A string that can be used to identify the kind of workspace. Usually this matches the name of the class. + + + + Sets an internal logger that will receive some messages. + + An action called to write a single line to the log. + + + + Services provider by the host for implementing workspace features. + + + + + primary branch id that current solution has + + + + + Override this property if the workspace supports partial semantics for documents. + + + + + The kind of the workspace. + This is generally if originating from the host environment, but may be + any other name used for a specific kind of workspace. + + + + + Create a new empty solution instance associated with this workspace. + + + + + Create a new empty solution instance associated with this workspace, and with the given options. + + + + + Create a new empty solution instance associated with this workspace. + + + + + The current solution. + + The solution is an immutable model of the current set of projects and source documents. + It provides access to source text, syntax trees and semantics. + + This property may change as the workspace reacts to changes in the environment or + after is called. + + + + + Sets the of this workspace. This method does not raise a event. + + + This method does not guarantee that linked files will have the same contents. Callers + should enforce that policy before passing in the new solution. + + + + + Applies specified transformation to , updates to the new value and raises a workspace change event of the specified kind. + + Solution transformation. + The kind of workspace change event to raise. + The id of the project updated by to be passed to the workspace change event. + The id of the document updated by to be passed to the workspace change event. + True if was set to the transformed solution, false if the transformation did not change the solution. + + + + Gets or sets the set of all global options and . + Setter also force updates the to have the updated . + + + + + Sets global options and to have the new options. + NOTE: This method also updates to a new solution instance with updated . + + + + + Executes an action as a background task, as part of a sequential queue of tasks. + + + + + Execute a function as a background task, as part of a sequential queue of tasks. + + + + + Override this method to act immediately when the text of a document has changed, as opposed + to waiting for the corresponding workspace changed event to fire asynchronously. + + + + + Override this method to act immediately when a document is closing, as opposed + to waiting for the corresponding workspace changed event to fire asynchronously. + + + + + Clears all solution data and empties the current solution. + + + + + This method is called when a solution is cleared. + + Override this method if you want to do additional work when a solution is cleared. + Call the base method at the end of your method. + + + + + This method is called when an individual project is removed. + + Override this method if you want to do additional work when a project is removed. + Call the base method at the end of your method. + + + + + This method is called to clear an individual document is removed. + + Override this method if you want to do additional work when a document is removed. + Call the base method at the end of your method. + + + + + Disposes this workspace. The workspace can longer be used after it is disposed. + + + + + Call this method when the workspace is disposed. + + Override this method to do additional work when the workspace is disposed. + Call this method at the end of your method. + + + + + Call this method to respond to a solution being opened in the host environment. + + + + + Call this method to respond to a solution being reloaded in the host environment. + + + + + This method is called when the solution is removed from the workspace. + + Override this method if you want to do additional work when the solution is removed. + Call the base method at the end of your method. + Call this method to respond to a solution being removed/cleared/closed in the host environment. + + + + + Call this method to respond to a project being added/opened in the host environment. + + + + + Call this method to respond to a project being reloaded in the host environment. + + + + + Call this method to respond to a project being removed from the host environment. + + + + + Currently projects can always be removed, but this method still exists because it's protected and we don't + want to break people who may have derived from and either called it, or overridden it. + + + + + Call this method when a project's assembly name is changed in the host environment. + + + + + Call this method when a project's output file path is changed in the host environment. + + + + + Call this method when a project's output ref file path is changed in the host environment. + + + + + Call this method when a project's name is changed in the host environment. + + + + + Call this method when a project's default namespace is changed in the host environment. + + + + + Call this method when a project's compilation options are changed in the host environment. + + + + + Call this method when a project's parse options are changed in the host environment. + + + + + Call this method when a project reference is added to a project in the host environment. + + + + + Call this method when a project reference is removed from a project in the host environment. + + + + + Call this method when a metadata reference is added to a project in the host environment. + + + + + Call this method when a metadata reference is removed from a project in the host environment. + + + + + Call this method when an analyzer reference is added to a project in the host environment. + + + + + Call this method when an analyzer reference is removed from a project in the host environment. + + + + + Call this method when an analyzer reference is added to a project in the host environment. + + + + + Call this method when an analyzer reference is removed from a project in the host environment. + + + + + Call this method when status of project has changed to incomplete. + See for more information. + + + + + Call this method when a project's RunAnalyzers property is changed in the host environment. + + + + + Call this method when a document is added to a project in the host environment. + + + + + Call this method when multiple document are added to one or more projects in the host environment. + + + + + Call this method when a document is reloaded in the host environment. + + + + + Call this method when a document is removed from a project in the host environment. + + + + + Call this method when the text of a document is changed on disk. + + + + + Call this method when the text of a additional document is changed on disk. + + + + + Call this method when the text of a analyzer config document is changed on disk. + + + + + Call this method when the document info changes, such as the name, folders or file path. + + + + + Call this method when the text of a document is updated in the host environment. + + + + + Call this method when the text of an additional document is updated in the host environment. + + + + + Call this method when the text of an analyzer config document is updated in the host environment. + + + + + When a s text is changed, we need to make sure all of the linked + files also have their content updated in the new solution before applying it to the + workspace to avoid the workspace having solutions with linked files where the contents + do not match. + + + + + Call this method when the SourceCodeKind of a document changes in the host environment. + + + + + Call this method when an additional document is added to a project in the host environment. + + + + + Call this method when an additional document is removed from a project in the host environment. + + + + + Call this method when an analyzer config document is added to a project in the host environment. + + + + + Call this method when an analyzer config document is removed from a project in the host environment. + + + + + Updates all projects to properly reference other projects as project references instead of metadata references. + + + + + Determines if the specific kind of change is supported by the method. + + + + + Returns if a reference to referencedProject can be added to + referencingProject. otherwise. + + + + + Apply changes made to a solution back to the workspace. + + The specified solution must be one that originated from this workspace. If it is not, or the workspace + has been updated since the solution was obtained from the workspace, then this method returns false. This method + will still throw if the solution contains changes that are not supported according to the + method. + + Thrown if the solution contains changes not supported according to the + method. + + + + Called during a call to to determine if a specific change to is allowed. + + + This method is only called if returns false for . + If returns true, then that means all changes are allowed and this method does not need to be called. + + The old of the project from prior to the change. + The new of the project that was passed to . + The project contained in the passed to . + + + + Called during a call to to determine if a specific change to is allowed. + + + This method is only called if returns false for . + If returns true, then that means all changes are allowed and this method does not need to be called. + + The old of the project from prior to the change. + The new of the project that was passed to . + The project contained in the passed to . + + + + This method is called during for each project + that has been added, removed or changed. + + Override this method if you want to modify how project changes are applied. + + + + + This method is called during to add a project to the current solution. + + Override this method to implement the capability of adding projects. + + + + + This method is called during to remove a project from the current solution. + + Override this method to implement the capability of removing projects. + + + + + This method is called during to change the compilation options. + + Override this method to implement the capability of changing compilation options. + + + + + This method is called during to change the parse options. + + Override this method to implement the capability of changing parse options. + + + + + This method is called during to add a project reference to a project. + + Override this method to implement the capability of adding project references. + + + + + This method is called during to remove a project reference from a project. + + Override this method to implement the capability of removing project references. + + + + + This method is called during to add a metadata reference to a project. + + Override this method to implement the capability of adding metadata references. + + + + + This method is called during to remove a metadata reference from a project. + + Override this method to implement the capability of removing metadata references. + + + + + This method is called during to add an analyzer reference to a project. + + Override this method to implement the capability of adding analyzer references. + + + + + This method is called during to remove an analyzer reference from a project. + + Override this method to implement the capability of removing analyzer references. + + + + + This method is called during to add an analyzer reference to the solution. + + Override this method to implement the capability of adding analyzer references. + + + + + This method is called during to remove an analyzer reference from the solution. + + Override this method to implement the capability of removing analyzer references. + + + + + This method is called during to add a new document to a project. + + Override this method to implement the capability of adding documents. + + + + + This method is called during to remove a document from a project. + + Override this method to implement the capability of removing documents. + + + + + This method is called to change the text of a document. + + Override this method to implement the capability of changing document text. + + + + + This method is called to change the info of a document. + + Override this method to implement the capability of changing a document's info. + + + + + This method is called during to add a new additional document to a project. + + Override this method to implement the capability of adding additional documents. + + + + + This method is called during to remove an additional document from a project. + + Override this method to implement the capability of removing additional documents. + + + + + This method is called to change the text of an additional document. + + Override this method to implement the capability of changing additional document text. + + + + + This method is called during to add a new analyzer config document to a project. + + Override this method to implement the capability of adding analyzer config documents. + + + + + This method is called during to remove an analyzer config document from a project. + + Override this method to implement the capability of removing analyzer config documents. + + + + + This method is called to change the text of an analyzer config document. + + Override this method to implement the capability of changing analyzer config document text. + + + + + Throws an exception is the solution is not empty. + + + + + Throws an exception if the project is not part of the current solution. + + + + + Throws an exception is the project is part of the current solution. + + + + + Throws an exception if a project does not have a specific project reference. + + + + + Throws an exception if a project already has a specific project reference. + + + + + Throws an exception if project has a transitive reference to another project. + + + + + Throws an exception if a project does not have a specific metadata reference. + + + + + Throws an exception if a project already has a specific metadata reference. + + + + + Throws an exception if a project does not have a specific analyzer reference. + + + + + Throws an exception if a project already has a specific analyzer reference. + + + + + Throws an exception if a project already has a specific analyzer reference. + + + + + Throws an exception if a project already has a specific analyzer reference. + + + + + Throws an exception if a document is not part of the current solution. + + + + + Throws an exception if an additional document is not part of the current solution. + + + + + Throws an exception if an analyzer config is not part of the current solution. + + + + + Throws an exception if a document is already part of the current solution. + + + + + Throws an exception if an additional document is already part of the current solution. + + + + + Throws an exception if the analyzer config document is already part of the current solution. + + + + + Gets the name to use for a project in an error message. + + + + + Gets the name to use for a document in an error message. + + + + + Gets the name to use for an additional document in an error message. + + + + + Gets the name to use for an analyzer document in an error message. + + + + + A class that responds to text buffer changes + + + + + Tracks the document ID in the current context for a source text container for an opened text buffer. + + For each entry in this map, there must be a corresponding entry in where the document ID in current context is one of associated document IDs. + + + + Tracks all the associated document IDs for a source text container for an opened text buffer. + + + + + True if this workspace supports manually opening and closing documents. + + + + + True if this workspace supports manually changing the active context document of a text buffer by calling . + + + + + Open the specified document in the host environment. + + + + + Close the specified document in the host environment. + + + + + Open the specified additional document in the host environment. + + + + + Close the specified additional document in the host environment. + + + + + Open the specified analyzer config document in the host environment. + + + + + Close the specified analyzer config document in the host environment. + + + + + Determines if the document is currently open in the host environment. + + + + + Gets a list of the currently opened documents. + + + + + Gets the ids for documents in the snapshot associated with the given . + Documents are normally associated with a text container when the documents are opened. + + + + + Gets the id for the document associated with the given text container in its current context. + Documents are normally associated with a text container when the documents are opened. + + + + + Finds the related to the given that + is in the current context. If the is currently closed, then + it is returned directly. If it is open, then this returns the same result that + would return for the + . + + + + + Call this method to tell the host environment to change the current active context to this document. Only supported if + returns true. + + + + + Call this method when a document has been made the active context in the host environment. + + + + + Registers a SourceTextContainer to a source generated document. Unlike , + this doesn't result in the workspace being updated any time the contents of the container is changed; instead + this ensures that features going from the text container to the buffer back to a document get a usable document. + + + + The DocumentId of the current context document attached to the textContainer, if any. + + + + This method is called during OnSolutionReload. Override this method if you want to manipulate + the reloaded solution. + + + + + An event raised whenever the current solution is changed. + + + + + An event raised whenever the workspace or part of its solution model + fails to access a file or other external resource. + + + + + An event that is fired when a documents is opened in the editor. + + + + + An event that is fired when a document is closed in the editor. + + + + + An event that is fired when the active context document associated with a buffer + changes. + + + + + Gets the workspace associated with the specific text container. + + + + + Register a correspondence between a text container and a workspace. + + + + + Unregister a correspondence between a text container and a workspace. + + + + + Returns a for a given text container. + + + + + The describing any kind of workspace change. + + + When linked files are edited, one document change event is fired per linked file. All of + these events contain the same , and they all contain the same + . This is so that we can trigger document change events on all + affected documents without reporting intermediate states in which the linked file contents + do not match. + + + + + If linked documents are being changed, there may be multiple events with the same + and . Note that the workspace starts with its solution set to an empty solution. + replaces the previous solution, which might be the empty + one. + + + + + If linked documents are being changed, there may be multiple events with the same + and . Note replaces the previous + solution with the empty one. + + + + + The id of the affected . Can be if this is an change unrelated + to a project (for example . Should be non- for: + + + + + + + + + + + The id of the affected . Can be if this is an change unrelated + to a document (for example . Should be non- for: + + + + + + + + + + + + The current solution changed for an unspecified reason. + + + + + A solution was added to the workspace. + + + + + The current solution was removed from the workspace. + + + + + The current solution was cleared of all projects and documents. + + + + + The current solution was reloaded. + + + + + A project was added to the current solution. + + + + + A project was removed from the current solution. + + + + + A project in the current solution was changed. + + + + + A project in the current solution was reloaded. + + + + + A document was added to the current solution. + + + + + A document was removed from the current solution. + + + + + A document in the current solution was reloaded. + + + + + A document in the current solution was changed. + + + When linked files are edited, one event is fired per + linked file. All of these events contain the same OldSolution, and they all contain + the same NewSolution. This is so that we can trigger document change events on all + affected documents without reporting intermediate states in which the linked file + contents do not match. Each event does not represent + an incremental update from the previous event in this special case. + + + + + An additional document was added to the current solution. + + + + + An additional document was removed from the current solution. + + + + + An additional document in the current solution was reloaded. + + + + + An additional document in the current solution was changed. + + + + + The document in the current solution had is info changed; name, folders, filepath + + + + + An analyzer config document was added to the current solution. + + + + + An analyzer config document was removed from the current solution. + + + + + An analyzer config document in the current solution was reloaded. + + + + + An analyzer config document in the current solution was changed. + + + + + Disables if the workspace creates recoverable trees when from its s. + + + + + Known workspace kinds + + + + + kind. + + + + + The base implementation for . This type provides caching and tracking of inputs given + to . + + + This type generally assumes that files on disk aren't changing, since it ensure that two calls to + will always return the same thing, per that interface's contract. + + + + + Implemented by derived types to actually perform the load for an assembly that doesn't have a cached result. + + + + + Returns the cached assembly for fullPath if we've done a load for this path before, or calls if + it needs to be loaded. This method skips the check in release builds that the path is an absolute path, hence the "Unchecked" in the name. + + + + + When overridden in a derived class, allows substituting an assembly path after we've + identified the context to load an assembly in, but before the assembly is actually + loaded from disk. This is used to substitute out the original path with the shadow-copied version. + + + + + Loads analyzer assemblies from their original locations in the file system. + Assemblies will only be loaded from the locations specified when the loader + is instantiated. + + + This type is meant to be used in scenarios where it is OK for the analyzer + assemblies to be locked on disk for the lifetime of the host; for example, + csc.exe and vbc.exe. In scenarios where support for updating or deleting + the analyzer on disk is required a different loader should be used. + + + + + The base directory for shadow copies. Each instance of + gets its own + subdirectory under this directory. This is also the starting point + for scavenge operations. + + + + + The directory where this instance of + will shadow-copy assemblies, and the mutex created to mark that the owner of it is still active. + + + + + Used to generate unique names for per-assembly directories. Should be updated with . + + + + + Realizes the array. + + + + + Realizes the array and clears the collection. + + + + + Write to slot . + Fills in unallocated slots preceding the , if any. + + + + + Realizes the array. + + + + + Realizes the array, downcasting each element to a derived type. + + + + + Realizes the array and disposes the builder in one operation. + + + + + struct enumerator used in foreach. + + + + + Generic implementation of object pooling pattern with predefined pool size limit. The main + purpose is that limited number of frequently used objects can be kept in the pool for + further recycling. + + Notes: + 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there + is no space in the pool, extra returned objects will be dropped. + + 2) it is implied that if object was obtained from a pool, the caller will return it back in + a relatively short time. Keeping checked out objects for long durations is ok, but + reduces usefulness of pooling. Just new up your own. + + Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. + Rationale: + If there is no intent for reusing the object, do not use pool - just use "new". + + + + + Not using System.Func{T} because this file is linked into the (debugger) Formatter, + which does not have that type (since it compiles against .NET 2.0). + + + + + Produces an instance. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search. + + + + + Returns objects to the pool. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search in Allocate. + + + + + Removes an object from leak tracking. + + This is called when an object is returned to the pool. It may also be explicitly + called if an object allocated from the pool is intentionally not being returned + to the pool. This can be of use with pooled arrays if the consumer wants to + return a larger array to the pool than was originally allocated. + + + + + Provides pooled delegate instances to help avoid closure allocations for delegates that require a state argument + with APIs that do not provide appropriate overloads with state arguments. + + + + + Gets an delegate, which calls with the specified + . The resulting may be called any number of times + until the returned is disposed. + + + The following example shows the use of a capturing delegate for a callback action that requires an + argument: + + + int x = 3; + RunWithActionCallback(() => this.DoSomething(x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + callback action: + + + int x = 3; + using var _ = GetPooledAction(arg => arg.self.DoSomething(arg.x), (self: this, x), out Action action); + RunWithActionCallback(action); + + + The type of argument to pass to . + The unbound action delegate. + The argument to pass to the unbound action delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets an delegate, which calls with the specified + . The resulting may be called any number of times + until the returned is disposed. + + + The following example shows the use of a capturing delegate for a callback action that requires an + argument: + + + int x = 3; + RunWithActionCallback(a => this.DoSomething(a, x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + callback action: + + + int x = 3; + using var _ = GetPooledAction((a, arg) => arg.self.DoSomething(a, arg.x), (self: this, x), out Action<int> action); + RunWithActionCallback(action); + + + The type of the first parameter of the bound action. + The type of argument to pass to . + The unbound action delegate. + The argument to pass to the unbound action delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets an delegate, which calls with the specified + . The resulting may be called any number of times + until the returned is disposed. + + + The following example shows the use of a capturing delegate for a callback action that requires an + argument: + + + int x = 3; + RunWithActionCallback((a, b) => this.DoSomething(a, b, x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + callback action: + + + int x = 3; + using var _ = GetPooledAction((a, b, arg) => arg.self.DoSomething(a, b, arg.x), (self: this, x), out Action<int, int> action); + RunWithActionCallback(action); + + + The type of the first parameter of the bound action. + The type of the second parameter of the bound action. + The type of argument to pass to . + The unbound action delegate. + The argument to pass to the unbound action delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets an delegate, which calls with the specified + . The resulting may be called any number of times + until the returned is disposed. + + + The following example shows the use of a capturing delegate for a callback action that requires an + argument: + + + int x = 3; + RunWithActionCallback((a, b, c) => this.DoSomething(a, b, c, x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + callback action: + + + int x = 3; + using var _ = GetPooledAction((a, b, c, arg) => arg.self.DoSomething(a, b, c, arg.x), (self: this, x), out Action<int, int, int> action); + RunWithActionCallback(action); + + + The type of the first parameter of the bound action. + The type of the second parameter of the bound action. + The type of the third parameter of the bound action. + The type of argument to pass to . + The unbound action delegate. + The argument to pass to the unbound action delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets a delegate, which calls with the + specified . The resulting may be called any + number of times until the returned is disposed. + + + The following example shows the use of a capturing delegate for a predicate that requires an + argument: + + + int x = 3; + RunWithPredicate(() => this.IsSomething(x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + predicate: + + + int x = 3; + using var _ = GetPooledFunction(arg => arg.self.IsSomething(arg.x), (self: this, x), out Func<bool> predicate); + RunWithPredicate(predicate); + + + The type of argument to pass to . + The type of the return value of the function. + The unbound function delegate. + The argument to pass to the unbound function delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets a delegate, which calls with the + specified . The resulting may be called any + number of times until the returned is disposed. + + + The following example shows the use of a capturing delegate for a predicate that requires an + argument: + + + int x = 3; + RunWithPredicate(a => this.IsSomething(a, x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + predicate: + + + int x = 3; + using var _ = GetPooledFunction((a, arg) => arg.self.IsSomething(a, arg.x), (self: this, x), out Func<int, bool> predicate); + RunWithPredicate(predicate); + + + The type of the first parameter of the bound function. + The type of argument to pass to . + The type of the return value of the function. + The unbound function delegate. + The argument to pass to the unbound function delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets a delegate, which calls with the + specified . The resulting may be called any + number of times until the returned is disposed. + + + The following example shows the use of a capturing delegate for a predicate that requires an + argument: + + + int x = 3; + RunWithPredicate((a, b) => this.IsSomething(a, b, x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + predicate: + + + int x = 3; + using var _ = GetPooledFunction((a, b, arg) => arg.self.IsSomething(a, b, arg.x), (self: this, x), out Func<int, int, bool> predicate); + RunWithPredicate(predicate); + + + The type of the first parameter of the bound function. + The type of the second parameter of the bound function. + The type of argument to pass to . + The type of the return value of the function. + The unbound function delegate. + The argument to pass to the unbound function delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + Gets a delegate, which calls with the + specified . The resulting may be called any + number of times until the returned is disposed. + + + The following example shows the use of a capturing delegate for a predicate that requires an + argument: + + + int x = 3; + RunWithPredicate((a, b, c) => this.IsSomething(a, b, c, x)); + + + The following example shows the use of a pooled delegate to avoid capturing allocations for the same + predicate: + + + int x = 3; + using var _ = GetPooledFunction((a, b, c, arg) => arg.self.IsSomething(a, b, c, arg.x), (self: this, x), out Func<int, int, int, bool> predicate); + RunWithPredicate(predicate); + + + The type of the first parameter of the bound function. + The type of the second parameter of the bound function. + The type of the third parameter of the bound function. + The type of argument to pass to . + The type of the return value of the function. + The unbound function delegate. + The argument to pass to the unbound function delegate. + A delegate which calls with the specified + . + A disposable which returns the object to the delegate pool. + + + + A releaser for a pooled delegate. + + + This type is intended for use as the resource of a using statement. When used in this manner, + should not be called explicitly. + + If used without a using statement, calling is optional. If the call is + omitted, the object will not be returned to the pool. The behavior of this type if is + called multiple times is undefined. + + + + + The usage is: + var inst = PooledStringBuilder.GetInstance(); + var sb = inst.builder; + ... Do Stuff... + ... sb.ToString() ... + inst.Free(); + + + + + If someone need to create a private pool + + The size of the pool. + + + + + Verify nodes match source. + + + + + Return the index of the first difference between + the two strings, or -1 if the strings are the same. + + + + + Returns true if the provided position is in a hidden region inaccessible to the user. + + + + + The collection of extension methods for the type + + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If items is null (default) + If the sequence is null, this will throw + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If the sequence is null, this will return an empty array. + + + + Converts a sequence to an immutable array. + + Elemental type of the sequence. + The sequence to convert. + An immutable copy of the contents of the sequence. + If the sequence is null, this will return the default (null) array. + + + + Converts an array to an immutable array. The array must not be null. + + + The sequence to convert + + + + + Converts a array to an immutable array. + + + The sequence to convert + + If the sequence is null, this will return the default (null) array. + + + + Converts an array to an immutable array. + + + The sequence to convert + If the array is null, this will return an empty immutable array. + + + + Reads bytes from specified . + + The stream. + Read-only content of the stream. + + + + Maps an immutable array to another immutable array. + + + + The array to map + The mapping delegate + If the items's length is 0, this will return an empty immutable array + + + + Maps an immutable array to another immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Maps an immutable array to another immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Maps a subset of immutable array to another immutable array. + + Type of the source array items + Type of the transformed array items + The array to transform + The condition to use for filtering the array content. + A transform function to apply to each element that is not filtered out by . + If the items's length is 0, this will return an empty immutable array. + + + + Maps an immutable array through a function that returns ValueTasks, returning the new ImmutableArray. + + + + + Zips two immutable arrays together through a mapping function, producing another immutable array. + + If the items's length is 0, this will return an empty immutable array. + + + + Creates a new immutable array based on filtered elements by the predicate. The array must not be null. + + The array to process + The delegate that defines the conditions of the element to search for. + + + + Creates a new immutable array based on filtered elements by the predicate. The array must not be null. + + The array to process + The delegate that defines the conditions of the element to search for. + + + + Casts the immutable array of a Type to an immutable array of its base type. + + + + + Determines whether this instance and another immutable array are equal. + + + + + The comparer to determine if the two arrays are equal. + True if the two arrays are equal + + + + Returns an empty array if the input array is null (default) + + + + + Returns an empty array if the input nullable value type is null or the underlying array is null (default) + + + + + Returns an array of distinct elements, preserving the order in the original array. + If the array has no duplicates, the original array is returned. The original array must not be null. + + + + + Create BitArray with at least the specified number of bits. + + + + + return a bit array with all bits set from index 0 through bitCount-1 + + + + + + + Make a copy of a bit array. + + + + + + Invert all the bits in the vector. + + + + + Is the given bit array null? + + + + + Modify this bit vector by bitwise AND-ing each element with the other bit vector. + For the purposes of the intersection, any bits beyond the current length will be treated as zeroes. + Return true if any changes were made to the bits of this bit vector. + + + + + Modify this bit vector by '|'ing each element with the other bit vector. + + + True if any bits were set as a result of the union. + + + + + Checks if a type is considered a "built-in integral" by CLR. + + + + + Checks if a type is a primitive of a fixed size. + + + + + These special types are structs that contain fields of the same type + (e.g. System.Int32 contains a field of type System.Int32). + + + + + Checks if a type is considered a "built-in integral" by CLR. + + + + + For signed integer types return number of bits for their representation minus 1. + I.e. 7 for Int8, 31 for Int32, etc. + Used for checking loop end condition for VB for loop. + + + + + Maps an array builder to immutable array. + + + + The array to map + The mapping delegate + If the items's length is 0, this will return an empty immutable array + + + + Maps an array builder to immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + Maps an array builder to immutable array. + + + + + The sequence to map + The mapping delegate + The extra input used by mapping delegate + If the items's length is 0, this will return an empty immutable array. + + + + The collection of extension methods for the type + + + + + If the given key is not found in the dictionary, add it with the given value and return the value. + Otherwise return the existing value associated with that key. + + + + + A MultiDictionary that allows only adding, and preserves the order of values added to the + dictionary. Thread-safe for reading, but not for adding. + + + Always uses the default comparer. + + + + + Add a value to the dictionary. + + + + + Get all values associated with K, in the order they were added. + Returns empty read-only array if no values were present. + + + + + Get a collection of all the keys. + + + + + Each value is either a single V or an . + Never null. + + + + + Provides methods for creating a segmented dictionary that is immutable; meaning it cannot be changed once it is + created. + + + + + Represents a segmented dictionary that is immutable; meaning it cannot be changed once it is created. + + + There are different scenarios best for and others + best for . + + In general, is applicable in scenarios most like + the scenarios where is applicable, and + is applicable in scenarios most like the scenarios where + is applicable. + + The following table summarizes the performance characteristics of + : + + + + Operation + Complexity + Complexity + Comments + + + Item + O(1) + O(log n) + Directly index into the underlying segmented dictionary + + + Add() + O(n) + O(log n) + Requires creating a new segmented dictionary + + + + This type is backed by segmented arrays to avoid using the Large Object Heap without impacting algorithmic + complexity. + + The type of the keys in the dictionary. + The type of the values in the dictionary. + + This type has a documented contract of being exactly one reference-type field in size. Our own + class depends on it, as well as others externally. + + IMPORTANT NOTICE FOR MAINTAINERS AND REVIEWERS: + + This type should be thread-safe. As a struct, it cannot protect its own fields from being changed from one + thread while its members are executing on other threads because structs can change in place simply by + reassigning the field containing this struct. Therefore it is extremely important that ⚠⚠ Every member + should only dereference this ONCE ⚠⚠. If a member needs to reference the + field, that counts as a dereference of this. Calling other instance members + (properties or methods) also counts as dereferencing this. Any member that needs to use this more + than once must instead assign this to a local variable and use that for the rest of the code instead. + This effectively copies the one field in the struct to a local variable so that it is insulated from other + threads. + + + + + The immutable collection this builder is based on. + + + + + The current mutable collection this builder is operating on. This field is initialized to a copy of + the first time a change is made. + + + + + The return value from the implementation of is + . This is the return value for most instances of this + enumerator. + + + + + The return value from the implementation of is + . This is the return value for instances of this + enumerator created by the implementation in + . + + + + + Private helper class for use only by . + + + + + + + + + + + + + + + + + + + + + + + + + + Represents a segmented list that is immutable; meaning it cannot be changed once it is created. + + + There are different scenarios best for and others + best for . + + The following table summarizes the performance characteristics of + : + + + + Operation + Complexity + Complexity + Comments + + + Item + O(1) + O(log n) + Directly index into the underlying segmented list + + + Add() + Currently O(n), but could be O(1) with a relatively large constant + O(log n) + Currently requires creating a new segmented list, but could be modified to only clone the segments with changes + + + Insert() + O(n) + O(log n) + Requires creating a new segmented list and cloning all impacted segments + + + + This type is backed by segmented arrays to avoid using the Large Object Heap without impacting algorithmic + complexity. + + The type of the value in the list. + + This type has a documented contract of being exactly one reference-type field in size. Our own + class depends on it, as well as others externally. + + IMPORTANT NOTICE FOR MAINTAINERS AND REVIEWERS: + + This type should be thread-safe. As a struct, it cannot protect its own fields from being changed from one + thread while its members are executing on other threads because structs can change in place simply by + reassigning the field containing this struct. Therefore it is extremely important that ⚠⚠ Every member + should only dereference this ONCE ⚠⚠. If a member needs to reference the + field, that counts as a dereference of this. Calling other instance members + (properties or methods) also counts as dereferencing this. Any member that needs to use this more + than once must instead assign this to a local variable and use that for the rest of the code instead. + This effectively copies the one field in the struct to a local variable so that it is insulated from other + threads. + + + + + The immutable collection this builder is based on. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Private helper class for use only by . + + + + + The immutable collection this builder is based on. + + + + + The current mutable collection this builder is operating on. This field is initialized to a copy of + the first time a change is made. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Swaps the values in the two references if the first is greater than the second. + + + Swaps the values in the two references, regardless of whether the two references are the same. + + + Helper methods for use in array/span sorting routines. + + + + Returns the integer (floor) log of the specified value, base 2. + Note that by convention, input value 0 returns 0 since Log(0) is undefined. + Does not directly use any hardware intrinsics, nor does it incur branching. + + The value. + + + Returns approximate reciprocal of the divisor: ceil(2**64 / divisor). + This should only be used on 64-bit. + + + Performs a mod operation using the multiplier pre-computed with . + + PERF: This improves performance in 64-bit scenarios at the expense of performance in 32-bit scenarios. Since + we only build a single AnyCPU binary, we opt for improved performance in the 64-bit scenario. + + + + + Provides static methods to invoke members on value types that explicitly implement the + member. + + + Normally, invocation of explicit interface members requires boxing or copying the value type, which is + especially problematic for operations that mutate the value. Invocation through these helpers behaves like a + normal call to an implicitly implemented member. + + + + + Provides static methods to invoke members on value types that explicitly implement + the member. + + + Normally, invocation of explicit interface members requires boxing or copying the value type, which is + especially problematic for operations that mutate the value. Invocation through these helpers behaves like a + normal call to an implicitly implemented member. + + + + + Provides static methods to invoke members on value types that explicitly implement the + member. + + + Normally, invocation of explicit interface members requires boxing or copying the value type, which is + especially problematic for operations that mutate the value. Invocation through these helpers behaves like a + normal call to an implicitly implemented member. + + + + + Provides static methods to invoke members on value types that explicitly implement + the member. + + + Normally, invocation of explicit interface members requires boxing or copying the value type, which is + especially problematic for operations that mutate the value. Invocation through these helpers behaves like a + normal call to an implicitly implemented member. + + + + + Provides static methods to invoke members on value types that explicitly implement the + member. + + + Normally, invocation of explicit interface members requires boxing or copying the value type, which is + especially problematic for operations that mutate the value. Invocation through these helpers behaves like a + normal call to an implicitly implemented member. + + + + + Used internally to control behavior of insertion into a or . + + + + + The default insertion behavior. + + + + + Specifies that an existing entry with the same key should be overwritten if encountered. + + + + + Specifies that if an existing entry with the same key is encountered, an exception should be thrown. + + + + + Returns a by-ref to type that is a null reference. + + + + + Returns if a given by-ref to type is a null reference. + + + This check is conceptually similar to (void*)(&source) == nullptr. + + + + + A combination of and + . + + + + + Calculates the maximum number of elements of size which can fit into an array + which has the following characteristics: + + The array can be allocated in the small object heap. + The array length is a power of 2. + + + The size of the elements in the array. + The segment size to use for small object heap segmented arrays. + + + + Calculates a shift which can be applied to an absolute index to get the page index within a segmented array. + + The number of elements in each page of the segmented array. Must be a power of 2. + The shift to apply to the absolute index to get the page index within a segmented array. + + + + Calculates a mask, which can be applied to an absolute index to get the index within a page of a segmented + array. + + The number of elements in each page of the segmented array. Must be a power of 2. + The bit mask to obtain the index within a page from an absolute index within a segmented array. + + + Destination array is not long enough to copy all the items in the collection. Check array index and length. + + + Hashtable's capacity overflowed and went negative. Check load factor, capacity and the current size of the table. + + + The given key '{0}' was not present in the dictionary. + + + Destination array was not long enough. Check the destination index, length, and the array's lower bounds. + + + Source array was not long enough. Check the source index, length, and the array's lower bounds. + + + The lower bound of target array must be zero. + + + Only single dimensional arrays are supported for the requested action. + + + The value "{0}" is not of type "{1}" and cannot be used in this generic collection. + + + An item with the same key has already been added. Key: {0} + + + Target array type is not compatible with the type of items in the collection. + + + Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection. + + + Number was less than the array's lower bound in the first dimension. + + + Larger than collection size. + + + Count must be positive and count must refer to a location within the string/array/collection. + + + Index was out of range. Must be non-negative and less than the size of the collection. + + + Index must be within the bounds of the List. + + + Non-negative number required. + + + capacity was less than the current size. + + + Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct. + + + Collection was modified; enumeration operation may not execute. + + + Enumeration has either not started or has already finished. + + + Failed to compare two elements in the array. + + + Mutating a key collection derived from a dictionary is not allowed. + + + Mutating a value collection derived from a dictionary is not allowed. + + + The specified arrays must have the same number of dimensions. + + + Collection was of a fixed size. + + + Object is not a array with the same number of elements as the array to compare it to. + + + Unable to sort because the IComparer.Compare() method returns inconsistent results. Either a value does not compare equal to itself, or one value repeatedly compared to another value yields different results. IComparer: '{0}'. + + + Cannot find the old value + + + + Mutates a value in-place with optimistic locking transaction semantics via a specified transformation + function. The transformation is retried as many times as necessary to win the optimistic locking race. + + The type of value stored by the list. + + The variable or field to be changed, which may be accessed by multiple threads. + + + A function that mutates the value. This function should be side-effect free, + as it may run multiple times when races occur with other threads. + + if the location's value is changed by applying the result of the + function; otherwise, if the location's value remained + the same because the last invocation of returned the existing value. + + + + + Mutates a value in-place with optimistic locking transaction semantics via a specified transformation + function. The transformation is retried as many times as necessary to win the optimistic locking race. + + The type of value stored by the list. + The type of argument passed to the . + + The variable or field to be changed, which may be accessed by multiple threads. + + + A function that mutates the value. This function should be side-effect free, as it may run multiple times + when races occur with other threads. + The argument to pass to . + + if the location's value is changed by applying the result of the + function; otherwise, if the location's value remained + the same because the last invocation of returned the existing value. + + + + + Assigns a field or variable containing an immutable list to the specified value and returns the previous + value. + + The type of value stored by the list. + The field or local variable to change. + The new value to assign. + The prior value at the specified . + + + + Assigns a field or variable containing an immutable list to the specified value if it is currently equal to + another specified value. Returns the previous value. + + The type of value stored by the list. + The field or local variable to change. + The new value to assign. + The value to check equality for before assigning. + The prior value at the specified . + + + + Assigns a field or variable containing an immutable list to the specified value if it is has not yet been + initialized. + + The type of value stored by the list. + The field or local variable to change. + The new value to assign. + if the field was assigned the specified value; otherwise, + if it was previously initialized. + + + + Mutates a value in-place with optimistic locking transaction semantics via a specified transformation + function. The transformation is retried as many times as necessary to win the optimistic locking race. + + The type of key stored by the dictionary. + The type of value stored by the dictionary. + + The variable or field to be changed, which may be accessed by multiple threads. + + + A function that mutates the value. This function should be side-effect free, + as it may run multiple times when races occur with other threads. + + if the location's value is changed by applying the result of the + function; otherwise, if the location's value remained + the same because the last invocation of returned the existing value. + + + + + Mutates a value in-place with optimistic locking transaction semantics via a specified transformation + function. The transformation is retried as many times as necessary to win the optimistic locking race. + + The type of key stored by the dictionary. + The type of value stored by the dictionary. + The type of argument passed to the . + + The variable or field to be changed, which may be accessed by multiple threads. + + + A function that mutates the value. This function should be side-effect free, as it may run multiple times + when races occur with other threads. + The argument to pass to . + + if the location's value is changed by applying the result of the + function; otherwise, if the location's value remained + the same because the last invocation of returned the existing value. + + + + + Assigns a field or variable containing an immutable dictionary to the specified value and returns the + previous value. + + The type of key stored by the dictionary. + The type of value stored by the dictionary. + The field or local variable to change. + The new value to assign. + The prior value at the specified . + + + + Assigns a field or variable containing an immutable dictionary to the specified value if it is currently + equal to another specified value. Returns the previous value. + + The type of key stored by the dictionary. + The type of value stored by the dictionary. + The field or local variable to change. + The new value to assign. + The value to check equality for before assigning. + The prior value at the specified . + + + + Assigns a field or variable containing an immutable dictionary to the specified value if it is has not yet + been initialized. + + The type of key stored by the dictionary. + The type of value stored by the dictionary. + The field or local variable to change. + The new value to assign. + if the field was assigned the specified value; otherwise, + if it was previously initialized. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Defines a fixed-size collection with the same API surface and behavior as an "SZArray", which is a + single-dimensional zero-based array commonly represented in C# as T[]. The implementation of this + collection uses segmented arrays to avoid placing objects on the Large Object Heap. + + The type of elements stored in the array. + + + + The number of elements in each page of the segmented array of type . + + + The segment size is calculated according to , performs the IL operation + defined by . ECMA-335 defines this operation with the following note: + + sizeof returns the total size that would be occupied by each element in an array of this type – + including any padding the implementation chooses to add. Specifically, array elements lie sizeof + bytes apart. + + + + + The bit shift to apply to an array index to get the page index within . + + + + + The bit mask to apply to an array index to get the index within a page of . + + + + + Represents a collection of keys and values. + + + This collection has the same performance characteristics as , but + uses segmented arrays to avoid allocations in the Large Object Heap. + + The type of the keys in the dictionary. + The type of the values in the dictionary. + + + + doesn't devirtualize on .NET Framework, so we always ensure + is initialized to a non- value. + + + + + Ensures that the dictionary can hold up to 'capacity' entries without any further expansion of its backing storage + + + + + Sets the capacity of this dictionary to what it would be if it had been originally initialized with all its entries + + + This method can be used to minimize the memory overhead + once it is known that no new elements will be added. + + To allocate minimum size storage array, execute the following statements: + + dictionary.Clear(); + dictionary.TrimExcess(); + + + + + Sets the capacity of this dictionary to hold up 'capacity' entries without any further expansion of its backing storage + + + This method can be used to minimize the memory overhead + once it is known that no new elements will be added. + + + + + 0-based index of next entry in chain: -1 means end of chain + also encodes whether this entry _itself_ is part of the free list by changing sign and subtracting 3, + so -2 means end of free list, -3 means index 0 but on free list, -4 means index 1 but on free list, etc. + + + + + Represents a strongly typed list of objects that can be accessed by index. Provides methods to search, sort, and + manipulate lists. + + + This collection has the same performance characteristics as , but uses segmented + arrays to avoid allocations in the Large Object Heap. + + The type of elements in the list. + + + + Initializes a new instance of the class. + + An ordered set of fully qualified + paths which are searched when resolving assembly names. + Directory used when resolving relative paths. + + + + A pre-created delegate to assign to if needed. + + + + + Dumps the stack trace of the exception and the handler to the console. This is useful + for debugging unit tests that hit a fatal exception + + + + + Checks for the given ; if the is true, + immediately terminates the process without running any pending finally blocks or finalizers + and causes a crash dump to be collected (if the system is configured to do so). + Otherwise, the process continues normally. + + The conditional expression to evaluate. + An optional message to be recorded in the dump in case of failure. Can be null. + + + + Set by the host to handle an error report; this may crash the process or report telemetry. + + + + + Same as setting the Handler property except that it avoids the assert. This is useful in + test code which needs to verify the handler is called in specific cases and will continually + overwrite this value. + + + + + Copies the handler in this instance to the linked copy of this type in this other assembly. + + + This file is in linked into multiple layers, but we want to ensure that all layers have the same copy. + This lets us copy the handler in this instance into the same in another instance. + + + + + Use in an exception filter to report an error without catching the exception. + The error is reported by calling . + + to avoid catching the exception. + + + + Use in an exception filter to report an error (by calling ), unless the + operation has been cancelled. The exception is never caught. + + to avoid catching the exception. + + + + Use in an exception filter to report an error (by calling ), unless the + operation has been cancelled at the request of . The exception is + never caught. + + Cancellable operations are only expected to throw if the + applicable indicates cancellation is requested by setting + . Unexpected cancellation, i.e. an + which occurs without + requesting cancellation, is treated as an error by this method. + + This method does not require to match + , provided cancellation is expected per the previous + paragraph. + + A which will have + set if cancellation is expected. + to avoid catching the exception. + + + + Report an error. + Calls and doesn't pass the exception through (the method returns true). + This is generally expected to be used within an exception filter as that allows us to + capture data at the point the exception is thrown rather than when it is handled. + However, it can also be used outside of an exception filter. If the exception has not + already been thrown the method will throw and catch it itself to ensure we get a useful + stack trace. + + True to catch the exception. + + + + Use in an exception filter to report an error (by calling ) and catch + the exception, unless the operation was cancelled. + + to catch the exception if the error was reported; otherwise, + to propagate the exception if the operation was cancelled. + + + + Use in an exception filter to report an error (by calling ) and catch + the exception, unless the operation was cancelled. + + to catch the exception if the error was reported; otherwise, + to propagate the exception if the operation was cancelled. + + + + Use in an exception filter to report an error (by calling ) and + catch the exception, unless the operation was cancelled at the request of + . + + Cancellable operations are only expected to throw if the + applicable indicates cancellation is requested by setting + . Unexpected cancellation, i.e. an + which occurs without + requesting cancellation, is treated as an error by this method. + + This method does not require to match + , provided cancellation is expected per the previous + paragraph. + + A which will have + set if cancellation is expected. + to catch the exception if the error was reported; otherwise, + to propagate the exception if the operation was cancelled. + + + + Use in an exception filter to report an error (by calling ) and + catch the exception, unless the operation was cancelled at the request of + . + + Cancellable operations are only expected to throw if the + applicable indicates cancellation is requested by setting + . Unexpected cancellation, i.e. an + which occurs without + requesting cancellation, is treated as an error by this method. + + This method does not require to match + , provided cancellation is expected per the previous + paragraph. + + A which will have + set if cancellation is expected. + to catch the exception if the error was reported; otherwise, + to propagate the exception if the operation was cancelled. + + + + The severity of the error, see the enum members for a description of when to use each. This is metadata that's included + in a non-fatal fault report, which we can take advantage of on the backend to automatically triage bugs. For example, + a critical severity issue we can open with a lower bug count compared to a low priority one. + + + + + The severity hasn't been categorized. Don't use this in new code. + + + + + Something failed, but the user is unlikely to notice. Especially useful for background things that we can silently recover + from, like bugs in caching systems. + + + + + Something failed, and the user might notice, but they're still likely able to carry on. For example, if the user + asked for some information from the IDE (find references, completion, etc.) and we were able to give partial results. + + + + + Something failed, and the user likely noticed. For example, the user pressed a button to do an action, and + we threw an exception so we completely failed to do that in an unrecoverable way. This may also be used + for back-end systems where a failure is going to result in a highly broken experience, for example if parsing a file + catastrophically failed. + + + + + Ensures that the remaining stack space is large enough to execute + the average function. + + how many times the calling function has recursed + + The available stack space is insufficient to execute + the average function. + + + + + Specifies the desired placement of added imports. + + + + + Place imports inside the namespace definition. + + + + + Place imports outside the namespace definition. + + + + + Returns true if the tree already has an existing import syntactically equivalent to + in scope at . This includes + global imports for VB. + + + + + Given a context location in a provided syntax tree, returns the appropriate container + that should be added to. + + + + + Base representation of an editorconfig file that has been parsed + + The kind of options that we expect to encounter in the editorconfig file. + The full path to the editorconfig file on disk. Optional if not doing pathwise comparisons + The set of options that were discovered in the file. + + + + Base representation of an editorconfig file that has been parsed + + The kind of options that we expect to encounter in the editorconfig file. + The full path to the editorconfig file on disk. Optional if not doing pathwise comparisons + The set of options that were discovered in the file. + + + + Attempts to find a section of the editorconfig file that is an exact match for the given language. + + + + + Attempts to find a section of the editorconfig file that applies to the given language for the given criteria. + + + + + Attempts to find a section of the editorconfig file that applies to the given file. + + + + + Attempts to find a section of the editorconfig file that applies to the given file for the given criteria. + + + + + Base option that all editorconfig option inherit from. + + + + + Base option that all editorconfig option inherit from. + + + + + An abstraction over an editorconfig option that reprsents some type and the span in which that option was defined. + + + + + An abstraction over an editorconfig option that reprsents some type and the span in which that option was defined. + + + + + Represents a completed parse of a single editorconfig document + + The full file path to the file on disk. Can be null if you never need to compare if a section is valid for pathing reasons + The set of naming style options that were parsed in the file + + + + Represents a completed parse of a single editorconfig document + + The full file path to the file on disk. Can be null if you never need to compare if a section is valid for pathing reasons + The set of naming style options that were parsed in the file + + + + Parses a string and returns all discovered naming style options and their locations + + The text contents of the editorconfig file. + The full path to the editorconfig file on disk. + A type that represents all discovered naming style options in the given string. + + + + Parses a and returns all discovered naming style options and their locations + + The contents of the editorconfig file. + The full path to the editorconfig file on disk. + A type that represents all discovered naming style options in the given . + + + + The root naming style option composed of several settings as well as a s describing where they were all defined. + + The section of the editorconfig file this option applies to. + The name given to thie option in the file. + The kinds of symbols this option applies to. + The rules about how the specified symbols must be named. + The keve of build error that should be produced when a matching symbol does not meetthe naming requirements. + + + + The root naming style option composed of several settings as well as a s describing where they were all defined. + + The section of the editorconfig file this option applies to. + The name given to thie option in the file. + The kinds of symbols this option applies to. + The rules about how the specified symbols must be named. + The keve of build error that should be produced when a matching symbol does not meetthe naming requirements. + + + + A description of the kinds of symbols a rule should apply to as well as a s describing where they were all defined. + + The name given to thie option in the file. + The kinds of symbols this option applies to. + The accessibilities of symbols this option applies to. + The required modifier that must be present on symbols this option applies to. + + + + A description of the kinds of symbols a rule should apply to as well as a s describing where they were all defined. + + The name given to thie option in the file. + The kinds of symbols this option applies to. + The accessibilities of symbols this option applies to. + The required modifier that must be present on symbols this option applies to. + + + + The rules about how the specified symbols must be named as well as a s describing where they were all defined. + + The name given to thie option in the file. + Required suffix + Required prefix + Required word separator characters + The capitalization scheme + + + + The rules about how the specified symbols must be named as well as a s describing where they were all defined. + + The name given to thie option in the file. + Required suffix + Required prefix + Required word separator characters + The capitalization scheme + + + + Returns the default section header text for the given language combination + + The language combination to find the default header text for. + the default header text. + + + + Checks where this header supports the given language for the given match criteria + + The language to check support for. + The criteria for which we consider a language a mache the default is . + If this section is a match for the given language, meaning options can be added here. + + + + Checks where this header supports the given file path for the given match criteria + + full path to a file + The criteria for which we consider a language a mache the default is . + + If the section header cannot be parsed because it it invalid this method will always return no match. + If no file path was given in the operation that produces this section and a relative path comparison is required to check for support this method will return no match. + + If this section is a match for the given file, meaning options can be added here. + + + + Most exact section match for a language. Will always match all files for the given language. + + + - for C# this is [*.cs] + - for Visual Basic it is [*.vb]. + - If both language are specified it is [*.{cs,vb}] + + + + + Exact section match for a language with unknown file patterns. Will always match all files for the given language. + + + An exact match but with some unknown file patterns also matching + example for C#: [*.{cs,csx}] + This will not be the case if only C# was specified and a VB pattern is found + (or vice versa) + + + + + An exact section match for a language with other known language patterns. Will match all files for the given language as well as other known languages. + + + Given this pattern [*.{cs,vb}] for C# this is considered a match (since it matches all C# files). + Even though it also matches for Visual Basic. + + + + + Matches the file pattern according to the editorconfig specification but is a superset of an exact language match. + + + Patterns such as [*c*] or [*s] would match for C# in this case (being a superset of *.cs) + + + + + Matches the file pattern according to the editorconfig specification but is a supset of an exact language match. + + + Patterns such as [*.Tests.cs] would match for C# if the file being considered is UnitTests.cs + + + + + Matches [*]. + + + + + Matched because section is global and therefore always matches. + + + + + Matches any valid pattern except for global section. + + + + + Matches any valid pattern. + + + + + Section did not match and is not applicable to the file or language. + + + + + Returns the precedence of the given expression, mapped down to one of the + values. The mapping is language specific. + + + + + Returns the precedence of this expression in a scale specific to a particular + language. These values cannot be compared across languages, but relates the + precedence of expressions in the same language. A smaller value means lower + precedence. + + + + + Runs dataflow analysis for the given on the given . + + Control flow graph on which to execute analysis. + Dataflow analyzer. + Block analysis data at the end of the exit block. + + Algorithm for this CFG walker has been forked from 's internal + implementation for basic block reachability computation: "MarkReachableBlocks", + we should keep them in sync as much as possible. + + + + + Analyzer to execute custom dataflow analysis on a control flow graph. + + Custom data tracked for each basic block with values at start of the block. + + + + Gets current analysis data for the given basic block, or an empty analysis data. + + + + + Gets empty analysis data for first analysis pass on a basic block. + + + + + Updates the current analysis data for the given basic block. + + + + + Analyze the given basic block and return the block analysis data at the end of the block for its successors. + + + + + Analyze the non-conditional fallthrough successor branch for the given basic block + and return the block analysis data for the branch destination. + + + + + Analyze the given conditional branch for the given basic block and return the + block analysis data for the branch destinations for the fallthrough and + conditional successor branches. + + + + + Merge the given block analysis data instances to produce the resultant merge data. + + + + + Returns true if both the given block analysis data instances should be considered equivalent by analysis. + + + + + Flag indicating if the dataflow analysis should run on unreachable blocks. + + + + + Indicates the kind of flow capture in an . + + + + + Indicates an R-Value flow capture, i.e. capture of a symbol's value. + + + + + Indicates an L-Value flow capture, i.e. captures of a symbol's location/address. + + + + + Indicates both an R-Value and an L-Value flow capture, i.e. captures of a symbol's value and location/address. + These are generated for left of a compound assignment operation, such that there is conditional code on the right side of the compound assignment. + + + + + Helper class to detect s that are l-value captures. + L-value captures are essentially captures of a symbol's location/address. + Corresponding s which share the same + as this flow capture, dereferences and writes to this location + subsequently in the flow graph. + For example, consider the below code: + a[i] = x ?? a[j]; + The control flow graph contains an initial flow capture of "a[i]" to capture the l-value + of this array element: + FC0 (a[i]) + Then it evaluates the right hand side, which can have different + values on different control flow paths, and the resultant value is then written + to the captured location: + FCR0 = result + + + NOTE: This type is a workaround for https://github.com/dotnet/roslyn/issues/31007 + and it can be deleted once that feature is implemented. + + + + + Analysis to compute all the symbol writes for local and parameter + symbols in an executable code block, along with the information of whether or not the definition + may be read on some control flow path. + + + + + Core analysis data to drive the operation + for operation tree based analysis OR control flow graph based analysis. + + + + + Pooled allocated during analysis with the + current instance, which will be freed during . + + + + + Set of locals/parameters which are passed by reference to other method calls. + + + + + Map from each (symbol, write) to a boolean indicating if the value assigned + at the write is read on some control flow path. + For example, consider the following code: + + int x = 0; + x = 1; + Console.WriteLine(x); + + This map will have two entries for 'x': + 1. Key = (symbol: x, write: 'int x = 0') + Value = 'false', because value assigned to 'x' here **is never** read. + 2. Key = (symbol: x, write: 'x = 1') + Value = 'true', because value assigned to 'x' here **may be** read on + some control flow path. + + + + + Set of locals/parameters that are read at least once. + + + + + Set of lambda/local functions whose invocations are currently being analyzed to prevent + infinite recursion for analyzing code with recursive lambda/local function calls. + + + + + Current block analysis data used for analysis. + + + + + Block analysis data used for an additional conditional branch. + + + + + Creates an immutable for the current analysis data. + + + + + Resets all the currently tracked symbol writes to be conservatively marked as read. + + + + + Analysis data for a particular for + based dataflow analysis OR for the entire executable code block for high level operation + tree based analysis. + + + + + Map from each symbol to possible set of reachable write operations that are live at current program point. + A write is live if there is no intermediate write operation that overwrites it. + + + + + Gets the currently reachable writes for the given symbol. + + + + + Marks the given symbol write as a new unread write operation, + potentially clearing out the prior write operations if is false. + + + + + Runs dataflow analysis on the given control flow graph to compute symbol usage results + for symbol read/writes. + + + + + Runs a fast, non-precise operation tree based analysis to compute symbol usage results + for symbol read/writes. + + + + + Dataflow analysis to compute symbol usage information (i.e. reads/writes) for locals/parameters + in a given control flow graph, along with the information of whether or not the writes + may be read on some control flow path. + + + + + Map from basic block to current for dataflow analysis. + + + + + Callback to analyze lambda/local function invocations and return new block analysis data. + + + + + Map from flow capture ID to set of captured symbol addresses along all possible control flow paths. + + + + + Map from operations to potential delegate creation targets that could be invoked via delegate invocation + on the operation. + Used to analyze delegate creations/invocations of lambdas and local/functions defined in a method. + + + + + Map from local functions to the where the local function was accessed + to create an invocable delegate. This control flow graph is required to lazily get or create the + control flow graph for this local function at delegate invocation callsite. + + + + + Map from lambdas to the where the lambda was defined + to create an invocable delegate. This control flow graph is required to lazily get or create the + control flow graph for this lambda at delegate invocation callsite. + + + + + Map from basic block range to set of writes within this block range. + Used for try-catch-finally analysis, where start of catch/finally blocks should + consider all writes in the corresponding try block as reachable. + + + + + Flow captures for l-value or address captures. + + + + + Special handling to ensure that at start of catch/filter/finally region analysis, + we mark all symbol writes from the corresponding try region as reachable in the + catch/filter/finally region. + + + + + + Operations walker used for walking high-level operation tree + as well as control flow graph based operations. + + + + + Map from each symbol write to a boolean indicating if the value assinged + at write is used/read on some control flow path. + For example, consider the following code: + + int x = 0; + x = 1; + Console.WriteLine(x); + + This map will have two entries for 'x': + 1. Key = (symbol: x, write: 'int x = 0') + Value = 'false', because value assigned to 'x' here **is never** read. + 2. Key = (symbol: x, write: 'x = 1') + Value = 'true', because value assigned to 'x' here **may be** read on + some control flow path. + + + + + Set of locals/parameters that are read at least once. + + + + + Gets symbol writes that have are never read. + WriteOperation will be null for the initial value write to parameter symbols from the callsite. + + + + + Returns true if the initial value of the parameter from the caller is used. + + + + + Gets the write count for a given local/parameter symbol. + + + + + + A is a lightweight identifier for a symbol that can be used to + resolve the "same" symbol across compilations. Different symbols have different concepts + of "same-ness". Same-ness is recursively defined as follows: + + Two s are the "same" if they have + the "same" and + equal . + Two s are the "same" if + they have equal .Name + Two s are the "same" if they have + the "same" and + equal . + Two s are the "same" if they have + the "same" , + equal , + equal , + the "same" , and have + the "same" s and + equal s. + Two s are the "same" if they have + the "same" . + is not used because module identity is not important in practice. + Two s are the "same" if they have + the "same" , + equal , + equal and + the "same" . + Two s are the "same" if they have + the "same" and + equal . + If the is the global namespace for a + compilation, then it will only match another + global namespace of another compilation. + Two s are the "same" if they have + the "same" and + equal . + Two s are the "same" if they have + the "same" . + Two s are the "same" if they have + the "same" the "same" , + the "same" , and have + the "same" s and + the "same" s. + Two are the "same" if they have + the "same" and + the "same" . + Two s are the "same" if they have + the "same" and + the "same" . + + + + Interior-method-level symbols (i.e. , , and s can also + be represented and restored in a different compilation. To resolve these the destination compilation's is enumerated to list all the symbols with the same and as the original symbol. The symbol with the same index in the destination tree as the + symbol in the original tree is returned. This allows these sorts of symbols to be resolved in a way that is + resilient to basic forms of edits. For example, adding whitespace edits, or adding removing symbols with + different names and types. However, it may not find a matching symbol in the face of other sorts of edits. + + + Symbol keys cannot be created for interior-method symbols that were created in a speculative semantic model. + + + Due to issues arising from errors and ambiguity, it's possible for a SymbolKey to resolve to + multiple symbols. For example, in the following type: + + class C + { + int M(); + bool M(); + } + + The SymbolKey for both 'M' methods will be the same. The SymbolKey will then resolve to both methods. + + + s are not guaranteed to work across different versions of Roslyn. They can be persisted + in their form and used across sessions with the same version of Roslyn. However, future + versions may change the encoded format and may no longer be able to previous keys. As + such, only persist if using for a cache that can be regenerated if necessary. + + + + + + Anonymous functions and anonymous-delegates (the special VB synthesized delegate types), + only come into existence when someone has explicitly written a lambda in their source + code. So to appropriately round-trip this symbol we store the location that the lambda + was at so that we can find the symbol again when we resolve the key. + + + + + Current format version. Any time we change anything about our format, we should + change this. This will help us detect and reject any cases where a person serializes + out a SymbolKey from a previous version of Roslyn and then attempt to use it in a + newer version where the encoding has changed. + + + + + Constructs a new using the result of a previous call to + from this same session. Instantiating with a string + from any other source is not supported. + + + + + Constructs a new representing the provided . + + + + + Returns an that determines if two s + represent the same effective symbol. + + Whether or not casing should be considered when comparing keys. + For example, with ignoreCase=true then X.SomeClass and X.Someclass would be + considered the same effective symbol + Whether or not the originating assembly of referenced + symbols should be compared when determining if two symbols are effectively the same. + For example, with ignoreAssemblyKeys=true then an X.SomeClass from assembly + A and X.SomeClass from assembly B will be considered the same + effective symbol. + + + + + Tries to resolve this in the given + to a matching symbol. + + + + + Returns this encoded as a string. This can be persisted + and used later with to then try to resolve back + to the corresponding in a future . + + This string form is not guaranteed to be reusable across all future versions of + Roslyn. As such it should only be used for caching data, with the knowledge that + the data may need to be recomputed if the cached data can no longer be used. + + + + + For a symbol like System.Collections.Generic.IEnumerable, this would produce "Generic", + "Collections", "System" + + + + + Reads an array of symbols out from the key. Note: the number of symbols returned + will either be the same as the original amount written, or default will be + returned. It will never be less or more. default will be returned if any + elements could not be resolved to the requested type + in the provided . + + Callers should the instance returned. No check is + necessary if default was returned before calling + + + + + Writes out the provided symbols to the key. The array provided must not + be default. + + + + + The result of . If the could be uniquely mapped to a + single then that will be returned in . Otherwise, if the key resolves + to multiple symbols (which can happen in error scenarios), then and will be returned. + + If no symbol can be found will be null and + will be empty. + + + + + Helpers used for public API argument validation. + + + + + Use to validate public API input for properties that are exposed as . + + + + + Use to validate public API input for properties that are exposed as and + whose items should be unique. + + + + + Helpers to create temporary streams backed by pooled memory + + + + + Returns the for the given operation. + This extension can be removed once https://github.com/dotnet/roslyn/issues/25057 is implemented. + + + + + Retursn true if the given operation is a regular compound assignment, + i.e. such as a += b, + or a special null coalescing compoud assignment, i.e. + such as a ??= b. + + + + + Walks down consecutive conversion operations until an operand is reached that isn't a conversion operation. + + The starting operation. + The inner non conversion operation or the starting operation if it wasn't a conversion operation. + + + + Provides information about the way a particular symbol is being used at a symbol reference node. + For namespaces and types, this corresponds to values from . + For methods, fields, properties, events, locals and parameters, this corresponds to values from . + + + + + Represents default value indicating no usage. + + + + + Represents a reference to a namespace or type on the left side of a dotted name (qualified name or member access). + For example, 'NS' in NS.Type x = new NS.Type(); or NS.Type.StaticMethod(); or + 'Type' in Type.NestedType x = new Type.NestedType(); or Type.StaticMethod(); + + + + + Represents a generic type argument reference. + For example, 'Type' in Generic{Type} x = ...; or class Derived : Base{Type} { } + + + + + Represents a type parameter constraint that is a type. + For example, 'Type' in class Derived{T} where T : Type { } + + + + + Represents a base type or interface reference in the base list of a named type. + For example, 'Base' in class Derived : Base { }. + + + + + Represents a reference to a type whose instance is being created. + For example, 'C' in var x = new C();, where 'C' is a named type. + + + + + Represents a reference to a namespace or type within a using or imports directive. + For example, using NS; or using static NS.Extensions or using Alias = MyType. + + + + + Represents a reference to a namespace name in a namespace declaration context. + For example, 'N1' or namespaces N1.N2 { }. + + + + + Represents default value indicating no usage. + + + + + Represents a value read. + For example, reading the value of a local/field/parameter. + + + + + Represents a value write. + For example, assigning a value to a local/field/parameter. + + + + + Represents a reference being taken for the symbol. + For example, passing an argument to an "in", "ref" or "out" parameter. + + + + + Represents a name-only reference that neither reads nor writes the underlying value. + For example, 'nameof(x)' or reference to a symbol 'x' in a documentation comment + does not read or write the underlying value stored in 'x'. + + + + + Represents a value read and/or write. + For example, an increment or compound assignment operation. + + + + + Represents a readable reference being taken to the value. + For example, passing an argument to an "in" or "ref readonly" parameter. + + + + + Represents a readable reference being taken to the value. + For example, passing an argument to an "out" parameter. + + + + + Represents a value read or write. + For example, passing an argument to a "ref" parameter. + + + + + this is RAII object to automatically release pooled object when its owning pool + + + + + Shared object pool for roslyn + + Use this shared pool if only concern is reducing object allocations. + if perf of an object pool itself is also a concern, use ObjectPool directly. + + For example, if you want to create a million of small objects within a second, + use the ObjectPool directly. it should have much less overhead than using this. + + + + + pool that uses default constructor with 100 elements pooled + + + + + pool that uses default constructor with 20 elements pooled + + + + + pool that uses string as key with StringComparer.OrdinalIgnoreCase as key comparer + + + + + pool that uses string as element with StringComparer.OrdinalIgnoreCase as element comparer + + + + + pool that uses string as element with StringComparer.Ordinal as element comparer + + + + + Used to reduce the # of temporary byte[]s created to satisfy serialization and + other I/O requests + + + + + Returns true if is local declaration statement + that can be moved forward to be closer to its first reference. + + + + + Moves closer to its first reference. Only + applicable if returned + true. If not, then the original document will be returned unchanged. + + + + + Returns an updated with all the + local declarations named '_' replaced with simple assignments to discard. + For example, + 1. int _ = M(); is replaced with _ = M(); + 2. int x = 1, _ = M(), y = 2; is replaced with following statements: + + int x = 1; + _ = M(); + int y = 2; + + This is normally done in context of a code transformation that generates new discard assignment(s), + such as _ = M();, and wants to prevent compiler errors where the containing method already + has a discard variable declaration, say var _ = M2(); at some line after the one + where the code transformation wants to generate new discard assignment(s), which would be a compiler error. + This method replaces such discard variable declarations with discard assignments. + + + + An error occurred while reading the specified configuration file: {0} + + + Symbol "{0}" is not from source. + + + Documentation comment id must start with E, F, M, N, P or T + + + Cycle detected in extensions + + + Destination type must be a {0}, but given one is {1}. + + + Destination type must be a {0} or a {1}, but given one is {2}. + + + Destination type must be a {0}, {1} or {2}, but given one is {3}. + + + Destination type must be a {0}, {1}, {2} or {3}, but given one is {4}. + + + Could not find location to generation symbol into. + + + No location provided to add statements to. + + + Destination location was not in source. + + + Destination location was from a different tree. + + + Node is of the wrong type. + + + Location must be null or from source. + + + Duplicate source file '{0}' in project '{1}' + + + Removing projects is not supported. + + + Adding projects is not supported. + + + Workspace error + + + Error reading content of source file '{0}' -- '{1}'. + + + Workspace is not empty. + + + '{0}' is not part of the workspace. + + + '{0}' is already part of the workspace. + + + '{0}' is not referenced. + + + '{0}' is already referenced. + + + Adding project reference from '{0}' to '{1}' will cause a circular reference. + + + Metadata is not referenced. + + + Metadata is already referenced. + + + {0} is not present. + + + {0} is already present. + + + The specified document is not a version of this document. + + + The language '{0}' is not supported. + + + The solution already contains the specified project. + + + The solution does not contain the specified project. + + + The project already references the target project. + + + The project already contains the specified reference. + + + A project may not reference itself. + + + The solution already contains the specified document. + + + The solution already contains the specified reference. + + + Temporary storage cannot be written more than once. + + + '{0}' is not open. + + + A language name cannot be specified for this option. + + + A language name must be specified for this option. + + + File was externally modified: {0}. + + + Unrecognized language name. + + + Can't resolve metadata reference: '{0}'. + + + Can't resolve analyzer reference: '{0}'. + + + Invalid project block, expected "=" after Project. + + + Invalid project block, expected "," after project name. + + + Invalid project block, expected "," after project path. + + + Expected {0}. + + + "{0}" must be a non-null and non-empty string. + + + Expected header: "{0}". + + + Expected end-of-file. + + + Expected {0} line. + + + This submission already references another submission project. + + + Only submission project can reference submission projects. + + + {0} still contains open documents. + + + {0} is still open. + + + Arrays with more than one dimension cannot be serialized. + + + Value too large to be represented as a 30 bit unsigned integer. + + + Specified path must be absolute. + + + Name can be simplified. + + + Unknown identifier. + + + Cannot generate code for unsupported operator '{0}' + + + Invalid number of parameters for binary operator. + + + Invalid number of parameters for unary operator. + + + Cannot open project '{0}' because the file extension '{1}' is not associated with a language. + + + Cannot open project '{0}' because the language '{1}' is not supported. + + + Invalid project file path: '{0}' + + + Invalid solution file path: '{0}' + + + Project file not found: '{0}' + + + Solution file not found: '{0}' + + + Unmerged change from project '{0}' + + + Added: + + + After: + + + Before: + + + Removed: + + + Invalid CodePage value: {0} + + + Adding additional documents is not supported. + + + Adding analyzer config documents is not supported. + + + Adding analyzer references is not supported. + + + Adding documents is not supported. + + + Adding metadata references is not supported. + + + Adding project references is not supported. + + + Changing additional documents is not supported. + + + Changing analyzer config documents is not supported. + + + Changing documents is not supported. + + + Changing project properties is not supported. + + + Removing additional documents is not supported. + + + Removing analyzer config documents is not supported. + + + Removing analyzer references is not supported. + + + Removing documents is not supported. + + + Removing metadata references is not supported. + + + Removing project references is not supported. + + + Service of type '{0}' is required to accomplish the task but is not available from the workspace. + + + At least one diagnostic must be supplied. + + + Diagnostic must have span '{0}' + + + Cannot deserialize type '{0}'. + + + Cannot serialize type '{0}'. + + + The type '{0}' is not understood by the serialization binder. + + + Label for node '{0}' is invalid, it must be within [0, {1}). + + + Matching nodes '{0}' and '{1}' must have the same label. + + + Node '{0}' must be contained in the new tree. + + + Node '{0}' must be contained in the old tree. + + + The member '{0}' is not declared within the declaration of the symbol. + + + The position is not within the symbol's declaration + + + The symbol '{0}' cannot be located within the current solution. + + + Changing compilation options is not supported. + + + Changing parse options is not supported. + + + The node is not part of the tree. + + + This workspace does not support opening and closing documents. + + + Exceptions: + + + '{0}' returned an uninitialized ImmutableArray + + + Failure + + + Warning + + + Options did not come from specified Solution + + + Enable + + + Enable and ignore future errors + + + '{0}' encountered an error and has been disabled. + + + Show Stack Trace + + + Stream is too long. + + + Deserialization reader for '{0}' read incorrect number of values. + + + Async Method + + + Error + + + None + + + Suggestion + + + File '{0}' size of {1} exceeds maximum allowed size of {2} + + + Changing document properties is not supported + + + Variables captured: + + + Refactoring Only + + + Remove the line below if you want to inherit .editorconfig settings from higher directories + + + Core EditorConfig Options + + + C# files + + + .NET Coding Conventions + + + Indentation and spacing + + + New line preferences + + + Visual Basic files + + + Changing document '{0}' is not supported. + + + DateTimeKind must be Utc + + + Adding imports will bring an extension method into scope with the same name as '{0}' + + + Document does not support syntax trees + + + {0} is in a different project. + + + Project does not contain specified reference + + + Solution does not contain specified reference + + + Unknown + + + Cannot apply action that is not in '{0}' + + + Symbol's project could not be found in the provided solution + + + The contents of a SourceGeneratedDocument may not be changed. + + + Rename '{0}' to '{1}' + + + Sync namespace to folder structure + + + CodeAction '{0}' did not produce a changed solution + + + Predefined conversion from {0} to {1}. + + + Absolute path expected. + + + An element with the same key but a different value already exists. + + + Organize usings + + + this. and Me. preferences + + + Language keywords vs BCL types preferences + + + Parentheses preferences + + + Modifier preferences + + + Expression-level preferences + + + Field preferences + + + Parameter preferences + + + Suppression preferences + + + Pascal Case + + + Abstract Method + + + Begins with I + + + Class + + + Delegate + + + Enum + + + Event + + + Interface + + + Non-Field Members + + + Private Method + + + Private or Internal Field + + + Private or Internal Static Field + + + Property + + + Public or Protected Field + + + Static Field + + + Static Method + + + Struct + + + Types + + + Method + + + Missing prefix: '{0}' + + + Missing suffix: '{0}' + + + Prefix '{0}' does not match expected prefix '{1}' + + + Prefix '{0}' is not expected + + + These non-leading words must begin with an upper case letter: {0} + + + These non-leading words must begin with a lowercase letter: {0} + + + These words cannot contain lower case characters: {0} + + + These words cannot contain upper case characters: {0} + + + These words must begin with upper case characters: {0} + + + The first word, '{0}', must begin with an upper case character + + + The first word, '{0}', must begin with a lower case character + + + Cast is redundant. + + + Naming styles + + + Naming rules + + + Symbol specifications + + + Specified sequence has duplicate items + + + Segment size must be power of 2 greater than 1 + + + New line preferences + + + Supplied diagnostic cannot be null. + + + Fix all '{0}' + + + Fix all '{0}' in '{1}' + + + Fix all '{0}' in Solution + + + Compilation is required to accomplish the task but is not supported by project {0}. + + + Syntax tree is required to accomplish the task but is not supported by document {0}. + + + Project of ID {0} is required to accomplish the task but is not available from the solution + + + The solution does not contain the specified document. + + + Warning: Declaration changes scope and may change meaning. + + + + + + + + + + A queue where items can be added to to be processed in batches after some delay has passed. + When processing happens, all the items added since the last processing point will be passed + along to be worked on. Rounds of processing happen serially, only starting up after a + previous round has completed. + + + + + Delay we wait after finishing the processing of one batch and starting up on then. + + + + + Equality comparer uses to dedupe items if present. + + + + + Callback to actually perform the processing of the next batch of work. + + + + + Lock we will use to ensure the remainder of these fields can be accessed in a threadsafe + manner. When work is added we'll place the data into . + We'll then kick of a task to process this in the future if we don't already have an + existing task in flight for that. + + + + + Data added that we want to process in our next update task. + + + + + Used if is present to ensure only unique items are added to . + + + + + Task kicked off to do the next batch of processing of . These + tasks form a chain so that the next task only processes when the previous one completes. + + + + + Whether or not there is an existing task in flight that will process the current batch + of . If there is an existing in flight task, we don't need to + kick off a new one if we receive more work before it runs. + + + + + Produces a series of objects such that requesting a new token + causes the previously issued token to be cancelled. + + + Consuming code is responsible for managing overlapping asynchronous operations. + This class has a lock-free implementation to minimise latency and contention. + + + + + Initializes a new instance of . + + An optional cancellation token that, when cancelled, cancels the last + issued token and causes any subsequent tokens to be issued in a cancelled state. + + + + Determines if the cancellation series has an active token which has not been cancelled. + + + + + Creates the next in the series, ensuring the last issued + token (if any) is cancelled first. + + An optional cancellation token that, when cancelled, cancels the + returned token. + + A cancellation token that will be cancelled when either: + + is called again + The token passed to this method (if any) is cancelled + The token passed to the constructor (if any) is cancelled + is called + + + This object has been disposed. + + + + Creates a for a weakly-held reference that has since been collected. + + The hash code of the collected value. + A weak which was already collected. + + + + Implements a queue of asynchronously executed tasks. + + + + + Enqueue specified and notify of its start and completion. + + The that executes the operation. + + + + + + + + + + + + + Enqueue specified . + Assumes has already been notified of its start and will be notified when it completes. + + The that executes the operation. + + + + + + + + + + + + + A simple collection of values held as weak references. Objects in the set are compared by reference equality. + + The type of object stored in the set. + + + + NOTE!!! adding duplicates will result in exceptions. + Being concurrent only allows accessing the dictionary without taking locks. + Duplicate keys are still not allowed in the hashtable. + If unsure about adding unique items use APIs such as TryAdd, GetOrAdd, etc... + + + + + A custom awaiter that supports for + . + + + + + + + + + + + Generally is a sufficient method for enforcing DEBUG + only invariants in our code. When it triggers that provides a nice stack trace for + investigation. Generally that is enough. + + There are cases for which a stack is not enough and we need a full heap dump to + investigate the failure. This method takes care of that. The behavior is that when running + in our CI environment if the assert triggers we will rudely crash the process and + produce a heap dump for investigation. + + + + + This method is necessary to avoid an ambiguity between and . + + + + + This method is necessary to avoid an ambiguity between and . + + + + + Maps an immutable array through a function that returns ValueTask, returning the new ImmutableArray. + + + + + Maps an immutable array through a function that returns ValueTask, returning the new ImmutableArray. + + + + + Returns the only element of specified sequence if it has exactly one, and default(TSource) otherwise. + Unlike doesn't throw if there is more than one element in the sequence. + + + + + Cached versions of commonly used delegates. + + + + + + Cached versions of commonly used delegates. + + + + + + Creates an with information about an unexpected value. + + The unexpected value. + The , which should be thrown by the caller. + + + + Compares objects based upon their reference identity. + + + + + + + + + + + Checks if the given name is a sequence of valid CLR names separated by a dot. + + + + + Remove one set of leading and trailing double quote characters, if both are present. + + + + + Implements and static members that are only available in .NET 5. + + + + + Explicitly indicates result is void + + + + + Implements ConfigureAwait(bool) for . The resulting behavior in asynchronous code + is the same as one would expect for . + + The awaitable provided by . + + An object used to await this yield. + + + + This is how VB Anonymous Types combine hash values for fields. + + + + + This is how VB Anonymous Types combine hash values for fields. + PERF: Do not use with enum types because that involves multiple + unnecessary boxing operations. Unfortunately, we can't constrain + T to "non-enum", so we'll use a more restrictive constraint. + + + + + The offset bias value used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + The generative factor used in the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Compute the FNV-1a hash of a sequence of bytes and determines if the byte + sequence is valid ASCII and hence the hash code matches a char sequence + encoding the same text. + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes that are likely to be ASCII text. + True if the sequence contains only characters in the ASCII range. + The FNV-1a hash of + + + + Compute the FNV-1a hash of a sequence of bytes + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The sequence of bytes + The FNV-1a hash of + + + + Compute the hashcode of a sub-string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + Note: FNV-1a was developed and tuned for 8-bit sequences. We're using it here + for 16-bit Unicode chars on the understanding that the majority of chars will + fit into 8-bits and, therefore, the algorithm will retain its desirable traits + for generating hash codes. + + + + + Compute the hashcode of a sub-string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + Note: FNV-1a was developed and tuned for 8-bit sequences. We're using it here + for 16-bit Unicode chars on the understanding that the majority of chars will + fit into 8-bits and, therefore, the algorithm will retain its desirable traits + for generating hash codes. + + The input string + The start index of the first character to hash + The number of characters, beginning with to hash + The FNV-1a hash code of the substring beginning at and ending after characters. + + + + Compute the hashcode of a sub-string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The start index of the first character to hash + The FNV-1a hash code of the substring beginning at and ending at the end of the string. + + + + Compute the hashcode of a string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The FNV-1a hash code of + + + + Compute the hashcode of a string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string + The FNV-1a hash code of + + + + Compute the hashcode of a sub string using FNV-1a + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The input string as a char array + The start index of the first character to hash + The number of characters, beginning with to hash + The FNV-1a hash code of the substring beginning at and ending after characters. + + + + Compute the hashcode of a single character using the FNV-1a algorithm + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + Note: In general, this isn't any more useful than "char.GetHashCode". However, + it may be needed if you need to generate the same hash code as a string or + substring with just a single character. + + The character to hash + The FNV-1a hash code of the character. + + + + Combine a string with an existing FNV-1a hash code + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The accumulated hash code + The string to combine + The result of combining with using the FNV-1a algorithm + + + + Combine a char with an existing FNV-1a hash code + See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function + + The accumulated hash code + The new character to combine + The result of combining with using the FNV-1a algorithm + + + + Objects that implement this interface know how to write their contents to an , + so they can be reconstructed later by an . + + + + + Returns 'true' when the same instance could be used more than once. + Instances that return 'false' should not be tracked for the purpose + of de-duplication while serializing/deserializing. + + + + + is a registry that maps between arbitrary s and + the 'reader' function used to deserialize serialized instances of those types. Registration + must happen ahead of time using the method. + + + + + Lock for all data in this type. + + + + + Last created snapshot of our data. We hand this out instead of exposing our raw + data so that and do not need to + take any locks while processing. + + + + + Map from a to the corresponding index in and + . will write out the index into + the stream, and will use that index to get the reader used + for deserialization. + + + + + Gets an immutable copy of the state of this binder. This copy does not need to be + locked while it is used. + + + + + An that deserializes objects from a byte stream. + + + + + We start the version at something reasonably random. That way an older file, with + some random start-bytes, has little chance of matching our version. When incrementing + this version, just change VersionByte2. + + + + + Map of reference id's to deserialized objects. + + + + + Copy of the global binder data that maps from Types to the appropriate reading-function + for that type. Types register functions directly with , but + that means that is both static and locked. This gives us + local copy we can work with without needing to worry about anyone else mutating. + + + + + Creates a new instance of a . + + The stream to read objects from. + True to leave the open after the is disposed. + + + + + Attempts to create a from the provided . + If the does not start with a valid header, then will + be returned. + + + + + Creates an from the provided . + Unlike , it requires the version + of the data in the stream to exactly match the current format version. + Should only be used to read data written by the same version of Roslyn. + + + + + A reference-id to object map, that can share base data efficiently. + + + + + An that serializes objects to a byte stream. + + + + + Map of serialized object's reference ids. The object-reference-map uses reference equality + for performance. While the string-reference-map uses value-equality for greater cache hits + and reuse. + + These are not readonly because they're structs and we mutate them. + + When we write out objects/strings we give each successive, unique, item a monotonically + increasing integral ID starting at 0. I.e. the first object gets ID-0, the next gets + ID-1 and so on and so forth. We do *not* include these IDs with the object when it is + written out. We only include the ID if we hit the object *again* while writing. + + During reading, the reader knows to give each object it reads the same monotonically + increasing integral value. i.e. the first object it reads is put into an array at position + 0, the next at position 1, and so on. Then, when the reader reads in an object-reference + it can just retrieved it directly from that array. + + In other words, writing and reading take advantage of the fact that they know they will + write and read objects in the exact same order. So they only need the IDs for references + and not the objects themselves because the ID is inferred from the order the object is + written or read in. + + + + + Copy of the global binder data that maps from Types to the appropriate reading-function + for that type. Types register functions directly with , but + that means that is both static and locked. This gives us + local copy we can work with without needing to worry about anyone else mutating. + + + + + Creates a new instance of a . + + The stream to write to. + True to leave the open after the is disposed. + Cancellation token. + + + + Used so we can easily grab the low/high 64bits of a guid for serialization. + + + + + Write an array of bytes. The array data is provided as a + ReadOnlySpan<>, and deserialized to a byte array. + + The array data. + + + + An object reference to reference-id map, that can share base data efficiently. + + + + + Indexed by EncodingKind. + + + + + byte marker mask for encoding compressed uint + + + + + byte marker bits for uint encoded in 1 byte. + + + + + byte marker bits for uint encoded in 2 bytes. + + + + + byte marker bits for uint encoded in 4 bytes. + + + + + The null value + + + + + A type + + + + + An object with member values encoded as variants + + + + + An object reference with the id encoded as 1 byte. + + + + + An object reference with the id encode as 2 bytes. + + + + + An object reference with the id encoded as 4 bytes. + + + + + A string encoded as UTF8 (using BinaryWriter.Write(string)) + + + + + A string encoded as UTF16 (as array of UInt16 values) + + + + + A reference to a string with the id encoded as 1 byte. + + + + + A reference to a string with the id encoded as 2 bytes. + + + + + A reference to a string with the id encoded as 4 bytes. + + + + + The boolean value true. + + + + + The boolean value char. + + + + + A character value encoded as 2 bytes. + + + + + An Int8 value encoded as 1 byte. + + + + + An Int16 value encoded as 2 bytes. + + + + + An Int32 value encoded as 4 bytes. + + + + + An Int32 value encoded as 1 byte. + + + + + An Int32 value encoded as 2 bytes. + + + + + The Int32 value 0 + + + + + The Int32 value 1 + + + + + The Int32 value 2 + + + + + The Int32 value 3 + + + + + The Int32 value 4 + + + + + The Int32 value 5 + + + + + The Int32 value 6 + + + + + The Int32 value 7 + + + + + The Int32 value 8 + + + + + The Int32 value 9 + + + + + The Int32 value 10 + + + + + An Int64 value encoded as 8 bytes + + + + + A UInt8 value encoded as 1 byte. + + + + + A UIn16 value encoded as 2 bytes. + + + + + A UInt32 value encoded as 4 bytes. + + + + + A UInt32 value encoded as 1 byte. + + + + + A UInt32 value encoded as 2 bytes. + + + + + The UInt32 value 0 + + + + + The UInt32 value 1 + + + + + The UInt32 value 2 + + + + + The UInt32 value 3 + + + + + The UInt32 value 4 + + + + + The UInt32 value 5 + + + + + The UInt32 value 6 + + + + + The UInt32 value 7 + + + + + The UInt32 value 8 + + + + + The UInt32 value 9 + + + + + The UInt32 value 10 + + + + + A UInt64 value encoded as 8 bytes. + + + + + A float value encoded as 4 bytes. + + + + + A double value encoded as 8 bytes. + + + + + A decimal value encoded as 12 bytes. + + + + + A DateTime value + + + + + An array with length encoded as compressed uint + + + + + An array with zero elements + + + + + An array with one element + + + + + An array with 2 elements + + + + + An array with 3 elements + + + + + The boolean type + + + + + The string type + + + + + Encoding serialized as . + + + + + Naive thread pool focused on reducing the latency to execution of chunky work items as much as possible. + If a thread is ready to process a work item the moment a work item is queued, it's used, otherwise + a new thread is created. This is meant as a stop-gap measure for workloads that would otherwise be + creating a new thread for every work item. + + + This class is derived from dotnet/machinelearning. + + + + How long should threads wait around for additional work items before retiring themselves. + + + The queue of work items. Also used as a lock to protect all relevant state. + + + The number of threads currently waiting in tryDequeue for work to arrive. + + + + Queues a delegate to be executed immediately on another thread, + and returns a that represents its eventual completion. The task will + always end in the state; if the delegate throws + an exception, it'll be allowed to propagate on the thread, crashing the process. + + + + + Queues a delegate and associated state to be executed immediately on + another thread, and returns a that represents its eventual completion. + + + + + Search a sorted integer array for the target value in O(log N) time. + + The array of integers which must be sorted in ascending order. + The target value. + An index in the array pointing to the position where should be + inserted in order to maintain the sorted order. All values to the right of this position will be + strictly greater than . Note that this may return a position off the end + of the array if all elements are less than or equal to . + + + + Parse the value provided to an MSBuild Feature option into a list of entries. This will + leave name=value in their raw form. + + + + + A concurrent, simplified HashSet. + + + + + The default concurrency level is 2. That means the collection can cope with up to two + threads making simultaneous modifications without blocking. + Note ConcurrentDictionary's default concurrency level is dynamic, scaling according to + the number of processors. + + + + + Taken from ConcurrentDictionary.DEFAULT_CAPACITY + + + + + The backing dictionary. The values are never used; just the keys. + + + + + Construct a concurrent set with the default concurrency level. + + + + + Construct a concurrent set using the specified equality comparer. + + The equality comparer for values in the set. + + + + Obtain the number of elements in the set. + + The number of elements in the set. + + + + Determine whether the set is empty. + true if the set is empty; otherwise, false. + + + + Determine whether the given value is in the set. + + The value to test. + true if the set contains the specified value; otherwise, false. + + + + Attempts to add a value to the set. + + The value to add. + true if the value was added to the set. If the value already exists, this method returns false. + + + + Attempts to remove a value from the set. + + The value to remove. + true if the value was removed successfully; otherwise false. + + + + Clear the set + + + + + Obtain an enumerator that iterates through the elements in the set. + + An enumerator for the set. + + + + a simple Lisp-like immutable list. Good to use when lists are always accessed from the head. + + + + + Names of well-known XML attributes and elements. + + + + + Get maximum char count needed to decode the entire stream. + + Stream is so big that max char count can't fit in . + + + + Convert a boxed primitive (generally of the backing type of an enum) into a ulong. + + + + + + + Implements a few file name utilities that are needed by the compiler. + In general the compiler is not supposed to understand the format of the paths. + In rare cases it needs to check if a string is a valid file name or change the extension + (embedded resources, netmodules, output name). + The APIs are intentionally limited to cover just these rare cases. Do not add more APIs. + + + + + Returns true if the string represents an unqualified file name. + The name may contain any characters but directory and volume separators. + + Path. + + True if is a simple file name, false if it is null or includes a directory specification. + + + + + Returns the offset in where the dot that starts an extension is, or -1 if the path doesn't have an extension. + + + Returns 0 for path ".goo". + Returns -1 for path "goo.". + + + + + Returns an extension of the specified path string. + + + The same functionality as but doesn't throw an exception + if there are invalid characters in the path. + + + + + Removes extension from path. + + + Returns "goo" for path "goo.". + Returns "goo.." for path "goo...". + + + + + Returns path with the extension changed to . + + + Equivalent of + + If is null, returns null. + If path does not end with an extension, the new extension is appended to the path. + If extension is null, equivalent to . + + + + + Returns the position in given path where the file name starts. + + -1 if path is null. + + + + Get file name from path. + + Unlike doesn't check for invalid path characters. + + + + A set that returns the inserted values in insertion order. + The mutation operations are not thread-safe. + + + + + Null or empty. + + + + + "file" + + + + + ".\file" + + + + + "..\file" + + + + + "\dir\file" + + + + + "C:dir\file" + + + + + "C:\file" or "\\machine" (UNC). + + + + + Represents a single item or many items (including none). + + + Used when a collection usually contains a single item but sometimes might contain multiple. + + + + + This class provides simple properties for determining whether the current platform is Windows or Unix-based. + We intentionally do not use System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(...) because + it incorrectly reports 'true' for 'Windows' in desktop builds running on Unix-based platforms via Mono. + + + + + Are we running on .NET 5 or later using the Mono runtime? + Will also return true when running on Mono itself; if necessary + we can use IsRunningOnMono to distinguish. + + + + + Attempts to read all of the requested bytes from the stream into the buffer + + + The number of bytes read. Less than will + only be returned if the end of stream is reached before all bytes can be read. + + + Unlike it is not guaranteed that + the stream position or the output buffer will be unchanged if an exception is + returned. + + + + + Reads all bytes from the current position of the given stream to its end. + + + + + This is basically a lossy cache of strings that is searchable by + strings, string sub ranges, character array ranges or string-builder. + + + + + Merges the new change ranges into the old change ranges, adjusting the new ranges to be with respect to the original text + (with neither old or new changes applied) instead of with respect to the original text after "old changes" are applied. + + This may require splitting, concatenation, etc. of individual change ranges. + + + Both `oldChanges` and `newChanges` must contain non-overlapping spans in ascending order. + + + + + Represents a new change being processed by . + Such a new change must be adjusted before being added to the result list. + + + A value of this type may represent the intermediate state of merging of an old change into an unadjusted new change, + resulting in a temporary unadjusted new change whose is negative (not valid) until it is adjusted. + This tends to happen when we need to merge an old change deletion into a new change near the beginning of the text. (see TextChangeTests.Fuzz_4) + + + + + Resolves relative path and returns absolute path. + The method depends only on values of its parameters and their implementation (for fileExists). + It doesn't itself depend on the state of the current process (namely on the current drive directories) or + the state of file system. + + + Path to resolve. + + + Base file path to resolve CWD-relative paths against. Null if not available. + + + Base directory to resolve CWD-relative paths against if isn't specified. + Must be absolute path. + Null if not available. + + + Sequence of paths used to search for unqualified relative paths. + + + Method that tests existence of a file. + + + The resolved path or null if the path can't be resolved or does not exist. + + + + + Normalizes an absolute path. + + Path to normalize. + + Normalized path. + + + + Used to create a file given a path specified by the user. + paramName - Provided by the Public surface APIs to have a clearer message. Internal API just rethrow the exception + + + + + + + + + + + True if the character is the platform directory separator character or the alternate directory separator. + + + + + True if the character is any recognized directory separator character. + + + + + Removes trailing directory separator characters + + + This will trim the root directory separator: + "C:\" maps to "C:", and "/" maps to "" + + + + + Ensures a trailing directory separator character + + + + + Get directory name from path. + + + Unlike it doesn't check for invalid path characters + + Prefix of path that represents a directory + + + + Gets the root part of the path. + + + + + Gets the specific kind of relative or absolute path. + + + + + True if the path is an absolute path (rooted to drive or network share) + + + + + Returns true if given path is absolute and starts with a drive specification ("C:\"). + + + + + Combines an absolute path with a relative. + + Absolute root path. + Relative path. + + An absolute combined path, or null if is + absolute (e.g. "C:\abc", "\\machine\share\abc"), + relative to the current root (e.g. "\abc"), + or relative to a drive directory (e.g. "C:abc\def"). + + + + + + Combine two paths, the first of which may be absolute. + + First path: absolute, relative, or null. + Second path: relative and non-null. + null, if is null; a combined path, otherwise. + + + + + Combines paths with the same semantics as + but does not throw on null paths or paths with invalid characters. + + First path: absolute, relative, or null. + Second path: absolute, relative, or null. + + The combined paths. If contains an absolute path, returns . + + + Relative and absolute paths treated the same as . + + + + + Determines whether an assembly reference is considered an assembly file path or an assembly name. + used, for example, on values of /r and #r. + + + + + Determines if "path" contains 'component' within itself. + i.e. asking if the path "c:\goo\bar\baz" has component "bar" would return 'true'. + On the other hand, if you had "c:\goo\bar1\baz" then it would not have "bar" as a + component. + + A path contains a component if any file name or directory name in the path + matches 'component'. As such, if you had something like "\\goo" then that would + not have "goo" as a component. That's because here "goo" is the server name portion + of the UNC path, and not an actual directory or file name. + + + + + Gets a path relative to a directory. + + + + + True if the child path is a child of the parent path. + + + + + True if the two paths are the same. + + + + + True if the two paths are the same. (but only up to the specified length) + + + + + Unfortunately, we cannot depend on Path.GetInvalidPathChars() or Path.GetInvalidFileNameChars() + From MSDN: The array returned from this method is not guaranteed to contain the complete set of characters + that are invalid in file and directory names. The full set of invalid characters can vary by file system. + https://msdn.microsoft.com/en-us/library/system.io.path.getinvalidfilenamechars.aspx + + Additionally, Path.GetInvalidPathChars() doesn't include "?" or "*" which are invalid characters, + and Path.GetInvalidFileNameChars() includes ":" and "\" which are valid characters. + + The more accurate way is to let the framework parse the path and throw on any errors. + + + + + If the current environment uses the '\' directory separator, replaces all uses of '\' + in the given string with '/'. Otherwise, returns the string. + + + This method is equivalent to Microsoft.CodeAnalysis.BuildTasks.GenerateMSBuildEditorConfig.NormalizeWithForwardSlash + Both methods should be kept in sync. + + + + + Takes an absolute path and attempts to expand any '..' or '.' into their equivalent representation. + + An equivalent path that does not contain any '..' or '.' path parts, or the original path. + + This method handles unix and windows drive rooted absolute paths only (i.e /a/b or x:\a\b). Passing any other kind of path + including relative, drive relative, unc, or windows device paths will simply return the original input. + + + + + Find a instance by first probing the contract name and then the name as it + would exist in mscorlib. This helps satisfy both the CoreCLR and Desktop scenarios. + + + + + Defines a set of helper methods to classify Unicode characters. + + + + + Returns true if the Unicode character can be a part of an identifier. + + The Unicode character. + + + + Check that the name is a valid Unicode identifier. + + + + + Returns true if the Unicode character is a formatting character (Unicode class Cf). + + The Unicode character. + + + + Returns true if the Unicode character is a formatting character (Unicode class Cf). + + The Unicode character. + + + + An AnnotationTable helps you attach your own annotation types/instances to syntax. + + It maintains a map between your instances and actual SyntaxAnnotation's used to annotate the nodes + and offers an API that matches the true annotation API on SyntaxNode. + + The table controls the lifetime of when you can find and retrieve your annotations. You won't be able to + find your annotations via HasAnnotations/GetAnnotations unless you use the same annotation table for these operations + that you used for the WithAdditionalAnnotations operation. + + Your custom annotations are not serialized with the syntax tree, so they won't move across boundaries unless the + same AnnotationTable is available on both ends. + + also, note that this table is not thread safe. + + + + + Represents a value that can be retrieved synchronously or asynchronously by many clients. + The value will be computed on-demand the moment the first client asks for it. While being + computed, more clients can request the value. As long as there are outstanding clients the + underlying computation will proceed. If all outstanding clients cancel their request then + the underlying value computation will be cancelled as well. + + Creators of an can specify whether the result of the computation is + cached for future requests or not. Choosing to not cache means the computation functions are kept + alive, whereas caching means the value (but not functions) are kept alive once complete. + + + + + The underlying function that starts an asynchronous computation of the resulting value. + Null'ed out once we've computed the result and we've been asked to cache it. Otherwise, + it is kept around in case the value needs to be computed again. + + + + + The underlying function that starts a synchronous computation of the resulting value. + Null'ed out once we've computed the result and we've been asked to cache it, or if we + didn't get any synchronous function given to us in the first place. + + + + + Whether or not we should keep the value around once we've computed it. + + + + + The Task that holds the cached result. + + + + + Mutex used to protect reading and writing to all mutable objects and fields. Traces + indicate that there's negligible contention on this lock, hence we can save some memory + by using a single lock for all AsyncLazy instances. Only trivial and non-reentrant work + should be done while holding the lock. + + + + + The hash set of all currently outstanding asynchronous requests. Null if there are no requests, + and will never be empty. + + + + + If an asynchronous request is active, the CancellationTokenSource that allows for + cancelling the underlying computation. + + + + + Whether a computation is active or queued on any thread, whether synchronous or + asynchronous. + + + + + Creates an AsyncLazy that always returns the value, analogous to . + + + + + Creates an AsyncLazy that supports both asynchronous computation and inline synchronous + computation. + + A function called to start the asynchronous + computation. This function should be cheap and non-blocking. + A function to do the work synchronously, which + is allowed to block. This function should not be implemented by a simple Wait on the + asynchronous value. If that's all you are doing, just don't pass a synchronous function + in the first place. + Whether the result should be cached once the computation is + complete. + + + + Takes the lock for this object and if acquired validates the invariants of this class. + + + + + This inherits from to avoid allocating two objects when we can just use one. + The public surface area of should probably be avoided in favor of the public + methods on this class for correct behavior. + + + + + The associated with this request. This field will be initialized before + any cancellation is observed from the token. + + + + + NOTE: Only use if you truly need a BK-tree. If you just want to compare words, use + the 'SpellChecker' type instead. + + An implementation of a Burkhard-Keller tree. Introduced in: + + 'Some approaches to best-match file searching.' + Communications of the ACM CACM + Volume 16 Issue 4, April 1973 + Pages 230-236 + http://dl.acm.org/citation.cfm?doid=362003.362025 + + + + Where the child node can be found in . + + + + The string this node corresponds to. Specifically, this span is the range of + for that string. + + + + How many child edges this node has. + + + Where the first edge can be found in . The edges + are in the range _edges[FirstEdgeIndex, FirstEdgeIndex + EdgeCount) + + + + + Throws a non-accessible exception if the provided value is null. This method executes in + all builds + + + + + Throws a non-accessible exception if the provided value is null. This method executes in + all builds + + + + + Throws a non-accessible exception if the provided value is null. This method executes in + all builds + + + + + Throws a non-accessible exception if the provided value is false. This method executes + in all builds + + + + + Throws a non-accessible exception if the provided value is false. This method executes + in all builds + + + + + Throws a non-accessible exception if the provided value is true. This method executes in + all builds. + + + + + Throws a non-accessible exception if the provided value is true. This method executes in + all builds. + + + + + NOTE: Only use if you truly need an edit distance. If you just want to compare words, use + the 'SpellChecker' type instead. + + Implementation of the Damerau-Levenshtein edit distance algorithm from: + An Extension of the String-to-String Correction Problem: + Published in Journal of the ACM (JACM) + Volume 22 Issue 2, April 1975. + + Important, unlike many edit distance algorithms out there, this one implements a true metric + that satisfies the triangle inequality. (Unlike the "Optimal String Alignment" or "Restricted + string edit distance" solutions which do not). This means this edit distance can be used in + other domains that require the triangle inequality (like BKTrees). + + Specifically, this implementation satisfies the following inequality: D(x, y) + D(y, z) >= D(x, z) + (where D is the edit distance). + + + + + Private implementation we can delegate to for sets. + This must be a different name as overloads are not resolved based on constraints + and would conflict with + + + + + A covariant interface form of that lets you re-cast an + to a more base type. This can include types that do not implement if you want to prevent a caller from accidentally + disposing directly. + + + + + + Gets the target object. + + + This call is not valid after is called. If this property or the target + object is used concurrently with a call to , it is possible for the code to be + using a disposed object. After the current instance is disposed, this property throws + . However, the exact time when this property starts throwing after + is called is unspecified; code is expected to not use this property or the object + it returns after any code invokes . + + The target object. + + + + Increments the reference count for the disposable object, and returns a new disposable reference to it. + + + The returned object is an independent reference to the same underlying object. Disposing of the + returned value multiple times will only cause the reference count to be decreased once. + + A new pointing to the same underlying object, if it + has not yet been disposed; otherwise, if this reference to the underlying object + has already been disposed. + + + + Ensure that the given target value is initialized (not null) in a thread-safe manner. + + The type of the target value. Must be a reference type. + The target to initialize. + A factory delegate to create a new instance of the target value. Note that this delegate may be called + more than once by multiple threads, but only one of those values will successfully be written to the target. + The target value. + + + + Ensure that the given target value is initialized (not null) in a thread-safe manner. + + The type of the target value. Must be a reference type. + The target to initialize. + The type of the argument passed to the value factory. + A factory delegate to create a new instance of the target value. Note that this delegate may be called + more than once by multiple threads, but only one of those values will successfully be written to the target. + An argument passed to the value factory. + The target value. + + + + Ensure that the given target value is initialized in a thread-safe manner. This overload supports the + initialization of value types, and reference type fields where is considered an + initialized value. + + The type of the target value. + A target value box to initialize. + A factory delegate to create a new instance of the target value. Note that this delegate may be called + more than once by multiple threads, but only one of those values will successfully be written to the target. + The target value. + + + + Ensure that the given target value is initialized in a thread-safe manner. This overload supports the + initialization of value types, and reference type fields where is considered an + initialized value. + + The type of the target value. + A target value box to initialize. + The type of the argument passed to the value factory. + A factory delegate to create a new instance of the target value. Note that this delegate may be called + more than once by multiple threads, but only one of those values will successfully be written to the target. + An argument passed to the value factory. + The target value. + + + + A lightweight mutual exclusion object which supports waiting with cancellation and prevents + recursion (i.e. you may not call Wait if you already hold the lock) + + + + The provides a lightweight mutual exclusion class that doesn't + use Windows kernel synchronization primitives. + + + The implementation is distilled from the workings of + The basic idea is that we use a regular sync object (Monitor.Enter/Exit) to guard the setting + of an 'owning thread' field. If, during the Wait, we find the lock is held by someone else + then we register a cancellation callback and enter a "Monitor.Wait" loop. If the cancellation + callback fires, then it "pulses" all the waiters to wake them up and check for cancellation. + Waiters are also "pulsed" when leaving the lock. + + + All public members of are thread-safe and may be used concurrently + from multiple threads. + + + + + + A synchronization object to protect access to the field and to be pulsed + when is called and during cancellation. + + + + + The of the thread that holds the lock. Zero if no thread is holding + the lock. + + + + + Constructor. + + If false (the default), then the class + allocates an internal object to be used as a sync lock. + If true, then the sync lock object will be the NonReentrantLock instance itself. This + saves an allocation but a client may not safely further use this instance in a call to + Monitor.Enter/Exit or in a "lock" statement. + + + + + Shared factory for use in lazy initialization. + + + + + Blocks the current thread until it can enter the , while observing a + . + + + Recursive locking is not supported. i.e. A thread may not call Wait successfully twice without an + intervening . + + The token to + observe. + was + canceled. + The caller already holds the lock + + + + Exit the mutual exclusion. + + + The calling thread must currently hold the lock. + + The lock is not currently held by the calling thread. + + + + Determine if the lock is currently held by the calling thread. + + True if the lock is currently held by the calling thread. + + + + Throw an exception if the lock is not held by the calling thread. + + The lock is not currently held by the calling thread. + + + + Checks if the lock is currently held. + + + + + Checks if the lock is currently held by the calling thread. + + + + + Take ownership of the lock (by the calling thread). The lock may not already + be held by any other code. + + + + + Release ownership of the lock. The lock must already be held by the calling thread. + + + + + Action object passed to a cancellation token registration. + + + + + Callback executed when a cancellation token is canceled during a Wait. + + The syncLock that protects a instance. + + + + Since we want to avoid boxing the return from , this type must be public. + + + + + Obtains the value for the specified key from a dictionary, or adds a new value to the dictionary where the key did not previously exist. + + The type of key stored by the dictionary. + The type of value stored by the dictionary. + The type of argument supplied to the value factory. + The variable or field to atomically update if the specified is not in the dictionary. + The key for the value to retrieve or add. + The function to execute to obtain the value to insert into the dictionary if the key is not found. Returns null if the value can't be obtained. + The argument to pass to the value factory. + The value obtained from the dictionary or if it was not present. + + + + A reference-counting wrapper which allows multiple uses of a single disposable object in code, which is + deterministically released (by calling ) when the last reference is + disposed. + + + Each instance of represents a counted reference (also + referred to as a reference in the following documentation) to a target object. Each of these + references has a lifetime, starting when it is constructed and continuing through its release. During + this time, the reference is considered alive. Each reference which is alive owns exactly one + reference to the target object, ensuring that it will not be disposed while still in use. A reference is + released through either of the following actions: + + + The reference is explicitly released by a call to . + The reference is no longer in use by managed code and gets reclaimed by the garbage collector. + + + While each instance of should be explicitly disposed when + the object is no longer needed by the code owning the reference, this implementation will not leak resources + in the event one or more callers fail to do so. When all references to an object are explicitly released + (i.e. by calling ), the target object will itself be deterministically released by a + call to when the last reference to it is released. However, in the event + one or more references is not explicitly released, the underlying object will still become eligible for + non-deterministic release (i.e. finalization) as soon as each reference to it is released by one of the + two actions described previously. + + When using , certain steps must be taken to ensure the + target object is not disposed early. + + + Use consistently. In other words, do not mix code using + reference-counted wrappers with code that references to the target directly. + Only use the constructor one time per target object. + Additional references to the same target object must only be obtained by calling + . + Do not call on the target object directly. It will be called + automatically at the appropriate time, as described above. + + + All public methods on this type adhere to their pre- and post-conditions and will not invalidate state + even in concurrent execution. + + The type of disposable object. + + + + The target of this reference. This value is initialized to a non- value in the + constructor, and set to when the current reference is disposed. + + + This value is only cleared in order to support cases where one or more references is garbage + collected without having called. + + + + + The boxed reference count, which is shared by all references with the same object. + + + This field serves as the synchronization object for the current type, since it is shared among all + counted reference to the same target object. Accesses to + should only occur when this object is locked. + + PERF DEV NOTE: A concurrent (but complex) implementation of this type with identical semantics is + available in source control history. The use of exclusive locks was not causing any measurable + performance overhead even on 28-thread machines at the time this was written. + + + + + Initializes a new reference counting wrapper around an object. + + + The reference count is initialized to 1. + + The object owned by this wrapper. + + If is . + + + + + Gets the target object. + + + This call is not valid after is called. If this property or the target + object is used concurrently with a call to , it is possible for the code to be + using a disposed object. After the current instance is disposed, this property throws + . However, the exact time when this property starts throwing after + is called is unspecified; code is expected to not use this property or the object + it returns after any code invokes . + + The target object. + + + + Increments the reference count for the disposable object, and returns a new disposable reference to it. + + + The returned object is an independent reference to the same underlying object. Disposing of the + returned value multiple times will only cause the reference count to be decreased once. + + A new pointing to the same underlying object, if it + has not yet been disposed; otherwise, if this reference to the underlying object + has already been disposed. + + + + Provides the implementation for and + . + + + + + Releases the current reference, causing the underlying object to be disposed if this was the last + reference. + + + After this instance is disposed, the method can no longer be used to + obtain a new reference to the target, even if other references to the target object are still in + use. + + + + + Represents a weak reference to a which is capable of + obtaining a new counted reference up until the point when the object is no longer accessible. + + + This value type holds a single field, which is not subject to torn reads/writes. + + + + + Increments the reference count for the disposable object, and returns a new disposable reference to + it. + + + Unlike , this method is capable of + adding a reference to the underlying instance all the way up to the point where it is finally + disposed. + + The returned object is an independent reference to the same underlying object. Disposing of + the returned value multiple times will only cause the reference count to be decreased once. + + A new pointing to the same underlying object, + if it has not yet been disposed; otherwise, if the underlying object has + already been disposed. + + + + Holds the reference count associated with a disposable object. + + + + + Holds the weak reference used by instances of to obtain a reference-counted + reference to the original object. This field is initialized the first time a weak reference is obtained + for the instance, and latches in a non-null state once initialized. + + + DO NOT DISPOSE OF THE TARGET. + + + + + Implements a reference-counted cache, where key/value pairs are associated with a count. When the count of a pair goes to zero, + the value is evicted. Values can also be explicitly evicted at any time. In that case, any new calls to + will return a new value, and the existing holders of the evicted value will still dispose it once they're done with it. + + + + + Container for a factory. + + + + + Factory object that may be used for lazy initialization. Creates AsyncSemaphore instances with an initial count of 1. + + + + + TODO: remove this exception: https://github.com/dotnet/roslyn/issues/40476 + + this represents soft crash request compared to hard crash which will bring down VS. + + by soft crash, it means everything same as hard crash except it should use NFW and info bar + to inform users about unexpected condition instead of killing VS as traditional crash did. + + in other words, no one should ever try to recover from this exception. but they must try to not hard crash. + + this exception is based on cancellation exception since, in Roslyn code, cancellation exception is so far + only safest exception to throw without worrying about crashing VS 99%. there is still 1% case it will bring + down VS and those places should be guarded on this exception as we find such place. + + for now, this is an opt-in based. if a feature wants to move to soft crash (ex, OOP), one should catch + exception and translate that to this exception and then add handler which report NFW and info bar in their + code path and make sure it doesn't bring down VS. + + as we use soft-crash in more places, we should come up with more general framework. + + + + + This helper method provides semantics equivalent to the following, but avoids throwing an intermediate + in the case where the asynchronous operation is cancelled. + + MethodAsync(TArg arg, CancellationToken cancellationToken) + { + var intermediate = await func(arg, cancellationToken).ConfigureAwait(false); + return transform(intermediate); + } + ]]> + + + This helper method is only intended for use in cases where profiling reveals substantial overhead related to + cancellation processing. + + The type of a state variable to pass to and . + The type of intermediate result produced by . + The type of result produced by . + The intermediate asynchronous operation. + The synchronous transformation to apply to the result of . + The state to pass to and . + The that the operation will observe. + + + + + Whether or words should be considered similar if one is contained within the other + (regardless of edit distance). For example if is true then IService would be considered + similar to IServiceFactory despite the edit distance being quite high at 7. + + + + + Returns true if 'originalText' and 'candidateText' are likely a misspelling of each other. + Returns false otherwise. If it is a likely misspelling a similarityWeight is provided + to help rank the match. Lower costs mean it was a better match. + + + + + Stores the "path" from the root of a tree to a node, allowing the node to be recovered in a + later snapshot of the tree, under certain circumstances. + + The implementation stores the child indices to represent the path, so any edit which affects + the child indices could render this object unable to recover its node. NOTE: One thing C# + IDE has done in the past to do a better job of this is to store the fully qualified name of + the member to at least be able to descend into the same member. We could apply the same sort + of logic here. + + + + + Attempts to recover the node at this path in the provided tree. If the node is found + then 'true' is returned, otherwise the result is 'false' and 'node' will be null. + + + + + This value source keeps a strong reference to a value. + + + + + A class that abstracts the accessing of a value that is guaranteed to be available at some point. + + + + + Creates an event handler that holds onto the target weakly. + + The target that is held weakly, and passed as an argument to the invoker. + An action that will receive the event arguments as well as the target instance. + The invoker itself must not capture any state. + + + + Indicates that a code element is performance sensitive under a known scenario. + + + When applying this attribute, only explicitly set the values for properties specifically indicated by the + test/measurement technique described in the associated . + + + + + Gets the location where the original problem is documented, likely with steps to reproduce the issue and/or + validate performance related to a change in the method. + + + + + Gets or sets a description of the constraint imposed by the original performance issue. + + + Constraints are normally specified by other specific properties that allow automated validation of the + constraint. This property supports documenting constraints which cannot be described in terms of other + constraint properties. + + + + + Gets or sets a value indicating whether captures are allowed. + + + + + Gets or sets a value indicating whether implicit boxing of value types is allowed. + + + + + Gets or sets a value indicating whether enumeration of a generic + is allowed. + + + + + Gets or sets a value indicating whether locks are allowed. + + + + + Gets or sets a value indicating whether the asynchronous state machine typically completes synchronously. + + + When , validation of this performance constraint typically involves analyzing + the method to ensure synchronous completion of the state machine does not require the allocation of a + , either through caching the result or by using + . + + + + + Gets or sets a value indicating whether this is an entry point to a parallel algorithm. + + + Parallelization APIs and algorithms, e.g. Parallel.ForEach, may be efficient for parallel entry + points (few direct calls but large amounts of iterative work), but are problematic when called inside the + iterations themselves. Performance-sensitive code should avoid the use of heavy parallelization APIs except + for known entry points to the parallel portion of code. + + + + + An immutable unordered hash map implementation. + + The type of the key. + The type of the value. + + + + The root node of the tree that stores this map. + + + + + The comparer used to sort keys in this map. + + + + + The comparer used to detect equivalent values in this map. + + + + + Initializes a new instance of the class. + + The root. + The comparer. + The value comparer. + + + + Initializes a new instance of the class. + + The comparer. + The value comparer. + + + + Gets an empty map with default equality comparers. + + + + + See the interface. + + + + + See the interface. + + + + + See the interface. + + + + + See the interface. + + + + + Applies a given set of key=value pairs to an immutable dictionary, replacing any conflicting keys in the resulting dictionary. + + The key=value pairs to set on the map. Any keys that conflict with existing keys will overwrite the previous values. + An immutable dictionary. + + + + See the interface. + + + + + See the interface. + + + + + Returns a hash map that uses the specified key and value comparers and has the same contents as this map. + + The key comparer. A value of null results in using the default equality comparer for the type. + The value comparer. A value of null results in using the default equality comparer for the type. + The hash map with the new comparers. + + In the event that a change in the key equality comparer results in a key collision, an exception is thrown. + + + + + Returns a hash map that uses the specified key comparer and current value comparer and has the same contents as this map. + + The key comparer. A value of null results in using the default equality comparer for the type. + The hash map with the new comparers. + + In the event that a change in the key equality comparer results in a key collision, an exception is thrown. + + + + + Determines whether the ImmutableSortedMap<TKey,TValue> + contains an element with the specified value. + + + The value to locate in the ImmutableSortedMap<TKey,TValue>. + The value can be null for reference types. + + + true if the ImmutableSortedMap<TKey,TValue> contains + an element with the specified value; otherwise, false. + + + + + Gets the number of elements in this collection. + + + + + Gets a value indicating whether this instance is empty. + + + true if this instance is empty; otherwise, false. + + + + + Gets the keys in the map. + + + + + Gets the values in the map. + + + + + Gets the with the specified key. + + + + + Determines whether the specified key contains key. + + The key. + + true if the specified key contains key; otherwise, false. + + + + + Determines whether this map contains the specified key-value pair. + + The key value pair. + + true if this map contains the key-value pair; otherwise, false. + + + + + See the interface. + + + + + See the interface. + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Exchanges a key for the actual key instance found in this map. + + The key to search for. + Receives the equal key found in the map. + A value indicating whether an equal and existing key was found in the map. + + + + Attempts to discover an instance beneath some enumerable sequence + if one exists. + + The sequence that may have come from an immutable map. + Receives the concrete typed value if one can be found. + true if the cast was successful; false otherwise. + + + + Bulk adds entries to the map. + + The entries to add. + true to allow the sequence to include duplicate keys and let the last one win; false to throw on collisions. + true when being called from ToHashMap to avoid StackOverflow. + + + + The hash for this bucket. + + + + + Initializes a new instance of the class. + + The hash. + + + + Initializes a new instance of the class. + + The key. + The value. + The hashcode. + + + + Initializes a new instance of the class. + + The buckets. + + + + Initializes a new instance of the class. + + The hash roll. + The used. + The buckets. + The count. + + + + Initializes a new instance of the class. + + The suggested hash roll. + The bucket1. + The bucket2. + + + + A simple view of the immutable collection that the debugger can show to the developer. + + + + + The collection to be enumerated. + + + + + The simple view of the collection. + + + + + Initializes a new instance of the class. + + The collection to display in the debugger + + + + Gets a simple debugger-viewable collection. + + + + + Declare the following extension methods in System.Linq namespace to avoid accidental boxing of ImmutableArray{T} that implements IEnumerable{T}. + The boxing would occur if the methods were defined in Roslyn.Utilities and the file calling these methods has using Roslyn.Utilities + but not using System.Linq. + + + + Specifies that null is allowed as an input even if the corresponding type disallows it. + + + Specifies that null is disallowed as an input even if the corresponding type allows it. + + + Specifies that an output may be null even if the corresponding type disallows it. + + + Specifies that an output will not be null even if the corresponding type allows it. + + + Specifies that when a method returns , the parameter may be null even if the corresponding type disallows it. + + + Initializes the attribute with the specified return value condition. + + The return value condition. If the method returns this value, the associated parameter may be null. + + + + Gets the return value condition. + + + Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. + + + Initializes the attribute with the specified return value condition. + + The return value condition. If the method returns this value, the associated parameter will not be null. + + + + Gets the return value condition. + + + Specifies that the output will be non-null if the named parameter is non-null. + + + Initializes the attribute with the associated parameter name. + + The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null. + + + + Gets the associated parameter name. + + + Applied to a method that will never return under any circumstance. + + + Specifies that the method will not return if the associated Boolean parameter is passed the specified value. + + + Initializes the attribute with the specified parameter value. + + The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to + the associated parameter matches this value. + + + + Gets the condition parameter value. + + + Specifies that the method or property will ensure that the listed field and property members have not-null values. + + + Initializes the attribute with a field or property member. + + The field or property member that is promised to be not-null. + + + + Initializes the attribute with the list of field and property members. + + The list of field and property members that are promised to be not-null. + + + + Gets field or property member names. + + + Specifies that the method or property will ensure that the listed field and property members have not-null values when returning with the specified return value condition. + + + Initializes the attribute with the specified return value condition and a field or property member. + + The return value condition. If the method returns this value, the associated parameter will not be null. + + + The field or property member that is promised to be not-null. + + + + Initializes the attribute with the specified return value condition and list of field and property members. + + The return value condition. If the method returns this value, the associated parameter will not be null. + + + The list of field and property members that are promised to be not-null. + + + + Gets the return value condition. + + + Gets field or property member names. + + + + Reserved to be used by the compiler for tracking metadata. + This class should not be used by developers in source code. + + + + Represent a type can be used to index a collection either from the start or the end. + + Index is used by the C# compiler to support the new index syntax + + int[] someArray = new int[5] { 1, 2, 3, 4, 5 } ; + int lastElement = someArray[^1]; // lastElement = 5 + + + + + Construct an Index using a value and indicating if the index is from the start or from the end. + The index value. it has to be zero or positive number. + Indicating if the index is from the start or from the end. + + If the Index constructed from the end, index value 1 means pointing at the last element and index value 0 means pointing at beyond last element. + + + + Create an Index pointing at first element. + + + Create an Index pointing at beyond last element. + + + Create an Index from the start at the position indicated by the value. + The index value from the start. + + + Create an Index from the end at the position indicated by the value. + The index value from the end. + + + Returns the index value. + + + Indicates whether the index is from the start or the end. + + + Calculate the offset from the start using the giving collection length. + The length of the collection that the Index will be used with. length has to be a positive value + + For performance reason, we don't validate the input length parameter and the returned offset value against negative values. + we don't validate either the returned offset is greater than the input length. + It is expected Index will be used with collections which always have non negative length/count. If the returned offset is negative and + then used to index a collection will get out of range exception which will be same affect as the validation. + + + + Indicates whether the current Index object is equal to another object of the same type. + An object to compare with this object + + + Indicates whether the current Index object is equal to another Index object. + An object to compare with this object + + + Returns the hash code for this instance. + + + Converts integer number to an Index. + + + Converts the value of the current Index object to its equivalent string representation. + + + Represent a range has start and end indexes. + + Range is used by the C# compiler to support the range syntax. + + int[] someArray = new int[5] { 1, 2, 3, 4, 5 }; + int[] subArray1 = someArray[0..2]; // { 1, 2 } + int[] subArray2 = someArray[1..^0]; // { 2, 3, 4, 5 } + + + + + Represent the inclusive start index of the Range. + + + Represent the exclusive end index of the Range. + + + Construct a Range object using the start and end indexes. + Represent the inclusive start index of the range. + Represent the exclusive end index of the range. + + + Indicates whether the current Range object is equal to another object of the same type. + An object to compare with this object + + + Indicates whether the current Range object is equal to another Range object. + An object to compare with this object + + + Returns the hash code for this instance. + + + Converts the value of the current Range object to its equivalent string representation. + + + Create a Range object starting from start index to the end of the collection. + + + Create a Range object starting from first element in the collection to the end Index. + + + Create a Range object starting from first element to the end. + + + Calculate the start offset and length of range object using a collection length. + The length of the collection that the range will be used with. length has to be a positive value. + + For performance reason, we don't validate the input length parameter against negative values. + It is expected Range will be used with collections which always have non negative length/count. + We validate the range is inside the length scope though. + + + + + Represents a Unicode scalar value ([ U+0000..U+D7FF ], inclusive; or [ U+E000..U+10FFFF ], inclusive). + + + This type's constructors and conversion operators validate the input, so consumers can call the APIs + assuming that the underlying instance is well-formed. + + + + + Creates a from the provided UTF-16 code unit. + + + If represents a UTF-16 surrogate code point + U+D800..U+DFFF, inclusive. + + + + + Creates a from the provided UTF-16 surrogate pair. + + + If does not represent a UTF-16 high surrogate code point + or does not represent a UTF-16 low surrogate code point. + + + + + Creates a from the provided Unicode scalar value. + + + If does not represent a value Unicode scalar value. + + + + + Creates a from the provided Unicode scalar value. + + + If does not represent a value Unicode scalar value. + + + + + Returns true if and only if this scalar value is ASCII ([ U+0000..U+007F ]) + and therefore representable by a single UTF-8 code unit. + + + + + Returns true if and only if this scalar value is within the BMP ([ U+0000..U+FFFF ]) + and therefore representable by a single UTF-16 code unit. + + + + + Returns the Unicode plane (0 to 16, inclusive) which contains this scalar. + + + + + A instance that represents the Unicode replacement character U+FFFD. + + + + + Returns the length in code units () of the + UTF-16 sequence required to represent this scalar value. + + + The return value will be 1 or 2. + + + + + Returns the length in code units of the + UTF-8 sequence required to represent this scalar value. + + + The return value will be 1 through 4, inclusive. + + + + + Returns the Unicode scalar value as an integer. + + + + + Decodes the at the beginning of the provided UTF-16 source buffer. + + + + If the source buffer begins with a valid UTF-16 encoded scalar value, returns , + and outs via the decoded and via the + number of s used in the input buffer to encode the . + + + If the source buffer is empty or contains only a standalone UTF-16 high surrogate character, returns , + and outs via and via the length of the input buffer. + + + If the source buffer begins with an ill-formed UTF-16 encoded scalar value, returns , + and outs via and via the number of + s used in the input buffer to encode the ill-formed sequence. + + + + The general calling convention is to call this method in a loop, slicing the buffer by + elements on each iteration of the loop. On each iteration of the loop + will contain the real scalar value if successfully decoded, or it will contain if + the data could not be successfully decoded. This pattern provides convenient automatic U+FFFD substitution of + invalid sequences while iterating through the loop. + + + + + Decodes the at the beginning of the provided UTF-8 source buffer. + + + + If the source buffer begins with a valid UTF-8 encoded scalar value, returns , + and outs via the decoded and via the + number of s used in the input buffer to encode the . + + + If the source buffer is empty or contains only a partial UTF-8 subsequence, returns , + and outs via and via the length of the input buffer. + + + If the source buffer begins with an ill-formed UTF-8 encoded scalar value, returns , + and outs via and via the number of + s used in the input buffer to encode the ill-formed sequence. + + + + The general calling convention is to call this method in a loop, slicing the buffer by + elements on each iteration of the loop. On each iteration of the loop + will contain the real scalar value if successfully decoded, or it will contain if + the data could not be successfully decoded. This pattern provides convenient automatic U+FFFD substitution of + invalid sequences while iterating through the loop. + + + + + Decodes the at the end of the provided UTF-16 source buffer. + + + This method is very similar to , but it allows + the caller to loop backward instead of forward. The typical calling convention is that on each iteration + of the loop, the caller should slice off the final elements of + the buffer. + + + + + Decodes the at the end of the provided UTF-8 source buffer. + + + This method is very similar to , but it allows + the caller to loop backward instead of forward. The typical calling convention is that on each iteration + of the loop, the caller should slice off the final elements of + the buffer. + + + + + Encodes this to a UTF-16 destination buffer. + + The buffer to which to write this value as UTF-16. + The number of s written to . + + If is not large enough to hold the output. + + + + + Encodes this to a UTF-8 destination buffer. + + The buffer to which to write this value as UTF-8. + The number of s written to . + + If is not large enough to hold the output. + + + + + Gets the which begins at index in + string . + + + Throws if is null, if is out of range, or + if does not reference the start of a valid scalar value within . + + + + + Returns if and only if is a valid Unicode scalar + value, i.e., is in [ U+0000..U+D7FF ], inclusive; or [ U+E000..U+10FFFF ], inclusive. + + + + + Returns if and only if is a valid Unicode scalar + value, i.e., is in [ U+0000..U+D7FF ], inclusive; or [ U+E000..U+10FFFF ], inclusive. + + + + + Returns a representation of this instance. + + + + + Attempts to create a from the provided input value. + + + + + Attempts to create a from the provided UTF-16 surrogate pair. + Returns if the input values don't represent a well-formed UTF-16surrogate pair. + + + + + Attempts to create a from the provided input value. + + + + + Attempts to create a from the provided input value. + + + + + Encodes this to a UTF-16 destination buffer. + + The buffer to which to write this value as UTF-16. + + The number of s written to , + or 0 if the destination buffer is not large enough to contain the output. + True if the value was written to the buffer; otherwise, false. + + The property can be queried ahead of time to determine + the required size of the buffer. + + + + + Encodes this to a destination buffer as UTF-8 bytes. + + The buffer to which to write this value as UTF-8. + + The number of s written to , + or 0 if the destination buffer is not large enough to contain the output. + True if the value was written to the buffer; otherwise, false. + + The property can be queried ahead of time to determine + the required size of the buffer. + + + + + Attempts to get the which begins at index in + string . + + if a scalar value was successfully extracted from the specified index, + if a value could not be extracted due to invalid data. + + Throws only if is null or is out of range. + + + + + Creates a without performing validation on the input. + + + + + Formats a code point as the hex string "U+XXXX". + + + The input value doesn't have to be a real code point in the Unicode codespace. It can be any integer. + + + + + The Unicode replacement character U+FFFD. + + + + + Returns the Unicode plane (0 through 16, inclusive) which contains this code point. + + + + + Returns a Unicode scalar value from two code points representing a UTF-16 surrogate pair. + + + + + Given a Unicode scalar value, gets the number of UTF-16 code units required to represent this value. + + + + + Decomposes an astral Unicode scalar into UTF-16 high and low surrogate code units. + + + + + Given a Unicode scalar value, gets the number of UTF-8 code units required to represent this value. + + + + + Returns if and only if is an ASCII + character ([ U+0000..U+007F ]). + + + Per http://www.unicode.org/glossary/#ASCII, ASCII is only U+0000..U+007F. + + + + + Returns if and only if is in the + Basic Multilingual Plane (BMP). + + + + + Returns if and only if is a UTF-16 high surrogate code point, + i.e., is in [ U+D800..U+DBFF ], inclusive. + + + + + Returns if and only if is between + and , inclusive. + + + + + Returns if and only if is a UTF-16 low surrogate code point, + i.e., is in [ U+DC00..U+DFFF ], inclusive. + + + + + Returns if and only if is a UTF-16 surrogate code point, + i.e., is in [ U+D800..U+DFFF ], inclusive. + + + + + Returns if and only if is a valid Unicode code + point, i.e., is in [ U+0000..U+10FFFF ], inclusive. + + + + + Returns if and only if is a valid Unicode scalar + value, i.e., is in [ U+0000..U+D7FF ], inclusive; or [ U+E000..U+10FFFF ], inclusive. + + + + + Returns true iff the UInt32 represents two ASCII UTF-16 characters in machine endianness. + + + + + Returns true iff the UInt64 represents four ASCII UTF-16 characters in machine endianness. + + + + + Given a UInt32 that represents two ASCII UTF-16 characters, returns the invariant + lowercase representation of those characters. Requires the input value to contain + two ASCII UTF-16 characters in machine endianness. + + + This is a branchless implementation. + + + + + Given a UInt32 that represents two ASCII UTF-16 characters, returns the invariant + uppercase representation of those characters. Requires the input value to contain + two ASCII UTF-16 characters in machine endianness. + + + This is a branchless implementation. + + + + + Given a UInt32 that represents two ASCII UTF-16 characters, returns true iff + the input contains one or more lowercase ASCII characters. + + + This is a branchless implementation. + + + + + Given a UInt32 that represents two ASCII UTF-16 characters, returns true iff + the input contains one or more uppercase ASCII characters. + + + This is a branchless implementation. + + + + + Given two UInt32s that represent two ASCII UTF-16 characters each, returns true iff + the two inputs are equal using an ordinal case-insensitive comparison. + + + This is a branchless implementation. + + + + + Given two UInt64s that represent four ASCII UTF-16 characters each, returns true iff + the two inputs are equal using an ordinal case-insensitive comparison. + + + This is a branchless implementation. + + + + diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..0a02954 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..c9efe8f Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..6e73d79 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..5e85ca3 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..d046583 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..addf2bf Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..77fd8ce Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..667783f Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..3c95b74 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..6f9c793 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..8884ef2 Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..da988ac Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll new file mode 100644 index 0000000..dee676d Binary files /dev/null and b/packages/Microsoft.CodeAnalysis.Workspaces.Common.4.1.0/lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll differ diff --git a/packages/System.Composition.1.0.31/.signature.p7s b/packages/System.Composition.1.0.31/.signature.p7s new file mode 100644 index 0000000..ecaacbe Binary files /dev/null and b/packages/System.Composition.1.0.31/.signature.p7s differ diff --git a/packages/System.Composition.1.0.31/System.Composition.1.0.31.nupkg b/packages/System.Composition.1.0.31/System.Composition.1.0.31.nupkg new file mode 100644 index 0000000..3987adf Binary files /dev/null and b/packages/System.Composition.1.0.31/System.Composition.1.0.31.nupkg differ diff --git a/packages/System.Composition.1.0.31/ThirdPartyNotices.txt b/packages/System.Composition.1.0.31/ThirdPartyNotices.txt new file mode 100644 index 0000000..55cfb20 --- /dev/null +++ b/packages/System.Composition.1.0.31/ThirdPartyNotices.txt @@ -0,0 +1,31 @@ +This Microsoft .NET Library may incorporate components from the projects listed +below. Microsoft licenses these components under the Microsoft .NET Library +software license terms. The original copyright notices and the licenses under +which Microsoft received such components are set forth below for informational +purposes only. Microsoft reserves all rights not expressly granted herein, +whether by implication, estoppel or otherwise. + +1. .NET Core (https://github.com/dotnet/core/) + +.NET Core +Copyright (c) .NET Foundation and Contributors + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/System.Composition.1.0.31/dotnet_library_license.txt b/packages/System.Composition.1.0.31/dotnet_library_license.txt new file mode 100644 index 0000000..92b6c44 --- /dev/null +++ b/packages/System.Composition.1.0.31/dotnet_library_license.txt @@ -0,0 +1,128 @@ + +MICROSOFT SOFTWARE LICENSE TERMS + + +MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + +· updates, + +· supplements, + +· Internet-based services, and + +· support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. + +a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs. + +b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only. + +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + +a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below. + +i. Right to Use and Distribute. + +· You may copy and distribute the object code form of the software. + +· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + +ii. Distribution Requirements. For any Distributable Code you distribute, you must + +· add significant primary functionality to it in your programs; + +· require distributors and external end users to agree to terms that protect it at least as much as this agreement; + +· display your valid copyright notice on your programs; and + +· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + +iii. Distribution Restrictions. You may not + +· alter any copyright, trademark or patent notice in the Distributable Code; + +· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + +· include Distributable Code in malicious, deceptive or unlawful programs; or + +· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + +· the code be disclosed or distributed in source code form; or + +· others have the right to modify it. + +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + +· work around any technical limitations in the software; + +· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + +· publish the software for others to copy; + +· rent, lease or lend the software; + +· transfer the software or this agreement to any third party; or + +· use the software for commercial software hosting services. + +4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + +5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + +6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +9. APPLICABLE LAW. + +a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + +b. Outside the United States. If you acquired the software in any other country, the laws of that country apply. + +10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + +FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + +· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + +· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + +Cette limitation concerne : + +· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + +· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + + diff --git a/packages/System.Composition.AttributedModel.1.0.31/.signature.p7s b/packages/System.Composition.AttributedModel.1.0.31/.signature.p7s new file mode 100644 index 0000000..a54bd3a Binary files /dev/null and b/packages/System.Composition.AttributedModel.1.0.31/.signature.p7s differ diff --git a/packages/System.Composition.AttributedModel.1.0.31/System.Composition.AttributedModel.1.0.31.nupkg b/packages/System.Composition.AttributedModel.1.0.31/System.Composition.AttributedModel.1.0.31.nupkg new file mode 100644 index 0000000..856e743 Binary files /dev/null and b/packages/System.Composition.AttributedModel.1.0.31/System.Composition.AttributedModel.1.0.31.nupkg differ diff --git a/packages/System.Composition.AttributedModel.1.0.31/ThirdPartyNotices.txt b/packages/System.Composition.AttributedModel.1.0.31/ThirdPartyNotices.txt new file mode 100644 index 0000000..55cfb20 --- /dev/null +++ b/packages/System.Composition.AttributedModel.1.0.31/ThirdPartyNotices.txt @@ -0,0 +1,31 @@ +This Microsoft .NET Library may incorporate components from the projects listed +below. Microsoft licenses these components under the Microsoft .NET Library +software license terms. The original copyright notices and the licenses under +which Microsoft received such components are set forth below for informational +purposes only. Microsoft reserves all rights not expressly granted herein, +whether by implication, estoppel or otherwise. + +1. .NET Core (https://github.com/dotnet/core/) + +.NET Core +Copyright (c) .NET Foundation and Contributors + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/System.Composition.AttributedModel.1.0.31/dotnet_library_license.txt b/packages/System.Composition.AttributedModel.1.0.31/dotnet_library_license.txt new file mode 100644 index 0000000..92b6c44 --- /dev/null +++ b/packages/System.Composition.AttributedModel.1.0.31/dotnet_library_license.txt @@ -0,0 +1,128 @@ + +MICROSOFT SOFTWARE LICENSE TERMS + + +MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + +· updates, + +· supplements, + +· Internet-based services, and + +· support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. + +a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs. + +b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only. + +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + +a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below. + +i. Right to Use and Distribute. + +· You may copy and distribute the object code form of the software. + +· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + +ii. Distribution Requirements. For any Distributable Code you distribute, you must + +· add significant primary functionality to it in your programs; + +· require distributors and external end users to agree to terms that protect it at least as much as this agreement; + +· display your valid copyright notice on your programs; and + +· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + +iii. Distribution Restrictions. You may not + +· alter any copyright, trademark or patent notice in the Distributable Code; + +· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + +· include Distributable Code in malicious, deceptive or unlawful programs; or + +· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + +· the code be disclosed or distributed in source code form; or + +· others have the right to modify it. + +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + +· work around any technical limitations in the software; + +· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + +· publish the software for others to copy; + +· rent, lease or lend the software; + +· transfer the software or this agreement to any third party; or + +· use the software for commercial software hosting services. + +4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + +5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + +6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +9. APPLICABLE LAW. + +a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + +b. Outside the United States. If you acquired the software in any other country, the laws of that country apply. + +10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + +FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + +· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + +· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + +Cette limitation concerne : + +· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + +· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + + diff --git a/packages/System.Composition.AttributedModel.1.0.31/lib/netstandard1.0/System.Composition.AttributedModel.dll b/packages/System.Composition.AttributedModel.1.0.31/lib/netstandard1.0/System.Composition.AttributedModel.dll new file mode 100644 index 0000000..4acc216 Binary files /dev/null and b/packages/System.Composition.AttributedModel.1.0.31/lib/netstandard1.0/System.Composition.AttributedModel.dll differ diff --git a/packages/System.Composition.AttributedModel.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.AttributedModel.dll b/packages/System.Composition.AttributedModel.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.AttributedModel.dll new file mode 100644 index 0000000..4acc216 Binary files /dev/null and b/packages/System.Composition.AttributedModel.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.AttributedModel.dll differ diff --git a/packages/System.Composition.Convention.1.0.31/.signature.p7s b/packages/System.Composition.Convention.1.0.31/.signature.p7s new file mode 100644 index 0000000..fcbf245 Binary files /dev/null and b/packages/System.Composition.Convention.1.0.31/.signature.p7s differ diff --git a/packages/System.Composition.Convention.1.0.31/System.Composition.Convention.1.0.31.nupkg b/packages/System.Composition.Convention.1.0.31/System.Composition.Convention.1.0.31.nupkg new file mode 100644 index 0000000..37c16c3 Binary files /dev/null and b/packages/System.Composition.Convention.1.0.31/System.Composition.Convention.1.0.31.nupkg differ diff --git a/packages/System.Composition.Convention.1.0.31/ThirdPartyNotices.txt b/packages/System.Composition.Convention.1.0.31/ThirdPartyNotices.txt new file mode 100644 index 0000000..55cfb20 --- /dev/null +++ b/packages/System.Composition.Convention.1.0.31/ThirdPartyNotices.txt @@ -0,0 +1,31 @@ +This Microsoft .NET Library may incorporate components from the projects listed +below. Microsoft licenses these components under the Microsoft .NET Library +software license terms. The original copyright notices and the licenses under +which Microsoft received such components are set forth below for informational +purposes only. Microsoft reserves all rights not expressly granted herein, +whether by implication, estoppel or otherwise. + +1. .NET Core (https://github.com/dotnet/core/) + +.NET Core +Copyright (c) .NET Foundation and Contributors + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/System.Composition.Convention.1.0.31/dotnet_library_license.txt b/packages/System.Composition.Convention.1.0.31/dotnet_library_license.txt new file mode 100644 index 0000000..92b6c44 --- /dev/null +++ b/packages/System.Composition.Convention.1.0.31/dotnet_library_license.txt @@ -0,0 +1,128 @@ + +MICROSOFT SOFTWARE LICENSE TERMS + + +MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + +· updates, + +· supplements, + +· Internet-based services, and + +· support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. + +a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs. + +b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only. + +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + +a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below. + +i. Right to Use and Distribute. + +· You may copy and distribute the object code form of the software. + +· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + +ii. Distribution Requirements. For any Distributable Code you distribute, you must + +· add significant primary functionality to it in your programs; + +· require distributors and external end users to agree to terms that protect it at least as much as this agreement; + +· display your valid copyright notice on your programs; and + +· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + +iii. Distribution Restrictions. You may not + +· alter any copyright, trademark or patent notice in the Distributable Code; + +· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + +· include Distributable Code in malicious, deceptive or unlawful programs; or + +· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + +· the code be disclosed or distributed in source code form; or + +· others have the right to modify it. + +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + +· work around any technical limitations in the software; + +· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + +· publish the software for others to copy; + +· rent, lease or lend the software; + +· transfer the software or this agreement to any third party; or + +· use the software for commercial software hosting services. + +4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + +5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + +6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +9. APPLICABLE LAW. + +a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + +b. Outside the United States. If you acquired the software in any other country, the laws of that country apply. + +10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + +FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + +· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + +· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + +Cette limitation concerne : + +· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + +· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + + diff --git a/packages/System.Composition.Convention.1.0.31/lib/netstandard1.0/System.Composition.Convention.dll b/packages/System.Composition.Convention.1.0.31/lib/netstandard1.0/System.Composition.Convention.dll new file mode 100644 index 0000000..ef3669b Binary files /dev/null and b/packages/System.Composition.Convention.1.0.31/lib/netstandard1.0/System.Composition.Convention.dll differ diff --git a/packages/System.Composition.Convention.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.Convention.dll b/packages/System.Composition.Convention.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.Convention.dll new file mode 100644 index 0000000..ef3669b Binary files /dev/null and b/packages/System.Composition.Convention.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.Convention.dll differ diff --git a/packages/System.Composition.Hosting.1.0.31/.signature.p7s b/packages/System.Composition.Hosting.1.0.31/.signature.p7s new file mode 100644 index 0000000..114cb5e Binary files /dev/null and b/packages/System.Composition.Hosting.1.0.31/.signature.p7s differ diff --git a/packages/System.Composition.Hosting.1.0.31/System.Composition.Hosting.1.0.31.nupkg b/packages/System.Composition.Hosting.1.0.31/System.Composition.Hosting.1.0.31.nupkg new file mode 100644 index 0000000..fb545f9 Binary files /dev/null and b/packages/System.Composition.Hosting.1.0.31/System.Composition.Hosting.1.0.31.nupkg differ diff --git a/packages/System.Composition.Hosting.1.0.31/ThirdPartyNotices.txt b/packages/System.Composition.Hosting.1.0.31/ThirdPartyNotices.txt new file mode 100644 index 0000000..55cfb20 --- /dev/null +++ b/packages/System.Composition.Hosting.1.0.31/ThirdPartyNotices.txt @@ -0,0 +1,31 @@ +This Microsoft .NET Library may incorporate components from the projects listed +below. Microsoft licenses these components under the Microsoft .NET Library +software license terms. The original copyright notices and the licenses under +which Microsoft received such components are set forth below for informational +purposes only. Microsoft reserves all rights not expressly granted herein, +whether by implication, estoppel or otherwise. + +1. .NET Core (https://github.com/dotnet/core/) + +.NET Core +Copyright (c) .NET Foundation and Contributors + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/System.Composition.Hosting.1.0.31/dotnet_library_license.txt b/packages/System.Composition.Hosting.1.0.31/dotnet_library_license.txt new file mode 100644 index 0000000..92b6c44 --- /dev/null +++ b/packages/System.Composition.Hosting.1.0.31/dotnet_library_license.txt @@ -0,0 +1,128 @@ + +MICROSOFT SOFTWARE LICENSE TERMS + + +MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + +· updates, + +· supplements, + +· Internet-based services, and + +· support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. + +a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs. + +b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only. + +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + +a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below. + +i. Right to Use and Distribute. + +· You may copy and distribute the object code form of the software. + +· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + +ii. Distribution Requirements. For any Distributable Code you distribute, you must + +· add significant primary functionality to it in your programs; + +· require distributors and external end users to agree to terms that protect it at least as much as this agreement; + +· display your valid copyright notice on your programs; and + +· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + +iii. Distribution Restrictions. You may not + +· alter any copyright, trademark or patent notice in the Distributable Code; + +· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + +· include Distributable Code in malicious, deceptive or unlawful programs; or + +· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + +· the code be disclosed or distributed in source code form; or + +· others have the right to modify it. + +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + +· work around any technical limitations in the software; + +· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + +· publish the software for others to copy; + +· rent, lease or lend the software; + +· transfer the software or this agreement to any third party; or + +· use the software for commercial software hosting services. + +4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + +5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + +6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +9. APPLICABLE LAW. + +a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + +b. Outside the United States. If you acquired the software in any other country, the laws of that country apply. + +10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + +FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + +· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + +· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + +Cette limitation concerne : + +· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + +· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + + diff --git a/packages/System.Composition.Hosting.1.0.31/lib/netstandard1.0/System.Composition.Hosting.dll b/packages/System.Composition.Hosting.1.0.31/lib/netstandard1.0/System.Composition.Hosting.dll new file mode 100644 index 0000000..a446fe6 Binary files /dev/null and b/packages/System.Composition.Hosting.1.0.31/lib/netstandard1.0/System.Composition.Hosting.dll differ diff --git a/packages/System.Composition.Hosting.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.Hosting.dll b/packages/System.Composition.Hosting.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.Hosting.dll new file mode 100644 index 0000000..a446fe6 Binary files /dev/null and b/packages/System.Composition.Hosting.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.Hosting.dll differ diff --git a/packages/System.Composition.Runtime.1.0.31/.signature.p7s b/packages/System.Composition.Runtime.1.0.31/.signature.p7s new file mode 100644 index 0000000..33faebd Binary files /dev/null and b/packages/System.Composition.Runtime.1.0.31/.signature.p7s differ diff --git a/packages/System.Composition.Runtime.1.0.31/System.Composition.Runtime.1.0.31.nupkg b/packages/System.Composition.Runtime.1.0.31/System.Composition.Runtime.1.0.31.nupkg new file mode 100644 index 0000000..aa1193e Binary files /dev/null and b/packages/System.Composition.Runtime.1.0.31/System.Composition.Runtime.1.0.31.nupkg differ diff --git a/packages/System.Composition.Runtime.1.0.31/ThirdPartyNotices.txt b/packages/System.Composition.Runtime.1.0.31/ThirdPartyNotices.txt new file mode 100644 index 0000000..55cfb20 --- /dev/null +++ b/packages/System.Composition.Runtime.1.0.31/ThirdPartyNotices.txt @@ -0,0 +1,31 @@ +This Microsoft .NET Library may incorporate components from the projects listed +below. Microsoft licenses these components under the Microsoft .NET Library +software license terms. The original copyright notices and the licenses under +which Microsoft received such components are set forth below for informational +purposes only. Microsoft reserves all rights not expressly granted herein, +whether by implication, estoppel or otherwise. + +1. .NET Core (https://github.com/dotnet/core/) + +.NET Core +Copyright (c) .NET Foundation and Contributors + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/System.Composition.Runtime.1.0.31/dotnet_library_license.txt b/packages/System.Composition.Runtime.1.0.31/dotnet_library_license.txt new file mode 100644 index 0000000..92b6c44 --- /dev/null +++ b/packages/System.Composition.Runtime.1.0.31/dotnet_library_license.txt @@ -0,0 +1,128 @@ + +MICROSOFT SOFTWARE LICENSE TERMS + + +MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + +· updates, + +· supplements, + +· Internet-based services, and + +· support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. + +a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs. + +b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only. + +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + +a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below. + +i. Right to Use and Distribute. + +· You may copy and distribute the object code form of the software. + +· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + +ii. Distribution Requirements. For any Distributable Code you distribute, you must + +· add significant primary functionality to it in your programs; + +· require distributors and external end users to agree to terms that protect it at least as much as this agreement; + +· display your valid copyright notice on your programs; and + +· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + +iii. Distribution Restrictions. You may not + +· alter any copyright, trademark or patent notice in the Distributable Code; + +· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + +· include Distributable Code in malicious, deceptive or unlawful programs; or + +· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + +· the code be disclosed or distributed in source code form; or + +· others have the right to modify it. + +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + +· work around any technical limitations in the software; + +· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + +· publish the software for others to copy; + +· rent, lease or lend the software; + +· transfer the software or this agreement to any third party; or + +· use the software for commercial software hosting services. + +4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + +5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + +6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +9. APPLICABLE LAW. + +a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + +b. Outside the United States. If you acquired the software in any other country, the laws of that country apply. + +10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + +FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + +· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + +· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + +Cette limitation concerne : + +· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + +· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + + diff --git a/packages/System.Composition.Runtime.1.0.31/lib/netstandard1.0/System.Composition.Runtime.dll b/packages/System.Composition.Runtime.1.0.31/lib/netstandard1.0/System.Composition.Runtime.dll new file mode 100644 index 0000000..a05bfe9 Binary files /dev/null and b/packages/System.Composition.Runtime.1.0.31/lib/netstandard1.0/System.Composition.Runtime.dll differ diff --git a/packages/System.Composition.Runtime.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.Runtime.dll b/packages/System.Composition.Runtime.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.Runtime.dll new file mode 100644 index 0000000..a05bfe9 Binary files /dev/null and b/packages/System.Composition.Runtime.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.Runtime.dll differ diff --git a/packages/System.Composition.TypedParts.1.0.31/.signature.p7s b/packages/System.Composition.TypedParts.1.0.31/.signature.p7s new file mode 100644 index 0000000..43cac12 Binary files /dev/null and b/packages/System.Composition.TypedParts.1.0.31/.signature.p7s differ diff --git a/packages/System.Composition.TypedParts.1.0.31/System.Composition.TypedParts.1.0.31.nupkg b/packages/System.Composition.TypedParts.1.0.31/System.Composition.TypedParts.1.0.31.nupkg new file mode 100644 index 0000000..1ac030a Binary files /dev/null and b/packages/System.Composition.TypedParts.1.0.31/System.Composition.TypedParts.1.0.31.nupkg differ diff --git a/packages/System.Composition.TypedParts.1.0.31/ThirdPartyNotices.txt b/packages/System.Composition.TypedParts.1.0.31/ThirdPartyNotices.txt new file mode 100644 index 0000000..55cfb20 --- /dev/null +++ b/packages/System.Composition.TypedParts.1.0.31/ThirdPartyNotices.txt @@ -0,0 +1,31 @@ +This Microsoft .NET Library may incorporate components from the projects listed +below. Microsoft licenses these components under the Microsoft .NET Library +software license terms. The original copyright notices and the licenses under +which Microsoft received such components are set forth below for informational +purposes only. Microsoft reserves all rights not expressly granted herein, +whether by implication, estoppel or otherwise. + +1. .NET Core (https://github.com/dotnet/core/) + +.NET Core +Copyright (c) .NET Foundation and Contributors + +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/packages/System.Composition.TypedParts.1.0.31/dotnet_library_license.txt b/packages/System.Composition.TypedParts.1.0.31/dotnet_library_license.txt new file mode 100644 index 0000000..92b6c44 --- /dev/null +++ b/packages/System.Composition.TypedParts.1.0.31/dotnet_library_license.txt @@ -0,0 +1,128 @@ + +MICROSOFT SOFTWARE LICENSE TERMS + + +MICROSOFT .NET LIBRARY + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft + +· updates, + +· supplements, + +· Internet-based services, and + +· support services + +for this software, unless other terms accompany those items. If so, those terms apply. + +BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE. + + +IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW. + +1. INSTALLATION AND USE RIGHTS. + +a. Installation and Use. You may install and use any number of copies of the software to design, develop and test your programs. + +b. Third Party Programs. The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only. + +2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. + +a. DISTRIBUTABLE CODE. The software is comprised of Distributable Code. “Distributable Code” is code that you are permitted to distribute in programs you develop if you comply with the terms below. + +i. Right to Use and Distribute. + +· You may copy and distribute the object code form of the software. + +· Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs. + +ii. Distribution Requirements. For any Distributable Code you distribute, you must + +· add significant primary functionality to it in your programs; + +· require distributors and external end users to agree to terms that protect it at least as much as this agreement; + +· display your valid copyright notice on your programs; and + +· indemnify, defend, and hold harmless Microsoft from any claims, including attorneys’ fees, related to the distribution or use of your programs. + +iii. Distribution Restrictions. You may not + +· alter any copyright, trademark or patent notice in the Distributable Code; + +· use Microsoft’s trademarks in your programs’ names or in a way that suggests your programs come from or are endorsed by Microsoft; + +· include Distributable Code in malicious, deceptive or unlawful programs; or + +· modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that + +· the code be disclosed or distributed in source code form; or + +· others have the right to modify it. + +3. SCOPE OF LICENSE. The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + +· work around any technical limitations in the software; + +· reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation; + +· publish the software for others to copy; + +· rent, lease or lend the software; + +· transfer the software or this agreement to any third party; or + +· use the software for commercial software hosting services. + +4. BACKUP COPY. You may make one backup copy of the software. You may use it only to reinstall the software. + +5. DOCUMENTATION. Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes. + +6. EXPORT RESTRICTIONS. The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see www.microsoft.com/exporting. + +7. SUPPORT SERVICES. Because this software is “as is,” we may not provide support services for it. + +8. ENTIRE AGREEMENT. This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +9. APPLICABLE LAW. + +a. United States. If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort. + +b. Outside the United States. If you acquired the software in any other country, the laws of that country apply. + +10. LEGAL EFFECT. This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so. + +11. DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + +FOR AUSTRALIA – YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS. + +12. LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES. + +This limitation applies to + +· anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and + +· claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. + +Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French. + +Remarque : Ce logiciel étant distribué au Québec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en français. + +EXONÉRATION DE GARANTIE. Le logiciel visé par une licence est offert « tel quel ». Toute utilisation de ce logiciel est à votre seule risque et péril. Microsoft n’accorde aucune autre garantie expresse. Vous pouvez bénéficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualité marchande, d’adéquation à un usage particulier et d’absence de contrefaçon sont exclues. + +LIMITATION DES DOMMAGES-INTÉRÊTS ET EXCLUSION DE RESPONSABILITÉ POUR LES DOMMAGES. Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement à hauteur de 5,00 $ US. Vous ne pouvez prétendre à aucune indemnisation pour les autres dommages, y compris les dommages spéciaux, indirects ou accessoires et pertes de bénéfices. + +Cette limitation concerne : + +· tout ce qui est relié au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et + +· les réclamations au titre de violation de contrat ou de garantie, ou au titre de responsabilité stricte, de négligence ou d’une autre faute dans la limite autorisée par la loi en vigueur. + +Elle s’applique également, même si Microsoft connaissait ou devrait connaître l’éventualité d’un tel dommage. Si votre pays n’autorise pas l’exclusion ou la limitation de responsabilité pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l’exclusion ci-dessus ne s’appliquera pas à votre égard. + +EFFET JURIDIQUE. Le présent contrat décrit certains droits juridiques. Vous pourriez avoir d’autres droits prévus par les lois de votre pays. Le présent contrat ne modifie pas les droits que vous confèrent les lois de votre pays si celles-ci ne le permettent pas. + + diff --git a/packages/System.Composition.TypedParts.1.0.31/lib/netstandard1.0/System.Composition.TypedParts.dll b/packages/System.Composition.TypedParts.1.0.31/lib/netstandard1.0/System.Composition.TypedParts.dll new file mode 100644 index 0000000..cfae95d Binary files /dev/null and b/packages/System.Composition.TypedParts.1.0.31/lib/netstandard1.0/System.Composition.TypedParts.dll differ diff --git a/packages/System.Composition.TypedParts.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.TypedParts.dll b/packages/System.Composition.TypedParts.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.TypedParts.dll new file mode 100644 index 0000000..cfae95d Binary files /dev/null and b/packages/System.Composition.TypedParts.1.0.31/lib/portable-net45+win8+wp8+wpa81/System.Composition.TypedParts.dll differ diff --git a/packages/System.IO.Pipelines.5.0.1/.signature.p7s b/packages/System.IO.Pipelines.5.0.1/.signature.p7s new file mode 100644 index 0000000..65c35b1 Binary files /dev/null and b/packages/System.IO.Pipelines.5.0.1/.signature.p7s differ diff --git a/packages/System.IO.Pipelines.5.0.1/Icon.png b/packages/System.IO.Pipelines.5.0.1/Icon.png new file mode 100644 index 0000000..a0f1fdb Binary files /dev/null and b/packages/System.IO.Pipelines.5.0.1/Icon.png differ diff --git a/packages/System.IO.Pipelines.5.0.1/LICENSE.TXT b/packages/System.IO.Pipelines.5.0.1/LICENSE.TXT new file mode 100644 index 0000000..984713a --- /dev/null +++ b/packages/System.IO.Pipelines.5.0.1/LICENSE.TXT @@ -0,0 +1,23 @@ +The MIT License (MIT) + +Copyright (c) .NET Foundation and Contributors + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/System.IO.Pipelines.5.0.1/System.IO.Pipelines.5.0.1.nupkg b/packages/System.IO.Pipelines.5.0.1/System.IO.Pipelines.5.0.1.nupkg new file mode 100644 index 0000000..7593d6a Binary files /dev/null and b/packages/System.IO.Pipelines.5.0.1/System.IO.Pipelines.5.0.1.nupkg differ diff --git a/packages/System.IO.Pipelines.5.0.1/THIRD-PARTY-NOTICES.TXT b/packages/System.IO.Pipelines.5.0.1/THIRD-PARTY-NOTICES.TXT new file mode 100644 index 0000000..111dcf5 --- /dev/null +++ b/packages/System.IO.Pipelines.5.0.1/THIRD-PARTY-NOTICES.TXT @@ -0,0 +1,884 @@ +.NET Runtime uses third-party libraries or other resources that may be +distributed under licenses different than the .NET Runtime software. + +In the event that we accidentally failed to list a required notice, please +bring it to our attention. Post an issue or email us: + + dotnet@microsoft.com + +The attached notices are provided for information only. + +License notice for ASP.NET +------------------------------- + +Copyright (c) .NET Foundation. All rights reserved. +Licensed under the Apache License, Version 2.0. + +Available at +https://github.com/aspnet/AspNetCore/blob/master/LICENSE.txt + +License notice for Slicing-by-8 +------------------------------- + +http://sourceforge.net/projects/slicing-by-8/ + +Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + + +This software program is licensed subject to the BSD License, available at +http://www.opensource.org/licenses/bsd-license.html. + + +License notice for Unicode data +------------------------------- + +https://www.unicode.org/license.html + +Copyright © 1991-2020 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in https://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation +(the "Data Files") or Unicode software and any associated documentation +(the "Software") to deal in the Data Files or Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. + +THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. + +License notice for Zlib +----------------------- + +https://github.com/madler/zlib +http://zlib.net/zlib_license.html + +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.11, January 15th, 2017 + + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +*/ + +License notice for Mono +------------------------------- + +http://www.mono-project.com/docs/about-mono/ + +Copyright (c) .NET Foundation Contributors + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the Software), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License notice for International Organization for Standardization +----------------------------------------------------------------- + +Portions (C) International Organization for Standardization 1986: + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +License notice for Intel +------------------------ + +"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Xamarin and Novell +------------------------------------- + +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Copyright (c) 2011 Novell, Inc (http://www.novell.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Third party notice for W3C +-------------------------- + +"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. +This work is being provided by the copyright holders under the following license. +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders." + +License notice for Bit Twiddling Hacks +-------------------------------------- + +Bit Twiddling Hacks + +By Sean Eron Anderson +seander@cs.stanford.edu + +Individually, the code snippets here are in the public domain (unless otherwise +noted) — feel free to use them however you please. The aggregate collection and +descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are +distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and +without even the implied warranty of merchantability or fitness for a particular +purpose. + +License notice for Brotli +-------------------------------------- + +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +compress_fragment.c: +Copyright (c) 2011, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +decode_fuzzer.c: +Copyright (c) 2015 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." + +License notice for Json.NET +------------------------------- + +https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md + +The MIT License (MIT) + +Copyright (c) 2007 James Newton-King + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License notice for vectorized base64 encoding / decoding +-------------------------------------------------------- + +Copyright (c) 2005-2007, Nick Galbreath +Copyright (c) 2013-2017, Alfred Klomp +Copyright (c) 2015-2017, Wojciech Mula +Copyright (c) 2016-2017, Matthieu Darbois +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +- Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for RFC 3492 +--------------------------- + +The punycode implementation is based on the sample code in RFC 3492 + +Copyright (C) The Internet Society (2003). All Rights Reserved. + +This document and translations of it may be copied and furnished to +others, and derivative works that comment on or otherwise explain it +or assist in its implementation may be prepared, copied, published +and distributed, in whole or in part, without restriction of any +kind, provided that the above copyright notice and this paragraph are +included on all such copies and derivative works. However, this +document itself may not be modified in any way, such as by removing +the copyright notice or references to the Internet Society or other +Internet organizations, except as needed for the purpose of +developing Internet standards in which case the procedures for +copyrights defined in the Internet Standards process must be +followed, or as required to translate it into languages other than +English. + +The limited permissions granted above are perpetual and will not be +revoked by the Internet Society or its successors or assigns. + +This document and the information contained herein is provided on an +"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING +TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION +HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF +MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +License notice for Algorithm from Internet Draft document "UUIDs and GUIDs" +--------------------------------------------------------------------------- + +Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. +Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & +Digital Equipment Corporation, Maynard, Mass. +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: permission to use, copy, +modify, and distribute this file for any purpose is hereby +granted without fee, provided that the above copyright notices and +this notice appears in all source code copies, and that none of +the names of Open Software Foundation, Inc., Hewlett-Packard +Company, or Digital Equipment Corporation be used in advertising +or publicity pertaining to distribution of the software without +specific, written prior permission. Neither Open Software +Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital Equipment +Corporation makes any representations about the suitability of +this software for any purpose. + +Copyright(C) The Internet Society 1997. All Rights Reserved. + +This document and translations of it may be copied and furnished to others, +and derivative works that comment on or otherwise explain it or assist in +its implementation may be prepared, copied, published and distributed, in +whole or in part, without restriction of any kind, provided that the above +copyright notice and this paragraph are included on all such copies and +derivative works.However, this document itself may not be modified in any +way, such as by removing the copyright notice or references to the Internet +Society or other Internet organizations, except as needed for the purpose of +developing Internet standards in which case the procedures for copyrights +defined in the Internet Standards process must be followed, or as required +to translate it into languages other than English. + +The limited permissions granted above are perpetual and will not be revoked +by the Internet Society or its successors or assigns. + +This document and the information contained herein is provided on an "AS IS" +basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE +DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY +RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A +PARTICULAR PURPOSE. + +License notice for Algorithm from RFC 4122 - +A Universally Unique IDentifier (UUID) URN Namespace +---------------------------------------------------- + +Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. +Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & +Digital Equipment Corporation, Maynard, Mass. +Copyright (c) 1998 Microsoft. +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: permission to use, copy, +modify, and distribute this file for any purpose is hereby +granted without fee, provided that the above copyright notices and +this notice appears in all source code copies, and that none of +the names of Open Software Foundation, Inc., Hewlett-Packard +Company, Microsoft, or Digital Equipment Corporation be used in +advertising or publicity pertaining to distribution of the software +without specific, written prior permission. Neither Open Software +Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital +Equipment Corporation makes any representations about the +suitability of this software for any purpose." + +License notice for The LLVM Compiler Infrastructure +--------------------------------------------------- + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE +SOFTWARE. + +License notice for Bob Jenkins +------------------------------ + +By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this +code any way you wish, private, educational, or commercial. It's free. + +License notice for Greg Parker +------------------------------ + +Greg Parker gparker@cs.stanford.edu December 2000 +This code is in the public domain and may be copied or modified without +permission. + +License notice for libunwind based code +---------------------------------------- + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License notice for Printing Floating-Point Numbers (Dragon4) +------------------------------------------------------------ + +/****************************************************************************** + Copyright (c) 2014 Ryan Juckett + http://www.ryanjuckett.com/ + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +******************************************************************************/ + +License notice for Printing Floating-point Numbers (Grisu3) +----------------------------------------------------------- + +Copyright 2012 the V8 project authors. All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for xxHash +------------------------- + +xxHash Library +Copyright (c) 2012-2014, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Berkeley SoftFloat Release 3e +------------------------------------------------ + +https://github.com/ucb-bar/berkeley-softfloat-3 +https://github.com/ucb-bar/berkeley-softfloat-3/blob/master/COPYING.txt + +License for Berkeley SoftFloat Release 3e + +John R. Hauser +2018 January 20 + +The following applies to the whole of SoftFloat Release 3e as well as to +each source file individually. + +Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the +University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions, and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions, and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Xorshift RNGs +-------------------------------- + +George Marsaglia +2003-07-04 +Journal of Statistical Software +License: http://creativecommons.org/licenses/by/3.0/ + +https://www.jstatsoft.org/article/view/v008i14 +https://www.jstatsoft.org/index.php/jss/article/view/v008i14/xorshift.pdf + +License notice for Xorshift (Wikipedia) +--------------------------------------- + +https://en.wikipedia.org/wiki/Xorshift +License: https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License + +License for fastmod (https://github.com/lemire/fastmod) +-------------------------------------- + + Copyright 2018 Daniel Lemire + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +License notice for The C++ REST SDK +----------------------------------- + +C++ REST SDK + +The MIT License (MIT) + +Copyright (c) Microsoft Corporation + +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +License notice for MessagePack-CSharp +------------------------------------- + +MessagePack for C# + +MIT License + +Copyright (c) 2017 Yoshifumi Kawai + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +License notice for lz4net +------------------------------------- + +lz4net + +Copyright (c) 2013-2017, Milosz Krajewski + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Nerdbank.Streams +----------------------------------- + +The MIT License (MIT) + +Copyright (c) Andrew Arnott + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +License notice for RapidJSON +---------------------------- + +Tencent is pleased to support the open source community by making RapidJSON available. + +Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. + +Licensed under the MIT License (the "License"); you may not use this file except +in compliance with the License. You may obtain a copy of the License at + +http://opensource.org/licenses/MIT + +Unless required by applicable law or agreed to in writing, software distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the License for the +specific language governing permissions and limitations under the License. + +License notice for DirectX Math Library +--------------------------------------- + +https://github.com/microsoft/DirectXMath/blob/master/LICENSE + + The MIT License (MIT) + +Copyright (c) 2011-2020 Microsoft Corp + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be included in all copies +or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License notice for ldap4net +--------------------------- + +The MIT License (MIT) + +Copyright (c) 2018 Alexander Chermyanin + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +License notice for vectorized sorting code +------------------------------------------ + +MIT License + +Copyright (c) 2020 Dan Shechter + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/packages/System.IO.Pipelines.5.0.1/lib/net461/System.IO.Pipelines.dll b/packages/System.IO.Pipelines.5.0.1/lib/net461/System.IO.Pipelines.dll new file mode 100644 index 0000000..0e68c22 Binary files /dev/null and b/packages/System.IO.Pipelines.5.0.1/lib/net461/System.IO.Pipelines.dll differ diff --git a/packages/System.IO.Pipelines.5.0.1/lib/net461/System.IO.Pipelines.xml b/packages/System.IO.Pipelines.5.0.1/lib/net461/System.IO.Pipelines.xml new file mode 100644 index 0000000..c6f2b61 --- /dev/null +++ b/packages/System.IO.Pipelines.5.0.1/lib/net461/System.IO.Pipelines.xml @@ -0,0 +1,341 @@ + + + + System.IO.Pipelines + + + + Result returned by call. + + + Initializes a new instance of struct setting the and flags. + + to indicate the current operation that produced this was canceled by ; otherwise, . + + to indicate the reader is no longer reading data written to the . + + + Gets a value that indicates whether the current operation was canceled. + + if the current operation was canceled; otherwise, . + + + Gets a value that indicates the reader is no longer reading data written to the . + + if the reader is no longer reading data written to the ; otherwise, . + + + Defines a class that provides a duplex pipe from which data can be read from and written to. + + + Gets the half of the duplex pipe. + + + Gets the half of the duplex pipe. + + + The default and implementation. + + + Initializes a new instance of the class using as options. + + + Initializes a new instance of the class with the specified options. + The set of options for this pipe. + + + Resets the pipe. + + + Gets the for this pipe. + A instance for this pipe. + + + Gets the for this pipe. + A instance for this pipe. + + + Represents a set of options. + + + Initializes a new instance of the class with the specified parameters. + The pool of memory blocks to be used for buffer management. + The to be used to execute callbacks and async continuations. + The used to execute callbacks and async continuations. + The number of bytes in the before starts blocking. A value of zero prevents from ever blocking, effectively making the number of bytes in the unlimited. + The number of bytes in the when stops blocking. + The minimum size of the segment requested from . + + if asynchronous continuations should be executed on the they were captured on; otherwise. This takes precedence over the schedulers specified in and . + + + Gets the default instance of . + A object initialized with default parameters. + + + Gets the minimum size of the segment requested from the . + The minimum size of the segment requested from the . + + + Gets the number of bytes in the when starts blocking. + The number of bytes in the when starts blocking. + + + Gets the object used for buffer management. + A pool of memory blocks used for buffer management. + + + Gets the used to execute callbacks and async continuations. + A that is used to execute callbacks and async continuations. + + + Gets the number of bytes in the when stops blocking. + The number of bytes in the when stops blocking. + + + Gets a value that determines if asynchronous callbacks and continuations should be executed on the they were captured on. This takes precedence over the schedulers specified in and . + + if asynchronous callbacks and continuations should be executed on the they were captured on; otherwise, . + + + Gets the used to execute callbacks and async continuations. + A object used to execute callbacks and async continuations. + + + Defines a class that provides access to a read side of pipe. + + + Initializes a new instance of the class. + + + Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed. + Marks the extent of the data that has been successfully processed. + + + Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed, read and examined. + Marks the extent of the data that has been successfully processed. + Marks the extent of the data that has been read and examined. + + + Returns a representation of the . + An optional flag that indicates whether disposing the returned leaves open () or completes (). + A stream that represents the . + + + Cancels to currently pending or if none is pending next call to , without completing the . + + + Signals to the producer that the consumer is done reading. + Optional indicating a failure that's causing the pipeline to complete. + + + Marks the current pipe reader instance as being complete, meaning no more data will be read from it. + An optional exception that indicates the failure that caused the reader to complete. + A value task that represents the asynchronous complete operation. + + + Asynchronously reads the bytes from the and writes them to the specified , using a specified buffer size and cancellation token. + The pipe writer to which the contents of the current stream will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Asynchronously reads the bytes from the and writes them to the specified stream, using a specified cancellation token. + The stream to which the contents of the current stream will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Creates a wrapping the specified . + The stream that the pipe reader will wrap. + The options to configure the pipe reader. + A that wraps the . + + + Registers a callback that executes when the side of the pipe is completed. + The callback to register. + The state object to pass to when it's invoked. + + + Asynchronously reads a sequence of bytes from the current . + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous read operation. + + + Attempts to synchronously read data the . + When this method returns , this value is set to a instance that represents the result of the read call; otherwise, this value is set to . + + if data was available, or if the call was canceled or the writer was completed; otherwise, . + + + Abstraction for running and callbacks and continuations. + + + Initializes new a instance. + + + Requests to be run on scheduler with being passed in. + The single-parameter action delegate to schedule. + The parameter to pass to the delegate. + + + The implementation that runs callbacks inline. + A instance that runs callbacks inline. + + + The implementation that queues callbacks to the thread pool. + A instance that queues callbacks to the thread pool. + + + Defines a class that provides a pipeline to which data can be written. + + + Initializes a new instance of the class. + + + Notifies the that bytes were written to the output or . You must request a new buffer after calling to continue writing more data; you cannot write to a previously acquired buffer. + The number of bytes written to the or . + + + Returns a representation of the . + An optional flag that indicates whether disposing the returned leaves open () or completes (). + A stream that represents the . + + + Cancels the pending operation. If there is none, cancels next operation, without completing the . + + + Marks the as being complete, meaning no more items will be written to it. + Optional indicating a failure that's causing the pipeline to complete. + + + Marks the current pipe writer instance as being complete, meaning no more data will be written to it. + An optional exception that indicates the failure that caused the pipeline to complete. + A value task that represents the asynchronous complete operation. + + + Asynchronously reads the bytes from the specified stream and writes them to the . + The stream from which the contents will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Creates a wrapping the specified . + The stream that the pipe writer will wrap. + The options to configure the pipe writer. + A that wraps the . + + + Makes bytes written available to and runs continuation. + The token to monitor for cancellation requests. The default value is . + A task that represents and wraps the asynchronous flush operation. + + + Returns a to write to that is at least the requested size, as specified by the parameter. + The minimum length of the returned . If 0, a non-empty memory buffer of arbitrary size is returned. + The requested buffer size is not available. + A memory buffer of at least bytes. If is 0, returns a non-empty buffer of arbitrary size. + + + Returns a to write to that is at least the requested size, as specified by the parameter. + The minimum length of the returned . If 0, a non-empty buffer of arbitrary size is returned. + The requested buffer size is not available. + A buffer of at least bytes. If is 0, returns a non-empty buffer of arbitrary size. + + + Registers a callback that executes when the side of the pipe is completed. + The callback to register. + The state object to pass to when it's invoked. + + + Writes the specified byte memory range to the pipe and makes data accessible to the . + The read-only byte memory region to write. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous write operation, and wraps the flush asynchronous operation. + + + Represents the result of a call. + + + Creates a new instance of setting and flags. + The read-only sequence containing the bytes of data that were read in the call. + A flag that indicates if the operation that produced this was canceled by . + A flag that indicates whether the end of the data stream has been reached. + + + Gets the that was read. + A read-only sequence containing the bytes of data that were read in the call. + + + Gets a value that indicates whether the current operation was canceled. + + if the operation that produced this was canceled by ; otherwise, . + + + Gets a value that indicates whether the end of the data stream has been reached. + + if the end of the data stream has been reached; otherwise, . + + + Provides extension methods for that support read and write operations directly into pipes. + + + Asynchronously reads the bytes from the and writes them to the specified , using a cancellation token. + The stream from which the contents of the current stream will be copied. + The writer to which the contents of the source stream will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Represents a set of options for controlling the creation of the . + + + Initializes a instance, optionally specifying a memory pool, a minimum buffer size, a minimum read size, and whether the underlying stream should be left open after the completes. + The memory pool to use when allocating memory. The default value is . + The minimum buffer size to use when renting memory from the . The default value is 4096. + The threshold of remaining bytes in the buffer before a new buffer is allocated. The default value is 1024. + + to leave the underlying stream open after the completes; to close it. The default is . + + + Gets the minimum buffer size to use when renting memory from the . + The buffer size. + + + Gets the value that indicates if the underlying stream should be left open after the completes. + + if the underlying stream should be left open after the completes; otherwise, . + + + Gets the threshold of remaining bytes in the buffer before a new buffer is allocated. + The minimum read size. + + + Gets the to use when allocating memory. + A memory pool instance. + + + Represents a set of options for controlling the creation of the . + + + Initializes a instance, optionally specifying a memory pool, a minimum buffer size, and whether the underlying stream should be left open after the completes. + The memory pool to use when allocating memory. The default value is . + The minimum buffer size to use when renting memory from the . The default value is 4096. + + to leave the underlying stream open after the completes; to close it. The default is . + + + Gets the value that indicates if the underlying stream should be left open after the completes. + + if the underlying stream should be left open after the completes; otherwise, . + + + Gets the minimum buffer size to use when renting memory from the . + An integer representing the minimum buffer size. + + + Gets the to use when allocating memory. + A memory pool instance. + + + \ No newline at end of file diff --git a/packages/System.IO.Pipelines.5.0.1/lib/netcoreapp3.0/System.IO.Pipelines.dll b/packages/System.IO.Pipelines.5.0.1/lib/netcoreapp3.0/System.IO.Pipelines.dll new file mode 100644 index 0000000..d2ab03f Binary files /dev/null and b/packages/System.IO.Pipelines.5.0.1/lib/netcoreapp3.0/System.IO.Pipelines.dll differ diff --git a/packages/System.IO.Pipelines.5.0.1/lib/netcoreapp3.0/System.IO.Pipelines.xml b/packages/System.IO.Pipelines.5.0.1/lib/netcoreapp3.0/System.IO.Pipelines.xml new file mode 100644 index 0000000..c6f2b61 --- /dev/null +++ b/packages/System.IO.Pipelines.5.0.1/lib/netcoreapp3.0/System.IO.Pipelines.xml @@ -0,0 +1,341 @@ + + + + System.IO.Pipelines + + + + Result returned by call. + + + Initializes a new instance of struct setting the and flags. + + to indicate the current operation that produced this was canceled by ; otherwise, . + + to indicate the reader is no longer reading data written to the . + + + Gets a value that indicates whether the current operation was canceled. + + if the current operation was canceled; otherwise, . + + + Gets a value that indicates the reader is no longer reading data written to the . + + if the reader is no longer reading data written to the ; otherwise, . + + + Defines a class that provides a duplex pipe from which data can be read from and written to. + + + Gets the half of the duplex pipe. + + + Gets the half of the duplex pipe. + + + The default and implementation. + + + Initializes a new instance of the class using as options. + + + Initializes a new instance of the class with the specified options. + The set of options for this pipe. + + + Resets the pipe. + + + Gets the for this pipe. + A instance for this pipe. + + + Gets the for this pipe. + A instance for this pipe. + + + Represents a set of options. + + + Initializes a new instance of the class with the specified parameters. + The pool of memory blocks to be used for buffer management. + The to be used to execute callbacks and async continuations. + The used to execute callbacks and async continuations. + The number of bytes in the before starts blocking. A value of zero prevents from ever blocking, effectively making the number of bytes in the unlimited. + The number of bytes in the when stops blocking. + The minimum size of the segment requested from . + + if asynchronous continuations should be executed on the they were captured on; otherwise. This takes precedence over the schedulers specified in and . + + + Gets the default instance of . + A object initialized with default parameters. + + + Gets the minimum size of the segment requested from the . + The minimum size of the segment requested from the . + + + Gets the number of bytes in the when starts blocking. + The number of bytes in the when starts blocking. + + + Gets the object used for buffer management. + A pool of memory blocks used for buffer management. + + + Gets the used to execute callbacks and async continuations. + A that is used to execute callbacks and async continuations. + + + Gets the number of bytes in the when stops blocking. + The number of bytes in the when stops blocking. + + + Gets a value that determines if asynchronous callbacks and continuations should be executed on the they were captured on. This takes precedence over the schedulers specified in and . + + if asynchronous callbacks and continuations should be executed on the they were captured on; otherwise, . + + + Gets the used to execute callbacks and async continuations. + A object used to execute callbacks and async continuations. + + + Defines a class that provides access to a read side of pipe. + + + Initializes a new instance of the class. + + + Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed. + Marks the extent of the data that has been successfully processed. + + + Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed, read and examined. + Marks the extent of the data that has been successfully processed. + Marks the extent of the data that has been read and examined. + + + Returns a representation of the . + An optional flag that indicates whether disposing the returned leaves open () or completes (). + A stream that represents the . + + + Cancels to currently pending or if none is pending next call to , without completing the . + + + Signals to the producer that the consumer is done reading. + Optional indicating a failure that's causing the pipeline to complete. + + + Marks the current pipe reader instance as being complete, meaning no more data will be read from it. + An optional exception that indicates the failure that caused the reader to complete. + A value task that represents the asynchronous complete operation. + + + Asynchronously reads the bytes from the and writes them to the specified , using a specified buffer size and cancellation token. + The pipe writer to which the contents of the current stream will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Asynchronously reads the bytes from the and writes them to the specified stream, using a specified cancellation token. + The stream to which the contents of the current stream will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Creates a wrapping the specified . + The stream that the pipe reader will wrap. + The options to configure the pipe reader. + A that wraps the . + + + Registers a callback that executes when the side of the pipe is completed. + The callback to register. + The state object to pass to when it's invoked. + + + Asynchronously reads a sequence of bytes from the current . + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous read operation. + + + Attempts to synchronously read data the . + When this method returns , this value is set to a instance that represents the result of the read call; otherwise, this value is set to . + + if data was available, or if the call was canceled or the writer was completed; otherwise, . + + + Abstraction for running and callbacks and continuations. + + + Initializes new a instance. + + + Requests to be run on scheduler with being passed in. + The single-parameter action delegate to schedule. + The parameter to pass to the delegate. + + + The implementation that runs callbacks inline. + A instance that runs callbacks inline. + + + The implementation that queues callbacks to the thread pool. + A instance that queues callbacks to the thread pool. + + + Defines a class that provides a pipeline to which data can be written. + + + Initializes a new instance of the class. + + + Notifies the that bytes were written to the output or . You must request a new buffer after calling to continue writing more data; you cannot write to a previously acquired buffer. + The number of bytes written to the or . + + + Returns a representation of the . + An optional flag that indicates whether disposing the returned leaves open () or completes (). + A stream that represents the . + + + Cancels the pending operation. If there is none, cancels next operation, without completing the . + + + Marks the as being complete, meaning no more items will be written to it. + Optional indicating a failure that's causing the pipeline to complete. + + + Marks the current pipe writer instance as being complete, meaning no more data will be written to it. + An optional exception that indicates the failure that caused the pipeline to complete. + A value task that represents the asynchronous complete operation. + + + Asynchronously reads the bytes from the specified stream and writes them to the . + The stream from which the contents will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Creates a wrapping the specified . + The stream that the pipe writer will wrap. + The options to configure the pipe writer. + A that wraps the . + + + Makes bytes written available to and runs continuation. + The token to monitor for cancellation requests. The default value is . + A task that represents and wraps the asynchronous flush operation. + + + Returns a to write to that is at least the requested size, as specified by the parameter. + The minimum length of the returned . If 0, a non-empty memory buffer of arbitrary size is returned. + The requested buffer size is not available. + A memory buffer of at least bytes. If is 0, returns a non-empty buffer of arbitrary size. + + + Returns a to write to that is at least the requested size, as specified by the parameter. + The minimum length of the returned . If 0, a non-empty buffer of arbitrary size is returned. + The requested buffer size is not available. + A buffer of at least bytes. If is 0, returns a non-empty buffer of arbitrary size. + + + Registers a callback that executes when the side of the pipe is completed. + The callback to register. + The state object to pass to when it's invoked. + + + Writes the specified byte memory range to the pipe and makes data accessible to the . + The read-only byte memory region to write. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous write operation, and wraps the flush asynchronous operation. + + + Represents the result of a call. + + + Creates a new instance of setting and flags. + The read-only sequence containing the bytes of data that were read in the call. + A flag that indicates if the operation that produced this was canceled by . + A flag that indicates whether the end of the data stream has been reached. + + + Gets the that was read. + A read-only sequence containing the bytes of data that were read in the call. + + + Gets a value that indicates whether the current operation was canceled. + + if the operation that produced this was canceled by ; otherwise, . + + + Gets a value that indicates whether the end of the data stream has been reached. + + if the end of the data stream has been reached; otherwise, . + + + Provides extension methods for that support read and write operations directly into pipes. + + + Asynchronously reads the bytes from the and writes them to the specified , using a cancellation token. + The stream from which the contents of the current stream will be copied. + The writer to which the contents of the source stream will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Represents a set of options for controlling the creation of the . + + + Initializes a instance, optionally specifying a memory pool, a minimum buffer size, a minimum read size, and whether the underlying stream should be left open after the completes. + The memory pool to use when allocating memory. The default value is . + The minimum buffer size to use when renting memory from the . The default value is 4096. + The threshold of remaining bytes in the buffer before a new buffer is allocated. The default value is 1024. + + to leave the underlying stream open after the completes; to close it. The default is . + + + Gets the minimum buffer size to use when renting memory from the . + The buffer size. + + + Gets the value that indicates if the underlying stream should be left open after the completes. + + if the underlying stream should be left open after the completes; otherwise, . + + + Gets the threshold of remaining bytes in the buffer before a new buffer is allocated. + The minimum read size. + + + Gets the to use when allocating memory. + A memory pool instance. + + + Represents a set of options for controlling the creation of the . + + + Initializes a instance, optionally specifying a memory pool, a minimum buffer size, and whether the underlying stream should be left open after the completes. + The memory pool to use when allocating memory. The default value is . + The minimum buffer size to use when renting memory from the . The default value is 4096. + + to leave the underlying stream open after the completes; to close it. The default is . + + + Gets the value that indicates if the underlying stream should be left open after the completes. + + if the underlying stream should be left open after the completes; otherwise, . + + + Gets the minimum buffer size to use when renting memory from the . + An integer representing the minimum buffer size. + + + Gets the to use when allocating memory. + A memory pool instance. + + + \ No newline at end of file diff --git a/packages/System.IO.Pipelines.5.0.1/lib/netstandard1.3/System.IO.Pipelines.dll b/packages/System.IO.Pipelines.5.0.1/lib/netstandard1.3/System.IO.Pipelines.dll new file mode 100644 index 0000000..5f184ff Binary files /dev/null and b/packages/System.IO.Pipelines.5.0.1/lib/netstandard1.3/System.IO.Pipelines.dll differ diff --git a/packages/System.IO.Pipelines.5.0.1/lib/netstandard1.3/System.IO.Pipelines.xml b/packages/System.IO.Pipelines.5.0.1/lib/netstandard1.3/System.IO.Pipelines.xml new file mode 100644 index 0000000..4fb5908 --- /dev/null +++ b/packages/System.IO.Pipelines.5.0.1/lib/netstandard1.3/System.IO.Pipelines.xml @@ -0,0 +1,304 @@ + + + + System.IO.Pipelines + + + + + The Start represents the offset into AvailableMemory where the range of "active" bytes begins. At the point when the block is leased + the Start is guaranteed to be equal to 0. The value of Start may be assigned anywhere between 0 and + AvailableMemory.Length, and must be equal to or less than End. + + + + + The End represents the offset into AvailableMemory where the range of "active" bytes ends. At the point when the block is leased + the End is guaranteed to be equal to Start. The value of Start may be assigned anywhere between 0 and + Buffer.Length, and must be equal to or less than End. + + + + + Reference to the next block of data when the overall "active" bytes spans multiple blocks. At the point when the block is + leased Next is guaranteed to be null. Start, End, and Next are used together in order to create a linked-list of discontiguous + working memory. The "active" memory is grown when bytes are copied in, End is increased, and Next is assigned. The "active" + memory is shrunk when bytes are consumed, Start is increased, and blocks are returned to the pool. + + + + + If true, data should not be written into the backing block after the End offset. Data between start and end should never be modified + since this would break cloning. + + + + + The amount of writable bytes in this segment. It is the amount of bytes between Length and End + + + + + Result returned by call + + + + + Creates a new instance of setting and flags + + + + + True if the current operation was canceled, otherwise false. + + + + + True if the is complete otherwise false + + + + + Defines a class that provides a duplex pipe from which data can be read from and written to. + + + + + Gets the half of the duplex pipe. + + + + + Gets the half of the duplex pipe. + + + + + Default and implementation. + + + Default and implementation. + + + Default and implementation. + + + + + Initializes the using as options. + + + + + Initializes the with the specified . + + + + + Gets the for this pipe. + + + + + Gets the for this pipe. + + + + + Resets the pipe + + + + + Represents a set of options + + + + + Default instance of + + + + + Creates a new instance of + + + + + Gets a value that determines if asynchronous callbacks should be executed on the they were captured on. + This takes precedence over the schedulers specified in and . + + + + + Gets amount of bytes in when starts blocking + + + + + Gets amount of bytes in when stops blocking + + + + + Gets minimum size of segment requested from + + + + + Gets the used to execute callbacks + + + + + Gets the used to execute callbacks + + + + + Gets the instances used for buffer management + + + + + Defines a class that provides access to a read side of pipe. + + + + + Attempt to synchronously read data the . + + The + True if data was available, or if the call was canceled or the writer was completed. + If the pipe returns false, there's no need to call . + + + + Asynchronously reads a sequence of bytes from the current . + + A representing the asynchronous read operation. + + + + Moves forward the pipeline's read cursor to after the consumed data. + + Marks the extent of the data that has been successfully processed. + + The memory for the consumed data will be released and no longer available. + The examined data communicates to the pipeline when it should signal more data is available. + + + + + Moves forward the pipeline's read cursor to after the consumed data. + + Marks the extent of the data that has been successfully processed. + Marks the extent of the data that has been read and examined. + + The memory for the consumed data will be released and no longer available. + The examined data communicates to the pipeline when it should signal more data is available. + + + + + Cancel to currently pending or if none is pending next call to , without completing the . + + + + + Signal to the producer that the consumer is done reading. + + Optional indicating a failure that's causing the pipeline to complete. + + + + Cancel the pending operation. If there is none, cancels next operation, without completing the . + + + + + Abstraction for running and callbacks and continuations + + + + + The implementation that queues callbacks to thread pool + + + + + The implementation that runs callbacks inline + + + + + Requests to be run on scheduler with being passed in + + + + + Defines a class that provides a pipeline to which data can be written. + + + + + Marks the as being complete, meaning no more items will be written to it. + + Optional indicating a failure that's causing the pipeline to complete. + + + + Cancel the pending operation. If there is none, cancels next operation, without completing the . + + + + + Registers a callback that gets executed when the side of the pipe is completed + + + + + Makes bytes written available to and runs continuation. + + + + + + + + + + + + + + Writes to the pipe and makes data accessible to + + + + + The result of a call. + + + + + Creates a new instance of setting and flags + + + + + The that was read + + + + + True if the current operation was canceled, otherwise false. + + + + + True if the is complete + + + + diff --git a/packages/System.IO.Pipelines.5.0.1/lib/netstandard2.0/System.IO.Pipelines.dll b/packages/System.IO.Pipelines.5.0.1/lib/netstandard2.0/System.IO.Pipelines.dll new file mode 100644 index 0000000..7d8b277 Binary files /dev/null and b/packages/System.IO.Pipelines.5.0.1/lib/netstandard2.0/System.IO.Pipelines.dll differ diff --git a/packages/System.IO.Pipelines.5.0.1/lib/netstandard2.0/System.IO.Pipelines.xml b/packages/System.IO.Pipelines.5.0.1/lib/netstandard2.0/System.IO.Pipelines.xml new file mode 100644 index 0000000..c6f2b61 --- /dev/null +++ b/packages/System.IO.Pipelines.5.0.1/lib/netstandard2.0/System.IO.Pipelines.xml @@ -0,0 +1,341 @@ + + + + System.IO.Pipelines + + + + Result returned by call. + + + Initializes a new instance of struct setting the and flags. + + to indicate the current operation that produced this was canceled by ; otherwise, . + + to indicate the reader is no longer reading data written to the . + + + Gets a value that indicates whether the current operation was canceled. + + if the current operation was canceled; otherwise, . + + + Gets a value that indicates the reader is no longer reading data written to the . + + if the reader is no longer reading data written to the ; otherwise, . + + + Defines a class that provides a duplex pipe from which data can be read from and written to. + + + Gets the half of the duplex pipe. + + + Gets the half of the duplex pipe. + + + The default and implementation. + + + Initializes a new instance of the class using as options. + + + Initializes a new instance of the class with the specified options. + The set of options for this pipe. + + + Resets the pipe. + + + Gets the for this pipe. + A instance for this pipe. + + + Gets the for this pipe. + A instance for this pipe. + + + Represents a set of options. + + + Initializes a new instance of the class with the specified parameters. + The pool of memory blocks to be used for buffer management. + The to be used to execute callbacks and async continuations. + The used to execute callbacks and async continuations. + The number of bytes in the before starts blocking. A value of zero prevents from ever blocking, effectively making the number of bytes in the unlimited. + The number of bytes in the when stops blocking. + The minimum size of the segment requested from . + + if asynchronous continuations should be executed on the they were captured on; otherwise. This takes precedence over the schedulers specified in and . + + + Gets the default instance of . + A object initialized with default parameters. + + + Gets the minimum size of the segment requested from the . + The minimum size of the segment requested from the . + + + Gets the number of bytes in the when starts blocking. + The number of bytes in the when starts blocking. + + + Gets the object used for buffer management. + A pool of memory blocks used for buffer management. + + + Gets the used to execute callbacks and async continuations. + A that is used to execute callbacks and async continuations. + + + Gets the number of bytes in the when stops blocking. + The number of bytes in the when stops blocking. + + + Gets a value that determines if asynchronous callbacks and continuations should be executed on the they were captured on. This takes precedence over the schedulers specified in and . + + if asynchronous callbacks and continuations should be executed on the they were captured on; otherwise, . + + + Gets the used to execute callbacks and async continuations. + A object used to execute callbacks and async continuations. + + + Defines a class that provides access to a read side of pipe. + + + Initializes a new instance of the class. + + + Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed. + Marks the extent of the data that has been successfully processed. + + + Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed, read and examined. + Marks the extent of the data that has been successfully processed. + Marks the extent of the data that has been read and examined. + + + Returns a representation of the . + An optional flag that indicates whether disposing the returned leaves open () or completes (). + A stream that represents the . + + + Cancels to currently pending or if none is pending next call to , without completing the . + + + Signals to the producer that the consumer is done reading. + Optional indicating a failure that's causing the pipeline to complete. + + + Marks the current pipe reader instance as being complete, meaning no more data will be read from it. + An optional exception that indicates the failure that caused the reader to complete. + A value task that represents the asynchronous complete operation. + + + Asynchronously reads the bytes from the and writes them to the specified , using a specified buffer size and cancellation token. + The pipe writer to which the contents of the current stream will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Asynchronously reads the bytes from the and writes them to the specified stream, using a specified cancellation token. + The stream to which the contents of the current stream will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Creates a wrapping the specified . + The stream that the pipe reader will wrap. + The options to configure the pipe reader. + A that wraps the . + + + Registers a callback that executes when the side of the pipe is completed. + The callback to register. + The state object to pass to when it's invoked. + + + Asynchronously reads a sequence of bytes from the current . + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous read operation. + + + Attempts to synchronously read data the . + When this method returns , this value is set to a instance that represents the result of the read call; otherwise, this value is set to . + + if data was available, or if the call was canceled or the writer was completed; otherwise, . + + + Abstraction for running and callbacks and continuations. + + + Initializes new a instance. + + + Requests to be run on scheduler with being passed in. + The single-parameter action delegate to schedule. + The parameter to pass to the delegate. + + + The implementation that runs callbacks inline. + A instance that runs callbacks inline. + + + The implementation that queues callbacks to the thread pool. + A instance that queues callbacks to the thread pool. + + + Defines a class that provides a pipeline to which data can be written. + + + Initializes a new instance of the class. + + + Notifies the that bytes were written to the output or . You must request a new buffer after calling to continue writing more data; you cannot write to a previously acquired buffer. + The number of bytes written to the or . + + + Returns a representation of the . + An optional flag that indicates whether disposing the returned leaves open () or completes (). + A stream that represents the . + + + Cancels the pending operation. If there is none, cancels next operation, without completing the . + + + Marks the as being complete, meaning no more items will be written to it. + Optional indicating a failure that's causing the pipeline to complete. + + + Marks the current pipe writer instance as being complete, meaning no more data will be written to it. + An optional exception that indicates the failure that caused the pipeline to complete. + A value task that represents the asynchronous complete operation. + + + Asynchronously reads the bytes from the specified stream and writes them to the . + The stream from which the contents will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Creates a wrapping the specified . + The stream that the pipe writer will wrap. + The options to configure the pipe writer. + A that wraps the . + + + Makes bytes written available to and runs continuation. + The token to monitor for cancellation requests. The default value is . + A task that represents and wraps the asynchronous flush operation. + + + Returns a to write to that is at least the requested size, as specified by the parameter. + The minimum length of the returned . If 0, a non-empty memory buffer of arbitrary size is returned. + The requested buffer size is not available. + A memory buffer of at least bytes. If is 0, returns a non-empty buffer of arbitrary size. + + + Returns a to write to that is at least the requested size, as specified by the parameter. + The minimum length of the returned . If 0, a non-empty buffer of arbitrary size is returned. + The requested buffer size is not available. + A buffer of at least bytes. If is 0, returns a non-empty buffer of arbitrary size. + + + Registers a callback that executes when the side of the pipe is completed. + The callback to register. + The state object to pass to when it's invoked. + + + Writes the specified byte memory range to the pipe and makes data accessible to the . + The read-only byte memory region to write. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous write operation, and wraps the flush asynchronous operation. + + + Represents the result of a call. + + + Creates a new instance of setting and flags. + The read-only sequence containing the bytes of data that were read in the call. + A flag that indicates if the operation that produced this was canceled by . + A flag that indicates whether the end of the data stream has been reached. + + + Gets the that was read. + A read-only sequence containing the bytes of data that were read in the call. + + + Gets a value that indicates whether the current operation was canceled. + + if the operation that produced this was canceled by ; otherwise, . + + + Gets a value that indicates whether the end of the data stream has been reached. + + if the end of the data stream has been reached; otherwise, . + + + Provides extension methods for that support read and write operations directly into pipes. + + + Asynchronously reads the bytes from the and writes them to the specified , using a cancellation token. + The stream from which the contents of the current stream will be copied. + The writer to which the contents of the source stream will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Represents a set of options for controlling the creation of the . + + + Initializes a instance, optionally specifying a memory pool, a minimum buffer size, a minimum read size, and whether the underlying stream should be left open after the completes. + The memory pool to use when allocating memory. The default value is . + The minimum buffer size to use when renting memory from the . The default value is 4096. + The threshold of remaining bytes in the buffer before a new buffer is allocated. The default value is 1024. + + to leave the underlying stream open after the completes; to close it. The default is . + + + Gets the minimum buffer size to use when renting memory from the . + The buffer size. + + + Gets the value that indicates if the underlying stream should be left open after the completes. + + if the underlying stream should be left open after the completes; otherwise, . + + + Gets the threshold of remaining bytes in the buffer before a new buffer is allocated. + The minimum read size. + + + Gets the to use when allocating memory. + A memory pool instance. + + + Represents a set of options for controlling the creation of the . + + + Initializes a instance, optionally specifying a memory pool, a minimum buffer size, and whether the underlying stream should be left open after the completes. + The memory pool to use when allocating memory. The default value is . + The minimum buffer size to use when renting memory from the . The default value is 4096. + + to leave the underlying stream open after the completes; to close it. The default is . + + + Gets the value that indicates if the underlying stream should be left open after the completes. + + if the underlying stream should be left open after the completes; otherwise, . + + + Gets the minimum buffer size to use when renting memory from the . + An integer representing the minimum buffer size. + + + Gets the to use when allocating memory. + A memory pool instance. + + + \ No newline at end of file diff --git a/packages/System.IO.Pipelines.5.0.1/ref/netcoreapp2.0/System.IO.Pipelines.dll b/packages/System.IO.Pipelines.5.0.1/ref/netcoreapp2.0/System.IO.Pipelines.dll new file mode 100644 index 0000000..eb6ae7f Binary files /dev/null and b/packages/System.IO.Pipelines.5.0.1/ref/netcoreapp2.0/System.IO.Pipelines.dll differ diff --git a/packages/System.IO.Pipelines.5.0.1/ref/netcoreapp2.0/System.IO.Pipelines.xml b/packages/System.IO.Pipelines.5.0.1/ref/netcoreapp2.0/System.IO.Pipelines.xml new file mode 100644 index 0000000..c6f2b61 --- /dev/null +++ b/packages/System.IO.Pipelines.5.0.1/ref/netcoreapp2.0/System.IO.Pipelines.xml @@ -0,0 +1,341 @@ + + + + System.IO.Pipelines + + + + Result returned by call. + + + Initializes a new instance of struct setting the and flags. + + to indicate the current operation that produced this was canceled by ; otherwise, . + + to indicate the reader is no longer reading data written to the . + + + Gets a value that indicates whether the current operation was canceled. + + if the current operation was canceled; otherwise, . + + + Gets a value that indicates the reader is no longer reading data written to the . + + if the reader is no longer reading data written to the ; otherwise, . + + + Defines a class that provides a duplex pipe from which data can be read from and written to. + + + Gets the half of the duplex pipe. + + + Gets the half of the duplex pipe. + + + The default and implementation. + + + Initializes a new instance of the class using as options. + + + Initializes a new instance of the class with the specified options. + The set of options for this pipe. + + + Resets the pipe. + + + Gets the for this pipe. + A instance for this pipe. + + + Gets the for this pipe. + A instance for this pipe. + + + Represents a set of options. + + + Initializes a new instance of the class with the specified parameters. + The pool of memory blocks to be used for buffer management. + The to be used to execute callbacks and async continuations. + The used to execute callbacks and async continuations. + The number of bytes in the before starts blocking. A value of zero prevents from ever blocking, effectively making the number of bytes in the unlimited. + The number of bytes in the when stops blocking. + The minimum size of the segment requested from . + + if asynchronous continuations should be executed on the they were captured on; otherwise. This takes precedence over the schedulers specified in and . + + + Gets the default instance of . + A object initialized with default parameters. + + + Gets the minimum size of the segment requested from the . + The minimum size of the segment requested from the . + + + Gets the number of bytes in the when starts blocking. + The number of bytes in the when starts blocking. + + + Gets the object used for buffer management. + A pool of memory blocks used for buffer management. + + + Gets the used to execute callbacks and async continuations. + A that is used to execute callbacks and async continuations. + + + Gets the number of bytes in the when stops blocking. + The number of bytes in the when stops blocking. + + + Gets a value that determines if asynchronous callbacks and continuations should be executed on the they were captured on. This takes precedence over the schedulers specified in and . + + if asynchronous callbacks and continuations should be executed on the they were captured on; otherwise, . + + + Gets the used to execute callbacks and async continuations. + A object used to execute callbacks and async continuations. + + + Defines a class that provides access to a read side of pipe. + + + Initializes a new instance of the class. + + + Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed. + Marks the extent of the data that has been successfully processed. + + + Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed, read and examined. + Marks the extent of the data that has been successfully processed. + Marks the extent of the data that has been read and examined. + + + Returns a representation of the . + An optional flag that indicates whether disposing the returned leaves open () or completes (). + A stream that represents the . + + + Cancels to currently pending or if none is pending next call to , without completing the . + + + Signals to the producer that the consumer is done reading. + Optional indicating a failure that's causing the pipeline to complete. + + + Marks the current pipe reader instance as being complete, meaning no more data will be read from it. + An optional exception that indicates the failure that caused the reader to complete. + A value task that represents the asynchronous complete operation. + + + Asynchronously reads the bytes from the and writes them to the specified , using a specified buffer size and cancellation token. + The pipe writer to which the contents of the current stream will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Asynchronously reads the bytes from the and writes them to the specified stream, using a specified cancellation token. + The stream to which the contents of the current stream will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Creates a wrapping the specified . + The stream that the pipe reader will wrap. + The options to configure the pipe reader. + A that wraps the . + + + Registers a callback that executes when the side of the pipe is completed. + The callback to register. + The state object to pass to when it's invoked. + + + Asynchronously reads a sequence of bytes from the current . + The token to monitor for cancellation requests. The default value is . + A representing the asynchronous read operation. + + + Attempts to synchronously read data the . + When this method returns , this value is set to a instance that represents the result of the read call; otherwise, this value is set to . + + if data was available, or if the call was canceled or the writer was completed; otherwise, . + + + Abstraction for running and callbacks and continuations. + + + Initializes new a instance. + + + Requests to be run on scheduler with being passed in. + The single-parameter action delegate to schedule. + The parameter to pass to the delegate. + + + The implementation that runs callbacks inline. + A instance that runs callbacks inline. + + + The implementation that queues callbacks to the thread pool. + A instance that queues callbacks to the thread pool. + + + Defines a class that provides a pipeline to which data can be written. + + + Initializes a new instance of the class. + + + Notifies the that bytes were written to the output or . You must request a new buffer after calling to continue writing more data; you cannot write to a previously acquired buffer. + The number of bytes written to the or . + + + Returns a representation of the . + An optional flag that indicates whether disposing the returned leaves open () or completes (). + A stream that represents the . + + + Cancels the pending operation. If there is none, cancels next operation, without completing the . + + + Marks the as being complete, meaning no more items will be written to it. + Optional indicating a failure that's causing the pipeline to complete. + + + Marks the current pipe writer instance as being complete, meaning no more data will be written to it. + An optional exception that indicates the failure that caused the pipeline to complete. + A value task that represents the asynchronous complete operation. + + + Asynchronously reads the bytes from the specified stream and writes them to the . + The stream from which the contents will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Creates a wrapping the specified . + The stream that the pipe writer will wrap. + The options to configure the pipe writer. + A that wraps the . + + + Makes bytes written available to and runs continuation. + The token to monitor for cancellation requests. The default value is . + A task that represents and wraps the asynchronous flush operation. + + + Returns a to write to that is at least the requested size, as specified by the parameter. + The minimum length of the returned . If 0, a non-empty memory buffer of arbitrary size is returned. + The requested buffer size is not available. + A memory buffer of at least bytes. If is 0, returns a non-empty buffer of arbitrary size. + + + Returns a to write to that is at least the requested size, as specified by the parameter. + The minimum length of the returned . If 0, a non-empty buffer of arbitrary size is returned. + The requested buffer size is not available. + A buffer of at least bytes. If is 0, returns a non-empty buffer of arbitrary size. + + + Registers a callback that executes when the side of the pipe is completed. + The callback to register. + The state object to pass to when it's invoked. + + + Writes the specified byte memory range to the pipe and makes data accessible to the . + The read-only byte memory region to write. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous write operation, and wraps the flush asynchronous operation. + + + Represents the result of a call. + + + Creates a new instance of setting and flags. + The read-only sequence containing the bytes of data that were read in the call. + A flag that indicates if the operation that produced this was canceled by . + A flag that indicates whether the end of the data stream has been reached. + + + Gets the that was read. + A read-only sequence containing the bytes of data that were read in the call. + + + Gets a value that indicates whether the current operation was canceled. + + if the operation that produced this was canceled by ; otherwise, . + + + Gets a value that indicates whether the end of the data stream has been reached. + + if the end of the data stream has been reached; otherwise, . + + + Provides extension methods for that support read and write operations directly into pipes. + + + Asynchronously reads the bytes from the and writes them to the specified , using a cancellation token. + The stream from which the contents of the current stream will be copied. + The writer to which the contents of the source stream will be copied. + The token to monitor for cancellation requests. The default value is . + A task that represents the asynchronous copy operation. + + + Represents a set of options for controlling the creation of the . + + + Initializes a instance, optionally specifying a memory pool, a minimum buffer size, a minimum read size, and whether the underlying stream should be left open after the completes. + The memory pool to use when allocating memory. The default value is . + The minimum buffer size to use when renting memory from the . The default value is 4096. + The threshold of remaining bytes in the buffer before a new buffer is allocated. The default value is 1024. + + to leave the underlying stream open after the completes; to close it. The default is . + + + Gets the minimum buffer size to use when renting memory from the . + The buffer size. + + + Gets the value that indicates if the underlying stream should be left open after the completes. + + if the underlying stream should be left open after the completes; otherwise, . + + + Gets the threshold of remaining bytes in the buffer before a new buffer is allocated. + The minimum read size. + + + Gets the to use when allocating memory. + A memory pool instance. + + + Represents a set of options for controlling the creation of the . + + + Initializes a instance, optionally specifying a memory pool, a minimum buffer size, and whether the underlying stream should be left open after the completes. + The memory pool to use when allocating memory. The default value is . + The minimum buffer size to use when renting memory from the . The default value is 4096. + + to leave the underlying stream open after the completes; to close it. The default is . + + + Gets the value that indicates if the underlying stream should be left open after the completes. + + if the underlying stream should be left open after the completes; otherwise, . + + + Gets the minimum buffer size to use when renting memory from the . + An integer representing the minimum buffer size. + + + Gets the to use when allocating memory. + A memory pool instance. + + + \ No newline at end of file diff --git a/packages/System.IO.Pipelines.5.0.1/useSharedDesignerContext.txt b/packages/System.IO.Pipelines.5.0.1/useSharedDesignerContext.txt new file mode 100644 index 0000000..e69de29 diff --git a/packages/System.IO.Pipelines.5.0.1/version.txt b/packages/System.IO.Pipelines.5.0.1/version.txt new file mode 100644 index 0000000..3c5a373 --- /dev/null +++ b/packages/System.IO.Pipelines.5.0.1/version.txt @@ -0,0 +1 @@ +b02e13abab3d6f499751af2ad1ae6333fb4e633d