상속: ICSharpCode.NRefactory.Ast.AbstractNode
예제 #1
0
 public override object VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
 {
     currentNamepace = namespaceDeclaration.Name;
     base.VisitNamespaceDeclaration(namespaceDeclaration, data);
     currentNamepace = string.Empty;
     return null;
 }
 NamespaceDeclaration CreateNamespace(DependencyRelation relation, NamespaceDeclaration originalNamespace)
 {
     var ns = new NamespaceDeclaration(originalNamespace.Name);
     ns.Children.AddRange(originalNamespace.Children.OfType<UsingDeclaration>());
     ns.Children.Add(CreatePartialClass(relation));
     return ns;
 }
예제 #3
0
 NamespaceDeclaration CreateNamespace(ValueObjectDescriptor valueObject, NamespaceDeclaration originalNamespace)
 {
     var ns = new NamespaceDeclaration(originalNamespace.Name);
     ns.Children.AddRange(originalNamespace.Children.OfType<UsingDeclaration>());
     ns.Children.Add(CreatePartialClass(valueObject));
     return ns;
 }
		public override object VisitCompilationUnit(CompilationUnit compilationUnit, object data)
		{
			base.VisitCompilationUnit(compilationUnit, data);
			if (!string.IsNullOrEmpty(NamespacePrefixToAdd)) {
				for (int i = 0; i < compilationUnit.Children.Count; i++) {
					NamespaceDeclaration ns = compilationUnit.Children[i] as NamespaceDeclaration;
					if (ns != null) {
						ns.Name = NamespacePrefixToAdd + "." + ns.Name;
					}
					if (compilationUnit.Children[i] is TypeDeclaration || compilationUnit.Children[i] is DelegateDeclaration) {
						ns = new NamespaceDeclaration(NamespacePrefixToAdd);
						ns.AddChild(compilationUnit.Children[i]);
						compilationUnit.Children[i] = ns;
					}
				}
			}
			
			ToCSharpConvertVisitor v = new ToCSharpConvertVisitor();
			compilationUnit.AcceptVisitor(v, data);
			if (projectContent != null && projectContent.DefaultImports != null) {
				int index = 0;
				foreach (string u in projectContent.DefaultImports.Usings) {
					compilationUnit.Children.Insert(index++, new UsingDeclaration(u));
				}
			}
			return null;
		}
예제 #5
0
        public override object VisitNamespaceDeclaration(ICSharpCode.NRefactory.Ast.NamespaceDeclaration namespaceDeclaration, object data)
        {
            namespaceStack.Push(namespaceDeclaration.Name);
            object result = base.VisitNamespaceDeclaration(namespaceDeclaration, data);

            namespaceStack.Pop();
            return(result);
        }
 public virtual object VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
 {
   CSharpLanguage.VisitorData visitorData = (CSharpLanguage.VisitorData) data;
   visitorData.CurrentNamespaces.Push(namespaceDeclaration.get_Name());
   ((AbstractNode) namespaceDeclaration).AcceptChildren((IAstVisitor) this, (object) visitorData);
   visitorData.CurrentNamespaces.Pop();
   return (object) null;
 }
