Switch branches/tags
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
..
Failed to load latest commit information.
.gitignore Revert "Revert "Revert "Merge""" Jul 8, 2013
AssemblyInfo.cs More using cleanup Nov 26, 2010
Makefile Updates to support building the BCL using Visual Studio 2017 on windo… Feb 22, 2018
NOTES Add notes Dec 12, 2002
README Merge compiler docs Jun 8, 2012
anonymous.cs [mcs] Fixes codegen for type pattern matching in probing expressions … Aug 4, 2017
argument.cs [mcs] Add parsing for readonly argument modifier Jul 17, 2018
assembly.cs [mcs] Mimic csc behaviour when attribute value is a typedef and add a… May 3, 2018
assign.cs [mcs] Implements 7.2 stackalloc to Span assignment conversion. Jan 2, 2018
async.cs [mcs] Implements C# 7.0 Generalized async return types Dec 22, 2017
attribute.cs [mcs] Mimic csc behaviour when attribute value is a typedef and add a… May 3, 2018
cfold.cs [mcs] Constant folding of enum constant and literal was using wrong o… Jun 1, 2017
class.cs [mcs] Mimic csc behaviour when attribute value is a typedef and add a… May 3, 2018
codegen.cs [mcs] Add codegen for null operator on result of awaited instance exp… Feb 21, 2017
complete.cs [mcs] Use probing like aproach for member access completion Jan 15, 2016
const.cs [mcs] Implements C#7.1 default literal Nov 29, 2017
constant.cs [mcs] Use InvariantCulture for GetValueAsLiteral() in constant.cs Oct 17, 2016
context.cs [mcs] C#7 type pattern matching Jun 11, 2017
convert.cs [mcs] Adds missing default literal conversion test in probing code path Jan 19, 2018
cs-parser.jay [mcs] Don't wrap exception expression in contextual return. Fixes #9505 Jul 23, 2018
cs-tokenizer.cs [mcs] Adds parser support for C# 7.2 readonly references May 24, 2018
decl.cs [mcs] C# 7 tuple (foundation only). Jun 30, 2017
delegate.cs [mcs] Adds parser support for readonly ref syntax Dec 21, 2017
doc-bootstrap.cs [mcs] Replace NET_2_1 by MOBILE Aug 18, 2016
doc.cs [mcs] Avoid agressive generic members inflation from using static. Fi… Aug 16, 2016
driver.cs [mcs] extend API for loading types and consuming source file from a s… May 22, 2017
dynamic.cs [mcs] C# 7.2 non-trailing named arguments Jan 15, 2018
ecore.cs [mcs] Fixes codegen when probing reference type expression is known t… Apr 6, 2018
enum.cs [mcs] Another workaround for enum builder SRE crash (this time on Mono) Jul 27, 2017
eval.cs [mcs] Adds workaround for compiled enum types used as fields of other… Oct 10, 2017
expression.cs [mcs] Implements awaited expression check for indirections Jul 11, 2018
field.cs [mcs] Mimic csc behaviour when attribute value is a typedef and add a… May 3, 2018
flowanalysis.cs [mcs] Cached labels definite assignment check does not need exact mat… Aug 4, 2015
generic.cs [mcs] Updates common array bounds unification to use universal type c… Mar 28, 2018
ikvm.cs [bcl] Add .NET 4.7.1 reference assemblies (#5974) Nov 9, 2017
import.cs [mcs] Implements C# 7.0 Generalized async return types Dec 22, 2017
iterators.cs [mcs] Initial by ref returns and variables support Oct 2, 2017
lambda.cs [mcs] Initial by ref returns and variables support Oct 2, 2017
linq.cs [mcs] C#7 out variable declaration Jun 7, 2017
literal.cs Error reporting improvements Apr 3, 2013
location.cs [mcs] extend API for loading types and consuming source file from a s… May 22, 2017
mcs-simple.csproj [mcs] Clean up mcs project files Apr 4, 2018
mcs.csproj Move to generating msbuild choose elements to get if-else selection b… Aug 9, 2018
mcs.exe.sources [mcs] C# 7 tuple (foundation only). Jun 30, 2017
mcs.sln Inlcude leading dot in constant ParsedValue Jan 16, 2012
membercache.cs [mcs] Fixes assumption that string class has no implicit/explicit con… Jan 19, 2018
method.cs [mcs] Implements C# 7.0 Generalized async return types Dec 22, 2017
modifiers.cs [mcs] Adds private protected modifier to the parser only Apr 9, 2018
module.cs [mcs] Mimic csc behaviour when attribute value is a typedef and add a… May 3, 2018
namespace.cs [mcs] Moves using static lookup at the end of simple name lookup rule… Jun 1, 2017
nullable.cs [mcs] C#7 throw expression Jun 5, 2017
parameter.cs [mcs] Adds parser support for C# 7.2 readonly references May 24, 2018
pending.cs [mcs] Initial by ref returns and variables support Oct 2, 2017
property.cs [mcs] Implements C# 7.2 readonly structs Oct 3, 2017
reflection.cs [Microsoft.CSharp] Tweaks 76f97e3 to not call new API from Microsoft.… Dec 12, 2016
repl.txt Merge compiler docs Jun 8, 2012
report.cs [mcs] Implements C# 7.3 extensible fixed statement Jun 27, 2018
settings.cs [mcs] Implements C# 7.3 extensible fixed statement Jun 27, 2018
statement.cs [mcs] Don't wrap exception expression in contextual return. Fixes #9505 Jul 23, 2018
support.cs [mcs] extend API for loading types and consuming source file from a s… May 22, 2017
tuples.cs [mcs] Adds cloning for TupleLiteralElement expressions (#7746) Mar 21, 2018
typemanager.cs [mcs] Implements 7.2 stackalloc to Span assignment conversion. Jan 2, 2018
typespec.cs [mcs] Implements C# 7.0 discards Jan 17, 2018
visit.cs Update ast visitor Jul 3, 2013

README

These are the sources to the Mono C# compiler 
---------------------------------------------

	Read the mcs/docs/compiler.txt for an overview of the compiler.

Testing the Compiler
--------------------

	You might want to use the `make btest' in this directory to 
	have the compiler bootstrap itself, this is the basic regression
	test.

	Before commiting changes to MCS, make sure that all the tests
	in `mcs/tests' pass, and all the tests in 'mcs/errors' have the
	expected result, type:

	  cd mcs		# The top-level 'mcs' directory
	  make compiler-tests

	If you want to test the installed compiler, you can run:

	  cd mcs		# The top-level 'mcs' directory
	  make test-installed-compiler

Full Bootstrap
==============

	To finally ensure the state of the compiler, it is ideal to do
	a full bootstrap, to do this, do:

		cd mcs
		make clean;
		make
		make install

	That installs the compiler and assemblies compiled by the new compiler.

	Then, repeat that step again:

		make clean
		make

	If things work, the compiler has not added a new regression
	while building the mscorlib and the compiler itself.

Tests
=====

	When bugs are fixed, new tests must be added to the
	`mcs/tests' directory to excercise the problem and to guarantee
	that we keep the compiler in a good state.

	When an error is reported, it should be added to mcs/errors.

	We try to make the errors numbers be the same as the ones in
	Microsoft C#, if this is not possible, allocate a negative error
	number, and list it in mcs/errors/errors.txt