Example #1
0
        public void GenericClassNameWithoutDirectGenericNameSyntaxInLine()
        {
            var        code        = @"using System;
using System.Collections.Generic;
class C 
{
  void M()
  {
    var test = new List<int>();
    test.Add(0);
  }
}
";
            SyntaxTree tree        = CSharpSyntaxTree.ParseText(code);
            var        compilation = CSharpCompilation.Create("HelloWorld")
                                     .AddReferences(
                MetadataReference.CreateFromFile(
                    typeof(object).Assembly.Location))
                                     .AddSyntaxTrees(tree);

            var model = compilation.GetSemanticModel(tree);

            var span = tree.GetText().Lines[7].Span;
            var root = (CompilationUnitSyntax)tree.GetRoot();

            var allNodes  = root.DescendantNodesAndSelf();
            var lineNodes = root.DescendantNodesAndSelf(span);

            var nodeHelperInstance = new NodeHelpers(model);
            var genericName        = nodeHelperInstance.GetClassNameUsedAsGenericParameter(lineNodes, allNodes);

            Assert.Equal("Int32", genericName);
        }
        public override IEnumerable <Node> GetReachableNodes()
        {
            if (!Anchored)
            {
                yield break;
            }

            if (IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(Owner).GridID == GridId.Invalid)
            {
                yield break; // No funny nodes in spess.
            }
            var entMan    = IoCManager.Resolve <IEntityManager>();
            var grid      = IoCManager.Resolve <IMapManager>().GetGrid(IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(Owner).GridID);
            var gridIndex = grid.TileIndicesFor(IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(Owner).Coordinates);

            var nodes = NodeHelpers.GetCardinalNeighborNodes(entMan, grid, gridIndex, includeSameTile: false);

            foreach (var(_, node) in nodes)
            {
                if (node is CableTerminalNode)
                {
                    yield return(node);
                }
            }
        }
Example #3
0
        public override IEnumerable <Node> GetReachableNodes()
        {
            if (!Anchored)
            {
                yield break;
            }

            var entMan = IoCManager.Resolve <IEntityManager>();

            // If we're in an invalid grid, such as grid 0, we cannot connect to anything.
            if (!IoCManager.Resolve <IMapManager>().TryGetGrid(IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(Owner).GridID, out var grid))
            {
                yield break;
            }

            var gridIndex = grid.TileIndicesFor(IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(Owner).Coordinates);

            foreach (var node in NodeHelpers.GetNodesInTile(entMan, grid, gridIndex))
            {
                if (node is CableNode)
                {
                    yield return(node);
                }
            }
        }
Example #4
0
        public override IEnumerable <Node> GetReachableNodes(TransformComponent xform,
                                                             EntityQuery <NodeContainerComponent> nodeQuery,
                                                             EntityQuery <TransformComponent> xformQuery,
                                                             IMapGrid?grid,
                                                             IEntityManager entMan)
        {
            if (!xform.Anchored || grid == null)
            {
                yield break;
            }

            var gridIndex = grid.TileIndicesFor(xform.Coordinates);

            var dir       = xform.LocalRotation.GetDir();
            var targetIdx = gridIndex.Offset(dir);

            foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, grid, targetIdx))
            {
                if (node is CableTerminalPortNode)
                {
                    yield return(node);
                }
            }

            foreach (var node in base.GetReachableNodes(xform, nodeQuery, xformQuery, grid, entMan))
            {
                yield return(node);
            }
        }
