Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FI from master to features/DefaultInterfaceImplementation #17900

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
7d4f3a0
Public API Changes
Feb 13, 2017
12f88a5
Fix tests
Feb 13, 2017
e24b1fa
Tests for parse options
Feb 16, 2017
c67bd7b
Tests for command line and API compilations
Feb 16, 2017
e2646d8
Clean up
Feb 16, 2017
716be0e
Moving the Jenkins jobs to the VS2017 RTW image.
tannergooding Mar 8, 2017
f5286b0
PR Feedback
Mar 8, 2017
ae966dc
Revert "Fix Watson Bug" as exceptions are not thrown from parse options
Mar 10, 2017
0d85fb3
Fix issue where we could not goto-def on a generic instantiation.
CyrusNajmabadi Mar 10, 2017
aeffea0
Skip filtering SigHelp items if there is another request later in the…
CyrusNajmabadi Mar 13, 2017
a3d9516
Cleanup code.
CyrusNajmabadi Mar 13, 2017
6c5faa6
Only filter if it's a retrigger command.
CyrusNajmabadi Mar 13, 2017
06c44db
Add comment.
CyrusNajmabadi Mar 13, 2017
62c52f7
If we canceled because of filtering, don't cancel signature help alto…
CyrusNajmabadi Mar 13, 2017
7173a9b
Extract method.
CyrusNajmabadi Mar 13, 2017
7966b8c
Simplify code.
CyrusNajmabadi Mar 13, 2017
284ede6
Simplify code.
CyrusNajmabadi Mar 13, 2017
e9c10f4
Only filter if this is a simple retrigger command. We don't want to …
CyrusNajmabadi Mar 13, 2017
f16504b
Merge pull request #17664 from tannergooding/jenkins
tannergooding Mar 13, 2017
b2defb0
Update the Roslyn package version to 2.0.1
jasonmalinowski Mar 13, 2017
18809c8
Unify code between C# and VB.
CyrusNajmabadi Mar 14, 2017
ea46972
PR feedback.
CyrusNajmabadi Mar 14, 2017
207a343
Merge branch 'master' into unifyCode
CyrusNajmabadi Mar 14, 2017
3f91c08
Move methods.
CyrusNajmabadi Mar 14, 2017
3cd5672
Merge pull request #17793 from jasonmalinowski/bump-patch-version
jasonmalinowski Mar 14, 2017
f1ae59b
Don't offer 'use collection initializer' if the collection being init…
CyrusNajmabadi Mar 14, 2017
c3b32fd
Use the right matcher.
CyrusNajmabadi Mar 14, 2017
80cc1fe
Ensure LanguageParser.ParseStatement doesn’t return null.
AlekseyTs Mar 13, 2017
89d94a2
check remote host being available.
heejaechang Mar 14, 2017
b553bbb
Use PdbToXml from Microsoft.DiaSymReader.Converter.Xml
tmat Mar 14, 2017
567abe2
Fix order in Depeendencies.props
tmat Mar 14, 2017
a31f691
Fix sign data and insertion files
tmat Mar 14, 2017
58ff34c
Merge branch 'dev15.1.x' into merges/dev15.0.x-to-dev15.1.x-20170314-…
CyrusNajmabadi Mar 14, 2017
d6939b0
renamed GetRemoteHostClientAsync to TryRemoteHostClientAsync to make …
heejaechang Mar 14, 2017
06139c4
Addressed PR comments
Mar 13, 2017
2a1d047
Merge remote-tracking branch 'upstream/master' into unifyCode
CyrusNajmabadi Mar 14, 2017
4136f02
PR feedback.
CyrusNajmabadi Mar 14, 2017
2058387
Merge pull request #17824 from CyrusNajmabadi/unifyCode
CyrusNajmabadi Mar 14, 2017
3969f68
Merge pull request #17113 from OmarTawfik/fix-15900-add-diagnostics-t…
OmarTawfik Mar 14, 2017
c59e62a
Update VSLangProj in Open to 7.0.3300 (#17852)
jcouv Mar 14, 2017
9d77278
Add helper methods to Verify operation tree for annonated text within…
mavasani Mar 14, 2017
a192dc6
Requiring semicolon after embedded statements (#17668)
ivanbasov Mar 14, 2017
69cd5f6
Merge pull request #17830 from dotnet/merges/dev15.0.x-to-dev15.1.x-2…
CyrusNajmabadi Mar 14, 2017
ab27937
Report all invalid preprocessor symbols in diagnostics
Feb 9, 2017
ea0043b
Merge pull request #17825 from CyrusNajmabadi/noCollectionInitializer…
CyrusNajmabadi Mar 14, 2017
bd75339
Merge pull request #17770 from tmat/pdbxml
tmat Mar 14, 2017
7cf1126
Don't offer to transform object creation expressions that are assigne…
CyrusNajmabadi Mar 14, 2017
5f1130c
Merge pull request #17050 from OmarTawfik/fix-16913-report-multiple-d…
OmarTawfik Mar 14, 2017
b9cc782
Fix a break in perf runs
jaredpar Mar 14, 2017
15ba5d4
Merge pull request #17835 from heejaechang/remoteNullException
heejaechang Mar 14, 2017
cb01f0b
Address PR feedback and add comment
mavasani Mar 14, 2017
9e24484
Fix console output
jaredpar Mar 14, 2017
6a0995e
Update script.
CyrusNajmabadi Mar 14, 2017
7770c87
Merge pull request #17772 from CyrusNajmabadi/signatureHelpFiltering
CyrusNajmabadi Mar 14, 2017
c14f4b4
Merge pull request #17860 from CyrusNajmabadi/noConversionForDynamic
CyrusNajmabadi Mar 14, 2017
339fc32
Merge pull request #17855 from jaredpar/fix-perf
jaredpar Mar 15, 2017
76fe2a6
Merge pull request #17725 from CyrusNajmabadi/navToGenericInstantiation
CyrusNajmabadi Mar 15, 2017
715e6d7
Don't assert for OperationKind.None in OperationTreeVerifier
mavasani Mar 15, 2017
c950069
Merge pull request #17856 from mavasani/IOperationUnitTestGenerator
mavasani Mar 15, 2017
193221e
VB parameter lists can be missing. Be resilient to that.
CyrusNajmabadi Mar 15, 2017
5c1c712
Merge pull request #17867 from CyrusNajmabadi/updateScriptDev151x
CyrusNajmabadi Mar 15, 2017
421fcd7
Disabling flakey test.
CyrusNajmabadi Mar 15, 2017
a3a382b
UpgradeProject code fixer for C# (#17435)
jcouv Mar 15, 2017
a999749
Disable another test.
CyrusNajmabadi Mar 15, 2017
e99baa7
Merge pull request #17870 from CyrusNajmabadi/disableTest
CyrusNajmabadi Mar 15, 2017
fc0ad38
Merge pull request #17875 from dotnet/merges/dev15.1.x-to-master-2017…
CyrusNajmabadi Mar 15, 2017
1102ba5
Merge pull request #17868 from CyrusNajmabadi/missingParameterList
CyrusNajmabadi Mar 15, 2017
c564cdf
Use Microsoft.DiaSymReader.Converter.Xml 1.0.0-beta1-61515-01 - with …
tmat Mar 15, 2017
96e59f0
Merge pull request #17882 from tmat/SignedConvXml
tmat Mar 15, 2017
a4191ef
Merge pull request #17827 from AlekseyTs/Issue17458_2
AlekseyTs Mar 15, 2017
0bb7894
Refine syntax error recovery for partial code to not interfere with n…
gafter Mar 15, 2017
b5dbed0
add regression test for WithDocumentationMode (#17803)
TyOverby Mar 15, 2017
fab31e5
Add C# 7.1 version to compiler
Mar 15, 2017
4b6bb0c
Merge pull request #17894 from OmarTawfik/fix-17173-add-7.1-to-master
OmarTawfik Mar 15, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions NuGet.Config
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
<add key="dotnet.myget.org dotnet-buildtools" value="https://dotnet.myget.org/F/dotnet-buildtools/api/v3/index.json" />
<add key="dotnet.myget.org symreader" value="https://dotnet.myget.org/F/symreader/api/v3/index.json" />
<add key="dotnet.myget.org symreader-portable" value="https://dotnet.myget.org/F/symreader-portable/api/v3/index.json" />
<add key="dotnet.myget.org symreader-converter" value="https://dotnet.myget.org/F/symreader-converter/api/v3/index.json" />
<add key="dotnet.myget.org interactive-window" value="https://dotnet.myget.org/F/interactive-window/api/v3/index.json" />
<add key="dotnet.myget.org roslyn-master-nightly" value="https://dotnet.myget.org/F/roslyn-master-nightly/api/v3/index.json" />
<add key="dotnet.myget.org devcore" value="https://www.myget.org/F/vs-devcore/api/v3/index.json" />
Expand Down
9 changes: 1 addition & 8 deletions Roslyn.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.25920.0
VisualStudioVersion = 15.0.26228.4
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodeAnalysisTest", "src\Compilers\Core\CodeAnalysisTest\CodeAnalysisTest.csproj", "{A4C99B85-765C-4C65-9C2A-BB609AAB09E6}"
EndProject
Expand Down Expand Up @@ -235,8 +235,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResultProvider.Portable", "
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "vbc", "src\Compilers\VisualBasic\vbc\vbc.csproj", "{E58EE9D7-1239-4961-A0C1-F9EC3952C4C1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pdb2Xml", "src\Tools\Source\Pdb2Xml\Pdb2Xml.csproj", "{CF450DCE-D12B-4A11-8D2D-A7A125372C48}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Setup", "Setup", "{19148439-436F-4CDA-B493-70AF4FFC13E9}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Features", "Features", "{2491A9B9-C0A8-49EE-9077-A32DE76E1E94}"
Expand Down Expand Up @@ -792,10 +790,6 @@ Global
{E58EE9D7-1239-4961-A0C1-F9EC3952C4C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E58EE9D7-1239-4961-A0C1-F9EC3952C4C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E58EE9D7-1239-4961-A0C1-F9EC3952C4C1}.Release|Any CPU.Build.0 = Release|Any CPU
{CF450DCE-D12B-4A11-8D2D-A7A125372C48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CF450DCE-D12B-4A11-8D2D-A7A125372C48}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CF450DCE-D12B-4A11-8D2D-A7A125372C48}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CF450DCE-D12B-4A11-8D2D-A7A125372C48}.Release|Any CPU.Build.0 = Release|Any CPU
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E3CD2895-76A8-4D11-A316-EA67CB5EA42C}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down Expand Up @@ -1096,7 +1090,6 @@ Global
{BEDC5A4A-809E-4017-9CFD-6C8D4E1847F0} = {998CAFE8-06E4-4683-A151-0F6AA4BFF6C6}
{FA0E905D-EC46-466D-B7B2-3B5557F9428C} = {998CAFE8-06E4-4683-A151-0F6AA4BFF6C6}
{E58EE9D7-1239-4961-A0C1-F9EC3952C4C1} = {C65C6143-BED3-46E6-869E-9F0BE6E84C37}
{CF450DCE-D12B-4A11-8D2D-A7A125372C48} = {64BDF58B-41BA-A19E-0D34-B5FA598403B6}
{19148439-436F-4CDA-B493-70AF4FFC13E9} = {999FBDA2-33DA-4F74-B957-03AC72CCE5EC}
{2491A9B9-C0A8-49EE-9077-A32DE76E1E94} = {999FBDA2-33DA-4F74-B957-03AC72CCE5EC}
{5CA5F70E-0FDB-467B-B22C-3CD5994F0087} = {999FBDA2-33DA-4F74-B957-03AC72CCE5EC}
Expand Down
1 change: 1 addition & 0 deletions build/Targets/Dependencies.props
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
<MicrosoftDiagnosticsRuntimeVersion>0.8.31-beta</MicrosoftDiagnosticsRuntimeVersion>
<MicrosoftDiagnosticsTracingTraceEventVersion>1.0.35</MicrosoftDiagnosticsTracingTraceEventVersion>
<MicrosoftDiaSymReaderVersion>1.1.0</MicrosoftDiaSymReaderVersion>
<MicrosoftDiaSymReaderConverterXmlVersion>1.0.0-beta1-61515-01</MicrosoftDiaSymReaderConverterXmlVersion>
<MicrosoftDiaSymReaderNativeVersion>1.5.0</MicrosoftDiaSymReaderNativeVersion>
<MicrosoftDiaSymReaderPortablePdbVersion>1.2.0</MicrosoftDiaSymReaderPortablePdbVersion>
<MicrosoftNETCoreRuntimeCoreCLRVersion>1.1.0</MicrosoftNETCoreRuntimeCoreCLRVersion>
Expand Down
1 change: 0 additions & 1 deletion build/config/SignToolData.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@
"Exes\\vbccore\\vbc.exe",
"Exes\\vbi\\vbi.exe",
"Exes\\vbicore\\vbi.exe",
"Exes\\Pdb2Xml\\Pdb2Xml.exe",
"Vsix\\CompilerExtension\\Roslyn.Compilers.Extension.dll",
"Vsix\\Templates\\Roslyn.Templates.dll",
"Vsix\\VisualStudioDiagnosticsWindow\\Roslyn.VisualStudio.DiagnosticsWindow.dll",
Expand Down
14 changes: 9 additions & 5 deletions build/scripts/cibuild.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -104,15 +104,16 @@ try {
Run-MSBuild Roslyn.sln /p:Configuration=$buildConfiguration /p:DeployExtension=false

# Check if we have credentials to upload to benchview
if ((Test-Path env:\GIT_BRANCH) -and (Test-Path BV_UPLOAD_SAS_TOKEN)) {
$extraArgs="--report-benchview --branch $(env:GIT_BRANCH)"
$extraArgs = ""
if ((Test-Path env:\GIT_BRANCH) -and (Test-Path env:\BV_UPLOAD_SAS_TOKEN)) {
$extraArgs = "--report-benchview --branch $($env:GIT_BRANCH)"

# Check if we are in a PR or this is a rolling submission
if (Test-Path env:\ghprbPullTitle) {
$extraArgs='$($extraArgs) --benchview-submission-name "[$($env:ghprbPullAuthorLogin)] PR $($env:ghprbPullId): $($env:ghprbPullTitle)" --benchview-submission-type private'
$extraArgs = '$($extraArgs) --benchview-submission-name "[$($env:ghprbPullAuthorLogin)] PR $($env:ghprbPullId): $($env:ghprbPullTitle)" --benchview-submission-type private'
}
else {
$extraArgs='$(4extraArgs) --benchview-submission-type rolling'
$extraArgs = '$(4extraArgs) --benchview-submission-type rolling'
}

Create-Directory ".\Binaries\$buildConfiguration\tools\"
Expand All @@ -121,7 +122,10 @@ try {
}

Terminate-BuildProcesses
Exec { & ".\Binaries\$buildConfiguration\Exes\Perf.Runner\Roslyn.Test.Performance.Runner.exe" --search-directory=".\\Binaries\\$buildConfiguration\\Dlls\\" --no-trace-upload $extraArgs }
& ".\Binaries\$buildConfiguration\Exes\Perf.Runner\Roslyn.Test.Performance.Runner.exe" --search-directory=".\\Binaries\\$buildConfiguration\\Dlls\\" --no-trace-upload $extraArgs
if (-not $?) {
throw "Perf run failed"
}
exit 0
}

Expand Down
2 changes: 1 addition & 1 deletion src/Compilers/CSharp/Portable/Binder/Binder_Symbols.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2079,7 +2079,7 @@ internal static void CheckFeatureAvailability(SyntaxNode syntax, MessageID featu
LanguageVersion requiredVersion = feature.RequiredVersion();
if (requiredVersion > availableVersion)
{
diagnostics.Add(availableVersion.GetErrorCode(), location, feature.Localize(), requiredVersion.Localize());
diagnostics.Add(availableVersion.GetErrorCode(), location, feature.Localize(), new CSharpRequiredLanguageVersion(requiredVersion));
}
}
}
Expand Down
115 changes: 43 additions & 72 deletions src/Compilers/CSharp/Portable/CSharpParseOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,90 +50,46 @@ public CSharpParseOptions(
IEnumerable<string> preprocessorSymbols = null)
: this(languageVersion,
documentationMode,
kind,
preprocessorSymbols.ToImmutableArrayOrEmpty(),
kind,
preprocessorSymbols.ToImmutableArrayOrEmpty(),
ImmutableDictionary<string, string>.Empty)
{
// We test the mapped value, LanguageVersion, rather than the parameter, languageVersion,
// which has not had "Latest" mapped to the latest version yet.
if (!LanguageVersion.IsValid())
{
throw new ArgumentOutOfRangeException(nameof(languageVersion));
}

if (!kind.IsValid())
{
throw new ArgumentOutOfRangeException(nameof(kind));
}

if (preprocessorSymbols != null)
{
foreach (var preprocessorSymbol in preprocessorSymbols)
{
if (!SyntaxFacts.IsValidIdentifier(preprocessorSymbol))
{
throw new ArgumentException($"{nameof(preprocessorSymbols)} contains a symbol that is not a valid identifier", nameof(preprocessorSymbols));
}
}
}
}

internal CSharpParseOptions(
LanguageVersion languageVersion,
DocumentationMode documentationMode,
SourceCodeKind kind,
IEnumerable<string> preprocessorSymbols,
ImmutableDictionary<string, string> features)
: this(languageVersion, documentationMode, kind, preprocessorSymbols)
IReadOnlyDictionary<string, string> features)
: base(kind, documentationMode)
{
if (features == null)
{
throw new ArgumentNullException(nameof(features));
}

_features = features;
this.SpecifiedLanguageVersion = languageVersion;
this.LanguageVersion = languageVersion.MapSpecifiedToEffectiveVersion();
this.PreprocessorSymbols = preprocessorSymbols.ToImmutableArrayOrEmpty();
_features = features?.ToImmutableDictionary() ?? ImmutableDictionary<string, string>.Empty;
}