예제 #7
0
 public override object VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
 {
     CSharpLanguage.VisitorData data2 = (CSharpLanguage.VisitorData) data;
     data2.CurrentNamespaces.Push(namespaceDeclaration.Name);
     namespaceDeclaration.AcceptChildren(this, data2);
     data2.CurrentNamespaces.Pop();
     return null;
 }
 public static NamespaceDeclaration add_Namespace(this CompilationUnit compilationUnit, string @namespace)
 {
     var newNamespace = compilationUnit.namespaces(@namespace);		// check if already exists and if it does return it
     if (newNamespace != null)
         return newNamespace;
     newNamespace = new NamespaceDeclaration(@namespace);
     compilationUnit.Children.Add(newNamespace);
     return newNamespace;
 }
        public override object TrackedVisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
        {
            NamespaceDeclaration replacedNamespace = namespaceDeclaration;
            UsingDeclaration usingDeclaration = new UsingDeclaration("java.lang.*");
            replacedNamespace.Children.Insert(0, usingDeclaration);

            ReplaceCurrentNode(replacedNamespace);

            return base.TrackedVisitNamespaceDeclaration(namespaceDeclaration, data);
        }
            public override object VisitNamespaceDeclaration(ICSharpCode.NRefactory.Ast.NamespaceDeclaration namespaceDeclaration, object data)
            {
                var visitorData = (VisitorData)data;

                visitorData.currentNamespaces.Push(namespaceDeclaration.Name);
                namespaceDeclaration.AcceptChildren(this, visitorData);
                visitorData.currentNamespaces.Pop();

                return(null);
            }
		public void Setup()
		{
			mocks = new MockRepository();
			typeResolver = mocks.DynamicMock<ITypeResolver>();
			visitor = new TypeInspectionVisitor(typeResolver);

			type = new TypeDeclaration(Modifiers.Public, new List<AttributeSection>()) {Name = "SomeType"};
			@namespace = new NamespaceDeclaration("SomeNamespace");
			@namespace.AddChild(type);
			type.Parent = @namespace;
		}
		public void VisitingNamespace_MustAddParentNamespacesToTypeResolver()
		{
			var typeTables = new List<TypeTableEntry>();
			var usings = new List<String>();
			var aliases = new Dictionary<string, string>();
			var resolver = new TypeResolver(typeTables, usings, aliases);
			var nsDecl = new NamespaceDeclaration("System.Collections.Specialized");
			var visitor = new TypeResolvingVisitor(resolver);

			visitor.VisitNamespaceDeclaration(nsDecl, null);

			Assert.AreEqual(3, usings.Count);
		}
        public override object TrackedVisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
        {
            Removeables.Clear();
            UsedTypes.Clear();

            NamespaceDeclaration replaced = namespaceDeclaration;
            IList types = AstUtil.GetChildrenWithType(replaced, typeof(TypeDeclaration));
            foreach (TypeDeclaration typeDeclaration in types)
            {
                VisitTypeDeclaration(typeDeclaration, data);
            }
            ReplaceCurrentNode(replaced);
            return base.TrackedVisitNamespaceDeclaration(namespaceDeclaration, data);
        }
        public override object VisitNamespaceDeclaration(AST.NamespaceDeclaration namespaceDeclaration, object data)
        {
            DefaultUsingScope oldNamespace = currentNamespace;

            foreach (string name in namespaceDeclaration.Name.Split('.'))
            {
                currentNamespace               = new DefaultUsingScope();
                currentNamespace.Parent        = currentNamespace;
                currentNamespace.NamespaceName = PrependCurrentNamespace(name);
                currentNamespace.Parent.ChildScopes.Add(currentNamespace);
            }
            object ret = namespaceDeclaration.AcceptChildren(this, data);

            currentNamespace = oldNamespace;
            return(ret);
        }
        private void CreateTypeDeclarations(string jarFile)
        {
            LoadClasses(Path.GetFullPath(jarFile));

            foreach (string package in classes.Keys)
            {
                if (!IsIncluded(package))
                    continue;
                Console.WriteLine(package);
                IDictionary types = new Hashtable();
                IList packageClasses = (IList) classes[package];
                foreach (ClassFile cf in packageClasses)
                {
                    if (cf.IsPublic)
                    {
                        TypeDeclaration type = GetTypeDeclaration(cf);
                        types.Add(type.Name, type);
                    }
                }

                foreach (TypeDeclaration type in types.Values)
                {
                    if (type.Name.IndexOf("$") == -1)
                    {
                        NamespaceDeclaration nameSpace = new NamespaceDeclaration(package);
                        type.Parent = nameSpace;
                        nameSpace.AddChild(type);

                        CompilationUnit cu = new CompilationUnit();
                        cu.Children.Add(nameSpace);
                        compilationUnits.Add(cu);
                    }
                    else
                    {
                        string parentName = type.Name.Substring(0, type.Name.IndexOf("$"));
                        TypeDeclaration parent = (TypeDeclaration) types[GetTypeName(parentName)];
                        if (parent != null)
                        {
                            type.Name = GetTypeName(type.Name);
                            parent.AddChild(type);
                        }
                    }
                }
            }
        }
예제 #16
0
 public override object VisitNamespaceDeclaration (NamespaceDeclaration node, object data)
 {
     if (!String.IsNullOrEmpty (Namespace))
         throw CreateException (node, "Nested namespaces are not supported");
     
     string prevNamespace = Namespace;
     //var prevUsings = Usings;
     
     Namespace = node.Name;
     //Usings = new HashSet<string> ();
     
     node.AcceptChildren (this, null);
     
     Namespace = prevNamespace;
     //Usings = prevUsings;
     
     return null;
 }
 public override object TrackedVisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
 {
     similarTypes = new Hashtable();
     IList usings = AstUtil.GetChildrenWithType(namespaceDeclaration, typeof(UsingDeclaration));
     foreach (UsingDeclaration usingDeclaration in usings)
     {
         Using usi = (Using) usingDeclaration.Usings[0];
         string fullName = GetFullyQualifiedName(usi);
         string type = GetShortReferenceTypeName(usi);
         string projectType = namespaceDeclaration.Name + "." + type;
         if (CodeBase.Types.Contains(projectType))
             similarTypes.Add(type, fullName);
     }
     if (similarTypes.Count < 1)
         return null;
     else
         return base.TrackedVisitNamespaceDeclaration(namespaceDeclaration, data);
 }
        public override object VisitNamespaceDeclaration(AST.NamespaceDeclaration namespaceDeclaration, object data)
        {
            string name;

            if (currentNamespace.Count == 0)
            {
                name = namespaceDeclaration.Name;
            }
            else
            {
                name = currentNamespace.Peek() + '.' + namespaceDeclaration.Name;
            }

            currentNamespace.Push(name);
            object ret = namespaceDeclaration.AcceptChildren(this, data);

            currentNamespace.Pop();
            return(ret);
        }
		public override object VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
		{
			if (RootNamespaceToRemove != null) {
				if (namespaceDeclaration.Name == RootNamespaceToRemove) {
					// remove namespace declaration
					INode insertAfter = namespaceDeclaration;
					foreach (INode child in namespaceDeclaration.Children) {
						InsertAfterSibling(insertAfter, child);
						insertAfter = child;
					}
					namespaceDeclaration.Children.Clear();
					RemoveCurrentNode();
				} else if (namespaceDeclaration.Name.StartsWith(RootNamespaceToRemove + ".")) {
					namespaceDeclaration.Name = namespaceDeclaration.Name.Substring(RootNamespaceToRemove.Length + 1);
				}
			}
			base.VisitNamespaceDeclaration(namespaceDeclaration, data);
			return null;
		}
        public override object TrackedVisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
        {
            IList addingUsings = new ArrayList();

            base.TrackedVisitNamespaceDeclaration(namespaceDeclaration, addingUsings);

            if (addingUsings.Count > 0)
            {
                NamespaceDeclaration replaceNamespace = namespaceDeclaration;
                List<INode> children = namespaceDeclaration.Children;
                INode[] childMembers = new INode[children.Count];
                children.CopyTo(childMembers);
                replaceNamespace.Children.Clear();
                foreach (UsingDeclaration usi in addingUsings)
                    replaceNamespace.Children.Add(usi);
                foreach (INode node in childMembers)
                {
                    replaceNamespace.Children.Add(node);
                }
                ReplaceCurrentNode(replaceNamespace);
            }
            return null;
        }
예제 #21
0
        public void AddUsing(NamespaceDeclaration namespaceDeclaration, IList usings, UsingDeclaration usingDeclaration)
        {
            Using usin = (Using) usingDeclaration.Usings[0];
            string alias = null;
            string name = usin.Name;

            if (!usin.IsAlias)
                name = name.Substring(name.LastIndexOf('.') + 1);
            else
                alias = usin.Alias.Type;

            if (CodeBase.References.Contains(name))
            {
                string reference = (string) CodeBase.References[name];
                alias = alias.Replace("." + name, "." + reference);
                TypeReference typeReference = AstUtil.GetTypeReference(alias, namespaceDeclaration);
                UsingDeclaration addingUsingDeclaration = new UsingDeclaration(reference, typeReference);
                if (!Contains(usings, addingUsingDeclaration))
                {
                    namespaceDeclaration.Children.Insert(0, addingUsingDeclaration);
                }
            }
        }
예제 #22
0
파일: Parser.cs 프로젝트: Altaxo/Altaxo
	void NamespaceMemberDecl() {

//#line  361 "VBNET.ATG" 
		ModifierList m = new ModifierList();
		AttributeSection section;
		List<AttributeSection> attributes = new List<AttributeSection>();
		string qualident;
		
		if (la.kind == 160) {
			lexer.NextToken();

//#line  368 "VBNET.ATG" 
			Location startPos = t.Location;
			
			Qualident(
//#line  370 "VBNET.ATG" 
out qualident);

//#line  372 "VBNET.ATG" 
			INode node =  new NamespaceDeclaration(qualident);
			node.StartLocation = startPos;
			AddChild(node);
			BlockStart(node);
			
			EndOfStmt();
			NamespaceBody();

//#line  380 "VBNET.ATG" 
			node.EndLocation = t.Location;
			BlockEnd();
			
		} else if (StartOf(2)) {
			while (la.kind == 40) {
				AttributeSection(
//#line  384 "VBNET.ATG" 
out section);

//#line  384 "VBNET.ATG" 
				attributes.Add(section); 
			}
			while (StartOf(3)) {
				TypeModifier(
//#line  385 "VBNET.ATG" 
m);
			}
			NonModuleDeclaration(
//#line  385 "VBNET.ATG" 
m, attributes);
		} else SynErr(245);
	}
 public override object TrackedVisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
 {
     return namespaceDeclaration.AcceptChildren(this, data);
 }
		public sealed override object VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data) {
			this.BeginVisit(namespaceDeclaration);
			object result = this.TrackedVisitNamespaceDeclaration(namespaceDeclaration, data);
			this.EndVisit(namespaceDeclaration);
			return result;
		}
		public virtual object TrackedVisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data) {
			return base.VisitNamespaceDeclaration(namespaceDeclaration, data);
		}
		public override List<Change> PerformChanges (RefactoringOptions options, object prop)
		{
			IResolver resolver = options.GetResolver ();
			List<Change> result = new List<Change> ();
			INRefactoryASTProvider provider = options.GetASTProvider ();
			if (resolver == null || provider == null)
				return result;

			TypeDeclaration newType = new TypeDeclaration (ICSharpCode.NRefactory.Ast.Modifiers.None, null);
			newType.Name = createExpression.CreateType.Type;
			newType.Type = GetNewTypeType ();

			ConstructorDeclaration constructor = new ConstructorDeclaration (newType.Name, ICSharpCode.NRefactory.Ast.Modifiers.Public, null, null);
			constructor.Body = new BlockStatement ();
			int i = 0;
			foreach (Expression expression in createExpression.Parameters) {
				i++;
				string output = provider.OutputNode (options.Dom, expression);
				string parameterName;
				if (Char.IsLetter (output[0]) || output[0] == '_') {
					parameterName = output;
				} else {
					parameterName = "par" + i;
				}

				ResolveResult resolveResult2 = resolver.Resolve (new ExpressionResult (output), options.ResolveResult.ResolvedExpression.Region.Start);
				TypeReference typeReference = new TypeReference (resolveResult2.ResolvedType.ToInvariantString ());
				typeReference.IsKeyword = true;
				ParameterDeclarationExpression pde = new ParameterDeclarationExpression (typeReference, parameterName);
				constructor.Parameters.Add (pde);
			}
			ICSharpCode.NRefactory.Ast.INode node = newType;
			IType curType = options.Document.CompilationUnit.GetTypeAt (options.Document.TextEditor.CursorLine, options.Document.TextEditor.CursorColumn);
			if (curType != null && !string.IsNullOrEmpty (curType.Namespace)) {
				NamespaceDeclaration namespaceDeclaration = new NamespaceDeclaration (curType.Namespace);
				namespaceDeclaration.Children.Add (newType);
				node = namespaceDeclaration;
			}
			newType.Children.Add (constructor);
			string fileName = GetName (Path.Combine (Path.GetDirectoryName (options.Document.FileName), newType.Name + Path.GetExtension (options.Document.FileName)));
			string header = options.Dom.Project is DotNetProject ? StandardHeaderService.GetHeader (options.Dom.Project, fileName, true) + Environment.NewLine : "";
			CreateFileChange createFile = new CreateFileChange (fileName, header + provider.OutputNode (options.Dom, node));
			result.Add (createFile);
			result.Add (new OpenFileChange (fileName));
			return result;
		}
