public ScriptSharpRuntimeLibrary(IScriptSharpMetadataImporter metadataImporter, IErrorReporter errorReporter, Func <ITypeParameter, string> getTypeParameterName, Func <ITypeReference, JsExpression> createTypeReferenceExpression) { _metadataImporter = metadataImporter; _errorReporter = errorReporter; _getTypeParameterName = getTypeParameterName; _createTypeReferenceExpression = createTypeReferenceExpression; }
private string Process(IList <JsStatement> stmts, IScriptSharpMetadataImporter metadata = null, INamer namer = null, IAssembly mainAssembly = null) { var obj = new DefaultLinker(metadata ?? new MockScriptSharpMetadataImporter(), namer ?? new MockNamer()); var processed = obj.Process(stmts, mainAssembly ?? new Mock <IAssembly>().Object); return(string.Join("", processed.Select(s => OutputFormatter.Format(s, allowIntermediates: false)))); }
public ScriptSharpOOPEmulator(ICompilation compilation, IScriptSharpMetadataImporter metadataImporter, IRuntimeLibrary runtimeLibrary, IErrorReporter errorReporter) { _metadataImporter = metadataImporter; _runtimeLibrary = runtimeLibrary; _errorReporter = errorReporter; _compilation = compilation; }
public ScriptSharpRuntimeLibrary(IScriptSharpMetadataImporter metadataImporter, IErrorReporter errorReporter, Func<ITypeParameter, string> getTypeParameterName, Func<ITypeReference, JsExpression> createTypeReferenceExpression) { _metadataImporter = metadataImporter; _errorReporter = errorReporter; _getTypeParameterName = getTypeParameterName; _createTypeReferenceExpression = createTypeReferenceExpression; }
private ImportVisitor(IScriptSharpMetadataImporter metadataImporter, INamer namer, IAssembly mainAssembly, HashSet <string> usedSymbols) { _metadataImporter = metadataImporter; _namer = namer; _mainAssembly = mainAssembly; _usedSymbols = usedSymbols; _moduleAliases = new Dictionary <string, string>(); }
public ScriptSharpOOPEmulator(ICompilation compilation, IScriptSharpMetadataImporter metadataImporter, IRuntimeLibrary runtimeLibrary, INamer namer, IErrorReporter errorReporter) { _metadataImporter = metadataImporter; _runtimeLibrary = runtimeLibrary; _namer = namer; _errorReporter = errorReporter; _compilation = compilation; _systemType = new JsTypeReferenceExpression(_compilation.FindType(KnownTypeCode.Type).GetDefinition()); }
protected string Process(IEnumerable<JsType> types, IScriptSharpMetadataImporter metadataImporter = null) { metadataImporter = metadataImporter ?? new MockScriptSharpMetadataImporter(); IProjectContent proj = new CSharpProjectContent(); proj = proj.AddAssemblyReferences(new[] { Common.Mscorlib }); var comp = proj.CreateCompilation(); var er = new MockErrorReporter(true); var obj = new OOPEmulator.ScriptSharpOOPEmulator(metadataImporter, er); Assert.That(er.AllMessages, Is.Empty, "Should not have errors"); var rewritten = obj.Rewrite(types, comp); return string.Join("", rewritten.Select(s => OutputFormatter.Format(s, allowIntermediates: true))); }
protected string Process(IEnumerable<JsType> types, IScriptSharpMetadataImporter metadataImporter = null, IErrorReporter errorReporter = null, IMethod entryPoint = null) { metadataImporter = metadataImporter ?? new MockScriptSharpMetadataImporter(); IProjectContent proj = new CSharpProjectContent(); proj = proj.AddAssemblyReferences(new[] { Common.Mscorlib }); var comp = proj.CreateCompilation(); bool verifyNoErrors = errorReporter == null; errorReporter = errorReporter ?? new MockErrorReporter(); var obj = new OOPEmulator.ScriptSharpOOPEmulator(comp, metadataImporter, new MockRuntimeLibrary(), new MockNamer(), errorReporter); if (verifyNoErrors) Assert.That(((MockErrorReporter)errorReporter).AllMessages, Is.Empty, "Should not have errors"); var rewritten = obj.Process(types, comp, entryPoint); return string.Join("", rewritten.Select(s => OutputFormatter.Format(s, allowIntermediates: true))); }
protected string Process(IEnumerable <JsType> types, IScriptSharpMetadataImporter metadataImporter = null) { metadataImporter = metadataImporter ?? new MockScriptSharpMetadataImporter(); IProjectContent proj = new CSharpProjectContent(); proj = proj.AddAssemblyReferences(new[] { Common.Mscorlib }); var comp = proj.CreateCompilation(); var er = new MockErrorReporter(true); var obj = new OOPEmulator.ScriptSharpOOPEmulator(comp, metadataImporter, new MockRuntimeLibrary(), er); Assert.That(er.AllMessages, Is.Empty, "Should not have errors"); var rewritten = obj.Rewrite(types, comp); return(string.Join("", rewritten.Select(s => OutputFormatter.Format(s, allowIntermediates: true)))); }
public static IList <JsStatement> Process(IScriptSharpMetadataImporter metadataImporter, INamer namer, IAssembly mainAssembly, IList <JsStatement> statements) { var usedSymbols = UsedSymbolsGatherer.Analyze(statements); var importer = new ImportVisitor(metadataImporter, namer, mainAssembly, usedSymbols); var body = statements.Select(s => importer.VisitStatement(s, null)).ToList(); if (metadataImporter.IsAsyncModule) { body.Insert(0, new JsVariableDeclarationStatement("exports", JsExpression.ObjectLiteral())); body.Add(new JsReturnStatement(JsExpression.Identifier("exports"))); var pairs = new[] { new KeyValuePair <string, string>("mscorlib", namer.GetVariableName("_", usedSymbols)) }.Concat(importer._moduleAliases.OrderBy(x => x.Key)).ToList(); body = new List <JsStatement> { new JsExpressionStatement( JsExpression.Invocation( JsExpression.Identifier("define"), JsExpression.ArrayLiteral(pairs.Select(p => JsExpression.String(p.Key))), JsExpression.FunctionDefinition( pairs.Select(p => p.Value), new JsBlockStatement(body) ) ) ) }; } else if (importer._moduleAliases.Count > 0) { // If we require any module, we require mscorlib. This should work even if we are a leaf module that doesn't include any other module because our parent script will do the mscorlib require for us. body.InsertRange(0, new[] { (JsStatement) new JsExpressionStatement(JsExpression.Invocation(JsExpression.Identifier("require"), JsExpression.String("mscorlib"))) } .Concat(importer._moduleAliases.OrderBy(x => x.Key) .Select(x => new JsVariableDeclarationStatement( x.Value, JsExpression.Invocation( JsExpression.Identifier("require"), JsExpression.String(x.Key)))) .ToList())); } return(body); }
protected void AssertCorrect(string expected, IScriptSharpMetadataImporter metadataImporter, IMethod entryPoint, params JsType[] types) { AssertCorrect(expected, (IEnumerable <JsType>)types, metadataImporter, entryPoint); }
private string Process(IList<JsStatement> stmts, IScriptSharpMetadataImporter metadata = null, INamer namer = null, IAssembly mainAssembly = null) { var obj = new DefaultLinker(metadata ?? new MockScriptSharpMetadataImporter(), namer ?? new MockNamer()); var processed = obj.Process(stmts, mainAssembly ?? new Mock<IAssembly>().Object); return string.Join("", processed.Select(s => OutputFormatter.Format(s, allowIntermediates: false))); }
protected void Prepare(string source, bool minimizeNames = true, bool expectErrors = false) { IProjectContent project = new CSharpProjectContent(); var parser = new CSharpParser(); using (var rdr = new StringReader(source)) { var pf = new CSharpParsedFile("File.cs"); var cu = parser.Parse(rdr, pf.FileName); cu.AcceptVisitor(new TypeSystemConvertVisitor(pf)); project = project.UpdateProjectContent(null, pf); } project = project.AddAssemblyReferences(new[] { Common.Mscorlib }); var compilation = project.CreateCompilation(); errorReporter = new MockErrorReporter(!expectErrors); Metadata = new MetadataImporter.ScriptSharpMetadataImporter(minimizeNames); Metadata.Prepare(compilation.GetAllTypeDefinitions(), compilation.MainAssembly, errorReporter); AllErrors = errorReporter.AllMessages.ToList().AsReadOnly(); AllErrorTexts = errorReporter.AllMessagesText.ToList().AsReadOnly(); if (expectErrors) { AllErrorTexts.Should().NotBeEmpty("Compile should have generated errors"); } else { AllErrorTexts.Should().BeEmpty("Compile should not generate errors"); } AllTypes = compilation.MainAssembly.TopLevelTypeDefinitions.SelectMany(SelfAndNested).ToDictionary(t => t.ReflectionName); }
public DefaultLinker(IScriptSharpMetadataImporter metadataImporter, INamer namer) { _metadataImporter = metadataImporter; _namer = namer; }
protected void AssertCorrect(string expected, IScriptSharpMetadataImporter metadataImporter, params JsType[] types) { AssertCorrect(expected, (IEnumerable<JsType>)types, metadataImporter); }
protected void AssertCorrect(string expected, IEnumerable<JsType> types, IScriptSharpMetadataImporter metadataImporter = null) { var actual = Process(types, metadataImporter); Assert.That(actual.Replace("\r\n", "\n"), Is.EqualTo(expected.Replace("\r\n", "\n"))); }
public ScriptSharpRuntimeLibrary(IScriptSharpMetadataImporter metadataImporter, Func<ITypeReference, JsExpression> createTypeReferenceExpression) { _metadataImporter = metadataImporter; _createTypeReferenceExpression = createTypeReferenceExpression; }
protected void AssertCorrect(string expected, IEnumerable <JsType> types, IScriptSharpMetadataImporter metadataImporter = null, IMethod entryPoint = null) { var actual = Process(types, metadataImporter: metadataImporter, entryPoint: entryPoint); Assert.That(actual.Replace("\r\n", "\n"), Is.EqualTo(expected.Replace("\r\n", "\n"))); }
public ScriptSharpOOPEmulator(IScriptSharpMetadataImporter metadataImporter, IRuntimeLibrary runtimeLibrary, IErrorReporter errorReporter) { _metadataImporter = metadataImporter; _runtimeLibrary = runtimeLibrary; _errorReporter = errorReporter; }
public ScriptSharpOOPEmulator(IScriptSharpMetadataImporter metadataImporter, IErrorReporter errorReporter) { _metadataImporter = metadataImporter; _errorReporter = errorReporter; }