private CSharpParseOptions(CSharpParseOptions other) : this(
languageVersion: other.SpecifiedLanguageVersion,
documentationMode: other.DocumentationMode,
kind: other.Kind,
preprocessorSymbols: other.PreprocessorSymbols,
features: other.Features.ToImmutableDictionary())
{
}

// No validation
private CSharpParseOptions(
LanguageVersion languageVersion,
DocumentationMode documentationMode,
SourceCodeKind kind,
ImmutableArray<string> preprocessorSymbols,
ImmutableDictionary<string, string> features)
: base(kind, documentationMode)
features: other.Features)
{
Debug.Assert(!preprocessorSymbols.IsDefault);
this.SpecifiedLanguageVersion = languageVersion;
this.LanguageVersion = languageVersion.MapSpecifiedToEffectiveVersion();
this.PreprocessorSymbols = preprocessorSymbols;
_features = features;
}

public override string Language => LanguageNames.CSharp;

public new CSharpParseOptions WithKind(SourceCodeKind kind)
{
if (kind == this.Kind)
if (kind == this.SpecifiedKind)
{
return this;
}

if (!kind.IsValid())
{
throw new ArgumentOutOfRangeException(nameof(kind));
}

return new CSharpParseOptions(this) { Kind = kind };
var effectiveKind = kind.MapSpecifiedToEffectiveKind();
return new CSharpParseOptions(this) { SpecifiedKind = kind, Kind = effectiveKind };
}