예제 #27
0
		public virtual object VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data) {
			throw new global::System.NotImplementedException("NamespaceDeclaration");
		}
예제 #28
0
	void NamespaceMemberDecl() {

#line  341 "VBNET.ATG" 
		ModifierList m = new ModifierList();
		AttributeSection section;
		List<AttributeSection> attributes = new List<AttributeSection>();
		string qualident;
		
		if (la.kind == 146) {
			lexer.NextToken();

#line  348 "VBNET.ATG" 
			Location startPos = t.Location;
			
			Qualident(
#line  350 "VBNET.ATG" 
out qualident);

#line  352 "VBNET.ATG" 
			INode node =  new NamespaceDeclaration(qualident);
			node.StartLocation = startPos;
			compilationUnit.AddChild(node);
			compilationUnit.BlockStart(node);
			
			EndOfStmt();
			NamespaceBody();

#line  360 "VBNET.ATG" 
			node.EndLocation = t.Location;
			compilationUnit.BlockEnd();
			
		} else if (StartOf(2)) {
			while (la.kind == 28) {
				AttributeSection(
#line  364 "VBNET.ATG" 
out section);

#line  364 "VBNET.ATG" 
				attributes.Add(section); 
			}
			while (StartOf(3)) {
				TypeModifier(
#line  365 "VBNET.ATG" 
m);
			}
			NonModuleDeclaration(
#line  365 "VBNET.ATG" 
m, attributes);
		} else SynErr(228);
	}
 public override object VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
 {
     if (this.CheckNode(namespaceDeclaration)) {
         return null;
     }
     return base.VisitNamespaceDeclaration(namespaceDeclaration, data);
 }
예제 #30
0
	void NamespaceMemberDecl() {

#line  335 "cs.ATG" 
		AttributeSection section;
		List<AttributeSection> attributes = new List<AttributeSection>();
		ModifierList m = new ModifierList();
		string qualident;
		
		if (la.kind == 88) {
			lexer.NextToken();

#line  341 "cs.ATG" 
			Location startPos = t.Location; 
			Qualident(
#line  342 "cs.ATG" 
out qualident);

#line  342 "cs.ATG" 
			INode node =  new NamespaceDeclaration(qualident);
			node.StartLocation = startPos;
			AddChild(node);
			BlockStart(node);
			
			Expect(16);
			while (la.kind == 71) {
				ExternAliasDirective();
			}
			while (la.kind == 121) {
				UsingDirective();
			}
			while (StartOf(1)) {
				NamespaceMemberDecl();
			}
			Expect(17);
			if (la.kind == 11) {
				lexer.NextToken();
			}

#line  352 "cs.ATG" 
			node.EndLocation   = t.EndLocation;
			BlockEnd();
			
		} else if (StartOf(2)) {
			while (la.kind == 18) {
				AttributeSection(
#line  356 "cs.ATG" 
out section);

#line  356 "cs.ATG" 
				attributes.Add(section); 
			}
			while (StartOf(3)) {
				TypeModifier(
#line  357 "cs.ATG" 
m);
			}
			TypeDecl(
#line  358 "cs.ATG" 
m, attributes);
		} else SynErr(148);
	}