Example #5
0
        public override IEnumerable <Node> GetReachableNodes()
        {
            if (!Anchored)
            {
                yield break;
            }

            var entMan    = IoCManager.Resolve <IEntityManager>();
            var grid      = IoCManager.Resolve <IMapManager>().GetGrid(IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(Owner).GridID);
            var gridIndex = grid.TileIndicesFor(IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(Owner).Coordinates);

            // While we go over adjacent nodes, we build a list of blocked directions due to
            // incoming or outgoing wire terminals.
            var terminalDirs = 0;
            List <(Direction, Node)> nodeDirs = new();

            foreach (var(dir, node) in NodeHelpers.GetCardinalNeighborNodes(entMan, grid, gridIndex))
            {
                if (node is CableNode && node != this)
                {
                    nodeDirs.Add((dir, node));
                }

                if (node is CableDeviceNode && dir == Direction.Invalid)
                {
                    // device on same tile
                    nodeDirs.Add((Direction.Invalid, node));
                }

                if (node is CableTerminalNode)
                {
                    if (dir == Direction.Invalid)
                    {
                        // On own tile, block direction it faces
                        terminalDirs |= 1 << (int)IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(node.Owner).LocalRotation.GetCardinalDir();
                    }
                    else
                    {
                        var terminalDir = IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(node.Owner).LocalRotation.GetCardinalDir();
                        if (terminalDir.GetOpposite() == dir)
                        {
                            // Target tile has a terminal towards us, block the direction.
                            terminalDirs |= 1 << (int)dir;
                            break;
                        }
                    }
                }
            }

            foreach (var(dir, node) in nodeDirs)
            {
                // If there is a wire terminal connecting across this direction, skip the node.
                if (dir != Direction.Invalid && (terminalDirs & (1 << (int)dir)) != 0)
                {
                    continue;
                }

                yield return(node);
            }
        }
        public bool ExecuteRename(KeyValuePair <IndexerKey, List <CSharpQuery> > codeKeyValuePair, RenameViewModel renameViewModel, VisualStudioWorkspace workspace)
        {
            bool result = true;

            foreach (var file in codeKeyValuePair.Value.GroupBy(x => x.DocumentId, x => x))
            {
                var           doc      = workspace.CurrentSolution.GetDocument(file.Key);
                SemanticModel semModel = ThreadHelper.JoinableTaskFactory.Run(async() => await doc.GetSemanticModelAsync());
                NodeHelpers   helper   = new NodeHelpers(semModel);
                doc.TryGetSyntaxTree(out SyntaxTree synTree);
                var root = (CompilationUnitSyntax)synTree.GetRoot();
                var newArgumentSyntax = SyntaxFactory.Argument(SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression, SyntaxFactory.Literal(renameViewModel.QueryText)));

                foreach (var query in file)
                {
                    var span  = synTree.GetText().Lines[query.QueryLineNumber - 1].Span;
                    var nodes = root.DescendantNodesAndSelf(span);
                    var existingQueryArgumentSyntax = helper.GetProperArgumentNodeInNodes(nodes);

                    var newRoot = root.ReplaceNode(existingQueryArgumentSyntax, newArgumentSyntax);
                    root = newRoot;

                    doc = doc.WithText(newRoot.GetText());
                    var applyResult = workspace.TryApplyChanges(doc.Project.Solution);
                    result = result && applyResult;
                }
            }
            return(result);
        }
        public override IEnumerable <Node> GetReachableNodes()
        {
            if (IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(Owner).GridID == GridId.Invalid)
            {
                yield break; // No funny nodes in spess.
            }
            var entMan    = IoCManager.Resolve <IEntityManager>();
            var grid      = IoCManager.Resolve <IMapManager>().GetGrid(IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(Owner).GridID);
            var gridIndex = grid.TileIndicesFor(IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(Owner).Coordinates);

            var dir       = IoCManager.Resolve <IEntityManager>().GetComponent <TransformComponent>(Owner).LocalRotation.GetDir();
            var targetIdx = gridIndex + NodeHelpers.TileOffsetForDir(dir);

            foreach (var node in NodeHelpers.GetNodesInTile(entMan, grid, targetIdx))
            {
                if (node is CableTerminalPortNode)
                {
                    yield return(node);
                }
            }

            foreach (var node in base.GetReachableNodes())
            {
                yield return(node);
            }
        }
Example #8
0
        private UstNode ParseAndConvert(string code, AspxParser.Location location)
        {
            SyntaxTree tree           = CSharpSyntaxTree.ParseText(code, new CSharpParseOptions(kind: SourceCodeKind.Script));
            var        converter      = new RoslynUstCommonConverterVisitor(tree, fileNode);
            FileNode   resultFileNode = converter.Walk();
            UstNode    result         = NodeHelpers.CreateLanguageNamespace(resultFileNode.Root, Language.Aspx, fileNode);

            result.ApplyActionToDescendants(ustNode => ustNode.TextSpan = ustNode.TextSpan.AddOffset(location.Start));
            return(result);
        }
        private void InitializeUsingSemanticModel(SemanticModel semModel)
        {
            _helperInstance = new NodeHelpers(semModel);

            SyntaxTree synTree = semModel.SyntaxTree;
            var        span    = synTree.GetText().Lines[_selectedLineNumber].Span;
            var        root    = (CompilationUnitSyntax)synTree.GetRoot();

            _lineNodes     = root.DescendantNodesAndSelf(span);
            _documentNodes = new Lazy <IEnumerable <SyntaxNode> >(() => root.DescendantNodesAndSelf());
        }
Example #10
0
        public override IEnumerable <Node> GetReachableNodes()
        {
            var compMgr   = IoCManager.Resolve <IComponentManager>();
            var grid      = IoCManager.Resolve <IMapManager>().GetGrid(Owner.Transform.GridID);
            var gridIndex = grid.TileIndicesFor(Owner.Transform.Coordinates);

            foreach (var node in NodeHelpers.GetNodesInTile(compMgr, grid, gridIndex))
            {
                if (node is CableNode)
                {
                    yield return(node);
                }
            }
        }
Example #11
0
        public override IEnumerable <Node> GetReachableNodes()
        {
            var compMgr   = IoCManager.Resolve <IComponentManager>();
            var grid      = IoCManager.Resolve <IMapManager>().GetGrid(Owner.Transform.GridID);
            var gridIndex = grid.TileIndicesFor(Owner.Transform.Coordinates);

            var nodes = NodeHelpers.GetCardinalNeighborNodes(compMgr, grid, gridIndex, includeSameTile: false);

            foreach (var(_, node) in nodes)
            {
                if (node is CableTerminalNode)
                {
                    yield return(node);
                }
            }
        }
        private void AnalyzeNode(SyntaxNodeAnalysisContext context)
        {
            NodeHelpers helper = new NodeHelpers(context.SemanticModel);

            if (helper.IsBatisMethod(context.Node as InvocationExpressionSyntax) &&
                helper.TryGetArgumentNodeFromInvocation(context.Node as InvocationExpressionSyntax, 0, out ExpressionSyntax expressionSyntax))
            {
                var resolverResult = new ExpressionResolver().GetStringValueOfExpression(expressionSyntax, context.SemanticModel);
                if (resolverResult.IsSolved)
                {
                    var queryKeys = GotoAsyncPackage.Storage.XmlQueries.GetKeys(resolverResult.TextResult, MapNamespaceHelper.IsQueryWithNamespace(resolverResult.TextResult));
                    if (queryKeys.Count < 1)
                    {
                        context.ReportDiagnostic(Diagnostic.Create(QueryNotExistsRule, expressionSyntax.GetLocation(), resolverResult.TextResult));
                    }
                }
            }
        }
Example #13
0
        public override IEnumerable <Node> GetReachableNodes(TransformComponent xform,
                                                             EntityQuery <NodeContainerComponent> nodeQuery,
                                                             EntityQuery <TransformComponent> xformQuery,
                                                             IMapGrid?grid,
                                                             IEntityManager entMan)
        {
            if (!xform.Anchored || grid == null)
            {
                yield break;
            }

            var gridIndex = grid.TileIndicesFor(xform.Coordinates);

            foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, grid, gridIndex))
            {
                if (node is CableNode)
                {
                    yield return(node);
                }
            }
        }
Example #14
0
        /// <summary>
        /// Stores the JSON data.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>A response of the operation.</returns>
        async Task <int> IUploadService.StoreJsonData(StoreJsonDataRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var nodes = NodeHelpers.ParseJson(request.Json, request.CipherKey);

            var files = nodes
                        .Where(node => node.IsFile)
                        .Select(node => new ArchiveContent
            {
                IsFile = node.IsFile,
                Name   = node.DecryptedName
            });

            await _context.ArchiveItems.AddRangeAsync(files);

            return(await _context.SaveChangesAsync());
        }
        public override IEnumerable <Node> GetReachableNodes()
        {
            var entMan    = IoCManager.Resolve <IEntityManager>();
            var grid      = IoCManager.Resolve <IMapManager>().GetGrid(Owner.Transform.GridID);
            var gridIndex = grid.TileIndicesFor(Owner.Transform.Coordinates);

            var dir       = Owner.Transform.LocalRotation.GetDir();
            var targetIdx = gridIndex + NodeHelpers.TileOffsetForDir(dir);

            foreach (var node in NodeHelpers.GetNodesInTile(entMan, grid, targetIdx))
            {
                if (node is CableTerminalPortNode)
                {
                    yield return(node);
                }
            }

            foreach (var node in base.GetReachableNodes())
            {
                yield return(node);
            }
        }
        public override IEnumerable <Node> GetReachableNodes(TransformComponent xform,
                                                             EntityQuery <NodeContainerComponent> nodeQuery,
                                                             EntityQuery <TransformComponent> xformQuery,
                                                             IMapGrid?grid,
                                                             IEntityManager entMan)
        {
            if (!xform.Anchored || grid == null)
            {
                yield break;
            }

            var gridIndex = grid.TileIndicesFor(xform.Coordinates);

            var nodes = NodeHelpers.GetCardinalNeighborNodes(nodeQuery, grid, gridIndex, includeSameTile: false);

            foreach (var(_, node) in nodes)
            {
                if (node is CableTerminalNode)
                {
                    yield return(node);
                }
            }
        }
Example #17
0
        /// <summary>
        /// Processes the file.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>The HTTP content.</returns>
        async Task <string> IUploadService.ProcessFile(ProcessFileRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (string.IsNullOrWhiteSpace(request.FilePath))
            {
                throw new ArgumentException(nameof(request.FilePath));
            }

            var items = ZipArchiveHelpers.ListArchiveItems(request.FilePath);
            var json  = NodeHelpers.ToJson(items, request.CipherKey);

            return(await _transferService.SendFile(new SendFileRequest
            {
                ContentType = ApplicationConstants.JsonContentType,
                Password = request.Password,
                StringContent = json,
                Url = request.ApiUrl,
                UserName = request.Username
            }));
        }
 protected static NodeView GetNodeView()
 {
     return(NodeHelpers.CreateNodeView(Brushes.Red));
 }
 static NodeView GetNodeView()
 {
     return(NodeHelpers.CreateNodeView(Brushes.Black));
 }
 protected static NodeView GetNodeView()
 {
     return(NodeHelpers.CreateNodeView(Brushes.DarkViolet));
 }
 public static string Uuid()
 {
     return(NodeHelpers.UUID64().Substring(0, 8));
 }