public CSharpParseOptions WithLanguageVersion(LanguageVersion version)
Expand All @@ -144,11 +100,6 @@ public CSharpParseOptions WithLanguageVersion(LanguageVersion version)
}

var effectiveLanguageVersion = version.MapSpecifiedToEffectiveVersion();
if (!effectiveLanguageVersion.IsValid())
{
throw new ArgumentOutOfRangeException(nameof(version));
}

return new CSharpParseOptions(this) { SpecifiedLanguageVersion = version, LanguageVersion = effectiveLanguageVersion };
}

Expand Down Expand Up @@ -184,11 +135,6 @@ public CSharpParseOptions WithPreprocessorSymbols(ImmutableArray<string> symbols
return this;
}

if (!documentationMode.IsValid())
{
throw new ArgumentOutOfRangeException(nameof(documentationMode));
}

return new CSharpParseOptions(this) { DocumentationMode = documentationMode };
}

Expand All @@ -212,12 +158,11 @@ protected override ParseOptions CommonWithFeatures(IEnumerable<KeyValuePair<stri
/// </summary>
public new CSharpParseOptions WithFeatures(IEnumerable<KeyValuePair<string, string>> features)
{
if (features == null)
{
throw new ArgumentNullException(nameof(features));
}
ImmutableDictionary<string, string> dictionary =
features?.ToImmutableDictionary(StringComparer.OrdinalIgnoreCase)
?? ImmutableDictionary<string, string>.Empty;

return new CSharpParseOptions(this) { _features = features.ToImmutableDictionary(StringComparer.OrdinalIgnoreCase) };
return new CSharpParseOptions(this) { _features = dictionary };
}

public override IReadOnlyDictionary<string, string> Features
Expand All @@ -228,6 +173,32 @@ public override IReadOnlyDictionary<string, string> Features
}
}

internal override void ValidateOptions(ArrayBuilder<Diagnostic> builder)
{
ValidateOptions(builder, MessageProvider.Instance);

// Validate LanguageVersion not SpecifiedLanguageVersion, after Latest/Default has been converted:
if (!LanguageVersion.IsValid())
{
builder.Add(Diagnostic.Create(MessageProvider.Instance, (int)ErrorCode.ERR_BadLanguageVersion, LanguageVersion.ToString()));
}

if (!PreprocessorSymbols.IsDefaultOrEmpty)
{
foreach (var symbol in PreprocessorSymbols)
{
if (symbol == null)
{
builder.Add(Diagnostic.Create(MessageProvider.Instance, (int)ErrorCode.ERR_InvalidPreprocessingSymbol, "null"));
}
else if (!SyntaxFacts.IsValidIdentifier(symbol))
{
builder.Add(Diagnostic.Create(MessageProvider.Instance, (int)ErrorCode.ERR_InvalidPreprocessingSymbol, symbol));
}
}
}
}

internal bool IsFeatureEnabled(MessageID feature)
{
string featureFlag = feature.RequiredFeature();
Expand Down
51 changes: 48 additions & 3 deletions src/Compilers/CSharp/Portable/CSharpResources.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading