Permalink
Browse files

initial source

  • Loading branch information...
1 parent 1a97747 commit 7dd12b361b16ad91410d0bbef256a67b12854c55 jediwhale committed Jan 12, 2009
Showing with 2,814 additions and 0 deletions.
  1. +7 −0 .gitignore
  2. +44 −0 fitnessedotnet.sln
  3. +211 −0 license.txt
  4. +14 −0 source/Runner/Program.cs
  5. +11 −0 source/Runner/Properties/AssemblyInfo.cs
  6. +61 −0 source/Runner/Runner.csproj
  7. +11 −0 source/fitnesse/Properties/AssemblyInfo.cs
  8. +75 −0 source/fitnesse/fitnesse.csproj
  9. +59 −0 source/fitnesse/slim/Document.cs
  10. +56 −0 source/fitnesse/slim/Messenger.cs
  11. +41 −0 source/fitnesse/slim/Runner.cs
  12. +31 −0 source/fitnesse/slim/Service.cs
  13. +18 −0 source/fitnesse/slim/operators/ComposeBoolean.cs
  14. +23 −0 source/fitnesse/slim/operators/ComposeDefault.cs
  15. +26 −0 source/fitnesse/slim/operators/ComposeList.cs
  16. +60 −0 source/fitnesse/slim/operators/ExecuteBase.cs
  17. +18 −0 source/fitnesse/slim/operators/ExecuteCall.cs
  18. +19 −0 source/fitnesse/slim/operators/ExecuteCallAndAssign.cs
  19. +18 −0 source/fitnesse/slim/operators/ExecuteDefault.cs
  20. +18 −0 source/fitnesse/slim/operators/ExecuteImport.cs
  21. +22 −0 source/fitnesse/slim/operators/ExecuteMake.cs
  22. +26 −0 source/fitnesse/slim/operators/ParseList.cs
  23. +38 −0 source/fitnesse/slim/operators/ParseSymbol.cs
  24. +40 −0 source/mtee/Application/Configuration.cs
  25. +34 −0 source/mtee/Application/Context.cs
  26. +48 −0 source/mtee/Application/Shell.cs
  27. +47 −0 source/mtee/Engine/Assemblies.cs
  28. +30 −0 source/mtee/Engine/Namespaces.cs
  29. +33 −0 source/mtee/Engine/Operator.cs
  30. +91 −0 source/mtee/Engine/Processor.cs
  31. +62 −0 source/mtee/Engine/RuntimeMember.cs
  32. +70 −0 source/mtee/Engine/RuntimeType.cs
  33. +40 −0 source/mtee/Engine/State.cs
  34. +38 −0 source/mtee/Model/IdentifierName.cs
  35. +30 −0 source/mtee/Model/LanguageName.cs
  36. +11 −0 source/mtee/Model/NameMatcher.cs
  37. +63 −0 source/mtee/Model/Tree.cs
  38. +26 −0 source/mtee/Operators/DefaultMemory.cs
  39. +25 −0 source/mtee/Operators/DefaultParse.cs
  40. +35 −0 source/mtee/Operators/DefaultRuntime.cs
  41. +11 −0 source/mtee/Properties/AssemblyInfo.cs
  42. +69 −0 source/mtee/mtee.csproj
  43. +11 −0 source/sample/Properties/AssemblyInfo.cs
  44. +4 −0 source/sample/SampleDomain.cs
  45. +185 −0 source/sample/SlimSamples.cs
  46. +54 −0 source/sample/sample.csproj
  47. +11 −0 source/unitTest/Properties/AssemblyInfo.cs
  48. +26 −0 source/unitTest/application/ConfigurationTest.cs
  49. +38 −0 source/unitTest/application/ShellTest.cs
  50. +43 −0 source/unitTest/engine/AssembliesTest.cs
  51. +37 −0 source/unitTest/engine/InterpreterTest.cs
  52. +33 −0 source/unitTest/engine/NamespacesTest.cs
  53. +89 −0 source/unitTest/engine/ProcessorTest.cs
  54. +59 −0 source/unitTest/engine/RuntimeTypeTest.cs
  55. +26 −0 source/unitTest/engine/SampleClass.cs
  56. +31 −0 source/unitTest/model/IdentifierNameTest.cs
  57. +19 −0 source/unitTest/model/LanguageNameTest.cs
  58. +29 −0 source/unitTest/operators/DefaultMemoryTest.cs
  59. +34 −0 source/unitTest/operators/DefaultParseTest.cs
  60. +30 −0 source/unitTest/operators/DefaultRuntimeTest.cs
  61. +71 −0 source/unitTest/slim/ComposeOperatorsTest.cs
  62. +64 −0 source/unitTest/slim/ExecuteOperatorsTest.cs
  63. +46 −0 source/unitTest/slim/ParseOperatorsTest.cs
  64. +23 −0 source/unitTest/slim/SampleClass.cs
  65. +56 −0 source/unitTest/slim/ServiceTest.cs
  66. +85 −0 source/unitTest/unitTest.csproj
View
@@ -0,0 +1,7 @@
+*.suo
+*.user
+_ReSharper*/
+desktop.ini
+build/
+bin/
+obj/
View
@@ -0,0 +1,44 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "fitnesse", "source\fitnesse\fitnesse.csproj", "{790A49DB-332D-465E-91D6-2D760CD21AB2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "unitTest", "source\unitTest\unitTest.csproj", "{84D31A53-B674-4520-82F7-84BCBB55DD5C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Runner", "source\Runner\Runner.csproj", "{75FD1002-10F3-4909-9B89-F116F45903C2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "sample", "source\sample\sample.csproj", "{E3AD7C64-DFCB-4B94-A278-6E2F495753D8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mtee", "source\mtee\mtee.csproj", "{C0269B16-4931-4450-8615-AAB744EBC623}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {790A49DB-332D-465E-91D6-2D760CD21AB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {790A49DB-332D-465E-91D6-2D760CD21AB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {790A49DB-332D-465E-91D6-2D760CD21AB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {790A49DB-332D-465E-91D6-2D760CD21AB2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {84D31A53-B674-4520-82F7-84BCBB55DD5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {84D31A53-B674-4520-82F7-84BCBB55DD5C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {84D31A53-B674-4520-82F7-84BCBB55DD5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {84D31A53-B674-4520-82F7-84BCBB55DD5C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {75FD1002-10F3-4909-9B89-F116F45903C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {75FD1002-10F3-4909-9B89-F116F45903C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {75FD1002-10F3-4909-9B89-F116F45903C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {75FD1002-10F3-4909-9B89-F116F45903C2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E3AD7C64-DFCB-4B94-A278-6E2F495753D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E3AD7C64-DFCB-4B94-A278-6E2F495753D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E3AD7C64-DFCB-4B94-A278-6E2F495753D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E3AD7C64-DFCB-4B94-A278-6E2F495753D8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C0269B16-4931-4450-8615-AAB744EBC623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C0269B16-4931-4450-8615-AAB744EBC623}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C0269B16-4931-4450-8615-AAB744EBC623}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C0269B16-4931-4450-8615-AAB744EBC623}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
View
@@ -0,0 +1,211 @@
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are
+distributed by that particular Contributor. A Contribution 'originates' from a
+Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to
+the Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free copyright license to
+reproduce, prepare derivative works of, publicly display, publicly perform,
+distribute and sublicense the Contribution of such Contributor, if any, and such
+derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
+Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form.
+This patent license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the
+Licensed Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses
+to its Contributions set forth herein, no assurances are provided by any
+Contributor that the Program does not infringe the patent or other intellectual
+property rights of any other entity. Each Contributor disclaims any liability to
+Recipient for claims brought by any other entity based on infringement of
+intellectual property rights or otherwise. As a condition to exercising the
+rights and licenses granted hereunder, each Recipient hereby assumes sole
+responsibility to secure any other intellectual property rights needed, if any.
+For example, if a third party patent license is required to allow Recipient to
+distribute the Program, it is Recipient's responsibility to acquire that license
+before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright license set
+forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its
+own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title and
+non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and consequential
+damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered
+by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable manner on or
+through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the
+Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore, if
+a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages
+and costs (collectively "Losses") arising from claims, lawsuits and other legal
+actions brought by a third party against the Indemnified Contributor to the
+extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to
+control, and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may participate in
+any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If that
+Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such
+Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a court
+requires any other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its exercise of
+rights under this Agreement, including but not limited to the risks and costs of
+program errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), 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 OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable
+law, it shall not affect the validity or enforceability of the remainder of the
+terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such
+provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to
+a patent applicable to software (including a cross-claim or counterclaim in a
+lawsuit), then any patent licenses granted by that Contributor to such Recipient
+under this Agreement shall terminate as of the date such litigation is filed. In
+addition, if Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted under
+Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to time.
+No one other than the Agreement Steward has the right to modify this Agreement.
+IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
+as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the Agreement
+under which it was received. In addition, after a new version of the Agreement
+is published, Contributor may elect to distribute the Program (including its
+Contributions) under the new version. Except as expressly stated in Sections
+2(a) and 2(b) above, Recipient receives no rights or licenses to the
+intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
View
@@ -0,0 +1,14 @@
+// Copyright © Syterra Software Inc. All rights reserved.
+// The use and distribution terms for this software are covered by the Common Public License 1.0 (http://opensource.org/licenses/cpl.php)
+// which can be found in the file license.txt at the root of this distribution. By using this software in any fashion, you are agreeing
+// to be bound by the terms of this license. You must not remove this notice, or any other, from this software.
+
+using fitnesse.mtee.application;
+
+namespace fitnesse.runner {
+ class Program {
+ static int Main(string[] arguments) {
+ return new Shell().Run(arguments);
+ }
+ }
+}
@@ -0,0 +1,11 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Runner for FitNesse.NET")]
+[assembly: AssemblyDescription("FitNesse.NET. The use and distribution terms for this software are covered by the Common Public License 1.0.")]
+[assembly: AssemblyProduct("FitNesse.NET")]
+[assembly: AssemblyCopyright("Copyright © Syterra Software Inc. All rights reserved.")]
+
+[assembly: ComVisible(false)]
+
+[assembly: AssemblyVersion("1.0.*")]
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.30729</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{75FD1002-10F3-4909-9B89-F116F45903C2}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>fitnesse.runner</RootNamespace>
+ <AssemblyName>Runner</AssemblyName>
+ <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <TargetFrameworkSubset>
+ </TargetFrameworkSubset>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\mtee\mtee.csproj">
+ <Project>{C0269B16-4931-4450-8615-AAB744EBC623}</Project>
+ <Name>mtee</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+ <PropertyGroup>
+ <PostBuildEvent>copy "$(TargetPath)*" "$(SolutionDir)build\$(ConfigurationName)\"</PostBuildEvent>
+ </PropertyGroup>
+</Project>
@@ -0,0 +1,11 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("FitNesse.NET")]
+[assembly: AssemblyDescription("FitNesse.NET. The use and distribution terms for this software are covered by the Common Public License 1.0.")]
+[assembly: AssemblyProduct("FitNesse.NET")]
+[assembly: AssemblyCopyright("Copyright © Syterra Software Inc. All rights reserved.")]
+
+[assembly: ComVisible(false)]
+
+[assembly: AssemblyVersion("1.0.*")]
Oops, something went wrong.

0 comments on commit 7dd12b3

Please sign in to comment.