예제 #31
0
 public override object TrackedVisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
 {
     IList usings = AstUtil.GetChildrenWithType(namespaceDeclaration, typeof(UsingDeclaration));
     foreach (UsingDeclaration usi in usings)
     {
         AddUsing(namespaceDeclaration, usings, usi);
     }
     return base.TrackedVisitNamespaceDeclaration(namespaceDeclaration, data);
 }
			internal static void EvaluateNamespaceLOC (MetricsContext ctx, NamespaceDeclaration node)
			{
				if(node == null)
					return;
				//MessageService.ShowMessage(node.ToString());
				try {
					NamespaceProperties namespaceRef = ComplexityMetrics.ProjProp.GetNamespaceReference(node.Name);
					if(namespaceRef==null)
						return;
					Dictionary<int, ICSharpCode.NRefactory.Ast.INode> typeLocations = new Dictionary<int, ICSharpCode.NRefactory.Ast.INode>();
					foreach(var childnode in node.Children){
						if(childnode is TypeDeclaration)
							typeLocations.Add(childnode.StartLocation.Line, childnode);
					}
					
					if(namespaceRef.FilePath==null||namespaceRef.FilePath=="")
						namespaceRef.FilePath = ComplexityMetrics.File.FilePath;
					
					#region CommonLogic
					int startIndex = node.StartLocation.Line;
					int endIndex = node.EndLocation.Line;
					
					ulong totalLines = 0, totalRealLines = 0, totalCommentedLines = 0;
					int realLines = 0;
					bool isSingleLineComment = false;
					bool isMultipleLineComment = false;
					
					for(int i=startIndex;i<endIndex;i++)
					{
						string lineText = ComplexityMetrics.FileDoc.GetTextAt(ComplexityMetrics.FileText[i]).Trim();
						if(isMultipleLineComment){
							totalCommentedLines++;
							if(lineText.EndsWith("*/"))
								isMultipleLineComment = false;
							continue;
						}
						if(lineText.StartsWith ("/*")){
							isMultipleLineComment = true;
							totalCommentedLines++;
							continue;
						}
						isSingleLineComment = lineText.StartsWith ("//");
						if(isSingleLineComment)
							totalCommentedLines++;
						if (lineText.Length > 0 && !isSingleLineComment)
						{
							realLines++;
							if((typeLocations.ContainsKey(i)) && (typeLocations[i] is TypeDeclaration))
								i = EvaluateTypeLOC(ctx, namespaceRef, (TypeDeclaration)typeLocations[i], i);
							if((typeLocations.ContainsKey(i+1)) &&(typeLocations[i+1] is TypeDeclaration))
								i = EvaluateTypeLOC(ctx, namespaceRef, (TypeDeclaration)typeLocations[i+1], i);
						}
					}
				
					totalLines     += (ulong)(startIndex-endIndex+1);
					totalRealLines += (ulong)realLines;
					namespaceRef.LOCReal += totalRealLines;
					namespaceRef.LOCComments += totalCommentedLines;
					#endregion CommonLogic
				} catch (Exception e) {
					Console.WriteLine(e.ToString());
				}
			}
			public override object VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
			{
				includeCommentsAfterLine = namespaceDeclaration.EndLocation.Y;
				if (firstType) {
					includeCommentsUpToLine = namespaceDeclaration.StartLocation.Y;
					return base.VisitNamespaceDeclaration(namespaceDeclaration, data);
				} else {
					RemoveCurrentNode();
					return null;
				}
			}
예제 #34
0
        public override object VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, object data)
        {
            CodeNamespace currentNamespace = new CodeNamespace(namespaceDeclaration.Name);
            //namespaces.Add(currentNamespace);
            // add imports from mother namespace
            foreach (CodeNamespaceImport import in ((CodeNamespace)namespaceDeclarations.Peek()).Imports) {
                currentNamespace.Imports.Add(import);
            }
            namespaceDeclarations.Push(currentNamespace);
            namespaceDeclaration.AcceptChildren(this, data);
            namespaceDeclarations.Pop();
            codeCompileUnit.Namespaces.Add(currentNamespace);

            // Nested namespaces are not allowed in CodeDOM
            return null;
        }