public override object VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) { Push(); object result = base.VisitTypeDeclaration(typeDeclaration, data); Pop(); return result; }
public override object VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) { // fix default visibility of inner classes if (currentTypeDeclaration != null && (typeDeclaration.Modifier & Modifiers.Visibility) == 0) typeDeclaration.Modifier |= Modifiers.Public; TypeDeclaration oldTypeDeclaration = currentTypeDeclaration; currentTypeDeclaration = typeDeclaration; base.VisitTypeDeclaration(typeDeclaration, data); currentTypeDeclaration = oldTypeDeclaration; return null; }
public override object VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) { // fix default inner type visibility if (currentType != null && (typeDeclaration.Modifier & Modifiers.Visibility) == 0) typeDeclaration.Modifier |= Modifiers.Private; TypeDeclaration outerType = currentType; currentType = typeDeclaration; if ((typeDeclaration.Modifier & Modifiers.Static) == Modifiers.Static) { typeDeclaration.Modifier &= ~Modifiers.Static; typeDeclaration.Modifier |= Modifiers.Sealed; typeDeclaration.Children.Insert(0, new ConstructorDeclaration("#ctor", Modifiers.Private, null, null)); } // Conflicting field/property names -> m_field List<string> properties = new List<string>(); foreach (object o in typeDeclaration.Children) { PropertyDeclaration pd = o as PropertyDeclaration; if (pd != null) { properties.Add(pd.Name); } } List<VariableDeclaration> conflicts = new List<VariableDeclaration>(); foreach (object o in typeDeclaration.Children) { FieldDeclaration fd = o as FieldDeclaration; if (fd != null) { foreach (VariableDeclaration var in fd.Fields) { string name = var.Name; foreach (string propertyName in properties) { if (name.Equals(propertyName, StringComparison.InvariantCultureIgnoreCase)) { conflicts.Add(var); } } } } } new PrefixFieldsVisitor(conflicts, "m_").Run(typeDeclaration); base.VisitTypeDeclaration(typeDeclaration, data); currentType = outerType; return null; }
// The following conversions are implemented: // Public Event EventName(param As String) -> automatic delegate declaration // static variables inside methods become fields // Explicit interface implementation: // => create additional member for implementing the interface // or convert to implicit interface implementation // Modules: make all members static // Use Convert.ToInt32 for VB casts public override object VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) { if (typeDeclaration.Type == ClassType.Module) { typeDeclaration.Type = ClassType.Class; typeDeclaration.Modifier |= Modifiers.Static; foreach (INode node in typeDeclaration.Children) { MemberNode aNode = node as MemberNode; if (aNode != null) { aNode.Modifier |= Modifiers.Static; } FieldDeclaration fd = node as FieldDeclaration; if (fd != null) { if ((fd.Modifier & Modifiers.Const) == 0) fd.Modifier |= Modifiers.Static; } } } return base.VisitTypeDeclaration(typeDeclaration, data); }
void TypeDecl( #line 362 "Frames/cs.ATG" ModifierList m, List<AttributeSection> attributes) { #line 364 "Frames/cs.ATG" TypeReference type; List<TypeReference> names; List<ParameterDeclarationExpression> p = new List<ParameterDeclarationExpression>(); string name; List<TemplateDefinition> templates; if (la.kind == 59) { #line 370 "Frames/cs.ATG" m.Check(Modifiers.Classes); lexer.NextToken(); #line 371 "Frames/cs.ATG" TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); templates = newType.Templates; compilationUnit.AddChild(newType); compilationUnit.BlockStart(newType); newType.StartLocation = m.GetDeclarationLocation(t.Location); newType.Type = Types.Class; Identifier(); #line 379 "Frames/cs.ATG" newType.Name = t.val; if (la.kind == 23) { TypeParameterList( #line 382 "Frames/cs.ATG" templates); } if (la.kind == 9) { ClassBase( #line 384 "Frames/cs.ATG" out names); #line 384 "Frames/cs.ATG" newType.BaseTypes = names; } while (la.kind == 127) { TypeParameterConstraintsClause( #line 387 "Frames/cs.ATG" templates); } #line 389 "Frames/cs.ATG" newType.BodyStartLocation = t.EndLocation; Expect(16); ClassBody(); Expect(17); if (la.kind == 11) { lexer.NextToken(); } #line 393 "Frames/cs.ATG" newType.EndLocation = t.EndLocation; compilationUnit.BlockEnd(); } else if (StartOf(9)) { #line 396 "Frames/cs.ATG" m.Check(Modifiers.StructsInterfacesEnumsDelegates); if (la.kind == 109) { lexer.NextToken(); #line 397 "Frames/cs.ATG" TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); templates = newType.Templates; newType.StartLocation = m.GetDeclarationLocation(t.Location); compilationUnit.AddChild(newType); compilationUnit.BlockStart(newType); newType.Type = Types.Struct; Identifier(); #line 404 "Frames/cs.ATG" newType.Name = t.val; if (la.kind == 23) { TypeParameterList( #line 407 "Frames/cs.ATG" templates); } if (la.kind == 9) { StructInterfaces( #line 409 "Frames/cs.ATG" out names); #line 409 "Frames/cs.ATG" newType.BaseTypes = names; } while (la.kind == 127) { TypeParameterConstraintsClause( #line 412 "Frames/cs.ATG" templates); } #line 415 "Frames/cs.ATG" newType.BodyStartLocation = t.EndLocation; StructBody(); if (la.kind == 11) { lexer.NextToken(); } #line 417 "Frames/cs.ATG" newType.EndLocation = t.EndLocation; compilationUnit.BlockEnd(); } else if (la.kind == 83) { lexer.NextToken(); #line 421 "Frames/cs.ATG" TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); templates = newType.Templates; compilationUnit.AddChild(newType); compilationUnit.BlockStart(newType); newType.StartLocation = m.GetDeclarationLocation(t.Location); newType.Type = Types.Interface; Identifier(); #line 428 "Frames/cs.ATG" newType.Name = t.val; if (la.kind == 23) { TypeParameterList( #line 431 "Frames/cs.ATG" templates); } if (la.kind == 9) { InterfaceBase( #line 433 "Frames/cs.ATG" out names); #line 433 "Frames/cs.ATG" newType.BaseTypes = names; } while (la.kind == 127) { TypeParameterConstraintsClause( #line 436 "Frames/cs.ATG" templates); } #line 438 "Frames/cs.ATG" newType.BodyStartLocation = t.EndLocation; InterfaceBody(); if (la.kind == 11) { lexer.NextToken(); } #line 440 "Frames/cs.ATG" newType.EndLocation = t.EndLocation; compilationUnit.BlockEnd(); } else if (la.kind == 68) { lexer.NextToken(); #line 444 "Frames/cs.ATG" TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); compilationUnit.AddChild(newType); compilationUnit.BlockStart(newType); newType.StartLocation = m.GetDeclarationLocation(t.Location); newType.Type = Types.Enum; Identifier(); #line 450 "Frames/cs.ATG" newType.Name = t.val; if (la.kind == 9) { lexer.NextToken(); IntegralType( #line 451 "Frames/cs.ATG" out name); #line 451 "Frames/cs.ATG" newType.BaseTypes.Add(new TypeReference(name, true)); } #line 453 "Frames/cs.ATG" newType.BodyStartLocation = t.EndLocation; EnumBody(); if (la.kind == 11) { lexer.NextToken(); } #line 455 "Frames/cs.ATG" newType.EndLocation = t.EndLocation; compilationUnit.BlockEnd(); } else { lexer.NextToken(); #line 459 "Frames/cs.ATG" DelegateDeclaration delegateDeclr = new DelegateDeclaration(m.Modifier, attributes); templates = delegateDeclr.Templates; delegateDeclr.StartLocation = m.GetDeclarationLocation(t.Location); if ( #line 463 "Frames/cs.ATG" NotVoidPointer()) { Expect(123); #line 463 "Frames/cs.ATG" delegateDeclr.ReturnType = new TypeReference("System.Void", true); } else if (StartOf(10)) { Type( #line 464 "Frames/cs.ATG" out type); #line 464 "Frames/cs.ATG" delegateDeclr.ReturnType = type; } else SynErr(152); Identifier(); #line 466 "Frames/cs.ATG" delegateDeclr.Name = t.val; if (la.kind == 23) { TypeParameterList( #line 469 "Frames/cs.ATG" templates); } Expect(20); if (StartOf(11)) { FormalParameterList( #line 471 "Frames/cs.ATG" p); #line 471 "Frames/cs.ATG" delegateDeclr.Parameters = p; } Expect(21); while (la.kind == 127) { TypeParameterConstraintsClause( #line 475 "Frames/cs.ATG" templates); } Expect(11); #line 477 "Frames/cs.ATG" delegateDeclr.EndLocation = t.EndLocation; compilationUnit.AddChild(delegateDeclr); } } else SynErr(153); }
public sealed override object VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) { this.BeginVisit(typeDeclaration); object result = this.TrackedVisitTypeDeclaration(typeDeclaration, data); this.EndVisit(typeDeclaration); return result; }
public virtual object TrackedVisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) { return base.VisitTypeDeclaration(typeDeclaration, data); }
internal static int EvaluateTypeLOC (MetricsContext ctx, NamespaceProperties namespaceRef, TypeDeclaration node, int startIndex) { if(node==null) return -1; StringBuilder typeName = new StringBuilder("");; try { string[] prefixArray = ComplexityMetrics.PrefixName.ToArray(); for(int i=0;i<prefixArray.Length;i++) typeName.Append(prefixArray[prefixArray.Length-i-1]+"."); typeName.Append(node.Name); foreach(var templateDef in node.Templates) { foreach(var bases in templateDef.Bases) { if(bases.Type.Contains("constraint:")) continue; typeName.Append(" " + bases.Type.Substring(bases.Type.LastIndexOf(".")+1)); } } IProperties typeRef = null; switch(node.Type) { case ICSharpCode.OldNRefactory.Ast.ClassType.Class: typeRef = ComplexityMetrics.ProjProp.GetClassReference(typeName.ToString()); break; case ICSharpCode.OldNRefactory.Ast.ClassType.Enum: typeRef = ComplexityMetrics.ProjProp.GetEnumReference(typeName.ToString(), namespaceRef); break; case ICSharpCode.OldNRefactory.Ast.ClassType.Struct: typeRef = ComplexityMetrics.ProjProp.GetStructReference(typeName.ToString(), namespaceRef); break; case ICSharpCode.OldNRefactory.Ast.ClassType.Interface: typeRef = ComplexityMetrics.ProjProp.GetInterfaceReference(typeName.ToString(), namespaceRef); break; default: return node.EndLocation.Line; } if(typeRef==null) return node.EndLocation.Line; Dictionary<int, ICSharpCode.OldNRefactory.Ast.INode> childLocations = new Dictionary<int, ICSharpCode.OldNRefactory.Ast.INode>(0); foreach(ICSharpCode.OldNRefactory.Ast.INode childNode in node.Children) { if((childNode is TypeDeclaration) || (childNode is ConstructorDeclaration) || (childNode is MethodDeclaration)) childLocations.Add(childNode.StartLocation.Line, childNode); } if(typeRef.FilePath==null||typeRef.FilePath=="") typeRef.FilePath=ComplexityMetrics.File.FilePath; 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(childLocations.ContainsKey(i)) { ComplexityMetrics.PrefixName.Push(node.Name); if((childLocations[i] is MethodDeclaration) || (childLocations[i] is ConstructorDeclaration)) { ComplexityMetrics.ProcessMethod(ctx, childLocations[i], typeRef); i = childLocations[i].EndLocation.Line; } else if(childLocations[i] is TypeDeclaration) { i = EvaluateTypeLOC(ctx, namespaceRef, (TypeDeclaration)childLocations[i], i); } ComplexityMetrics.PrefixName.Pop(); } } } totalLines += (ulong)(endIndex-startIndex+2); totalRealLines += (ulong)realLines; if(typeRef is ClassProperties) { ((ClassProperties)typeRef).LOCReal += totalRealLines; ((ClassProperties)typeRef).LOCComments += totalCommentedLines; } else if (typeRef is InterfaceProperties) { ((InterfaceProperties)typeRef).LOCReal += totalRealLines; ((InterfaceProperties)typeRef).LOCComments += totalCommentedLines; } else if (typeRef is EnumProperties) { ((EnumProperties)typeRef).LOCReal += totalRealLines; ((EnumProperties)typeRef).LOCComments += totalCommentedLines; } else if (typeRef is StructProperties) { ((StructProperties)typeRef).LOCReal += totalRealLines; ((StructProperties)typeRef).LOCComments += totalCommentedLines; } else if (typeRef is DelegateProperties) { ((DelegateProperties)typeRef).LOCReal += totalRealLines; ((DelegateProperties)typeRef).LOCComments += totalCommentedLines; } } catch (Exception e) { Console.WriteLine("Error in class " + typeName.ToString()); Console.WriteLine(e.ToString()); } return node.EndLocation.Line; }
public virtual object VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) { throw new global::System.NotImplementedException("TypeDeclaration"); }
void NonModuleDeclaration( #line 424 "VBNET.ATG" ModifierList m, List<AttributeSection> attributes) { #line 426 "VBNET.ATG" TypeReference typeRef = null; List<TypeReference> baseInterfaces = null; switch (la.kind) { case 71: { #line 429 "VBNET.ATG" m.Check(Modifiers.Classes); lexer.NextToken(); #line 432 "VBNET.ATG" TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); newType.StartLocation = t.Location; compilationUnit.AddChild(newType); compilationUnit.BlockStart(newType); newType.Type = ClassType.Class; Identifier(); #line 439 "VBNET.ATG" newType.Name = t.val; TypeParameterList( #line 440 "VBNET.ATG" newType.Templates); EndOfStmt(); #line 442 "VBNET.ATG" newType.BodyStartLocation = t.Location; if (la.kind == 127) { ClassBaseType( #line 443 "VBNET.ATG" out typeRef); #line 443 "VBNET.ATG" SafeAdd(newType, newType.BaseTypes, typeRef); } while (la.kind == 123) { TypeImplementsClause( #line 444 "VBNET.ATG" out baseInterfaces); #line 444 "VBNET.ATG" newType.BaseTypes.AddRange(baseInterfaces); } ClassBody( #line 445 "VBNET.ATG" newType); Expect(100); Expect(71); #line 446 "VBNET.ATG" newType.EndLocation = t.EndLocation; EndOfStmt(); #line 449 "VBNET.ATG" compilationUnit.BlockEnd(); break; } case 141: { lexer.NextToken(); #line 453 "VBNET.ATG" m.Check(Modifiers.VBModules); TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); compilationUnit.AddChild(newType); compilationUnit.BlockStart(newType); newType.StartLocation = m.GetDeclarationLocation(t.Location); newType.Type = ClassType.Module; Identifier(); #line 460 "VBNET.ATG" newType.Name = t.val; EndOfStmt(); #line 462 "VBNET.ATG" newType.BodyStartLocation = t.Location; ModuleBody( #line 463 "VBNET.ATG" newType); #line 465 "VBNET.ATG" compilationUnit.BlockEnd(); break; } case 194: { lexer.NextToken(); #line 469 "VBNET.ATG" m.Check(Modifiers.VBStructures); TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); compilationUnit.AddChild(newType); compilationUnit.BlockStart(newType); newType.StartLocation = m.GetDeclarationLocation(t.Location); newType.Type = ClassType.Struct; Identifier(); #line 476 "VBNET.ATG" newType.Name = t.val; TypeParameterList( #line 477 "VBNET.ATG" newType.Templates); EndOfStmt(); #line 479 "VBNET.ATG" newType.BodyStartLocation = t.Location; while (la.kind == 123) { TypeImplementsClause( #line 480 "VBNET.ATG" out baseInterfaces); #line 480 "VBNET.ATG" newType.BaseTypes.AddRange(baseInterfaces); } StructureBody( #line 481 "VBNET.ATG" newType); #line 483 "VBNET.ATG" compilationUnit.BlockEnd(); break; } case 102: { lexer.NextToken(); #line 488 "VBNET.ATG" m.Check(Modifiers.VBEnums); TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); newType.StartLocation = m.GetDeclarationLocation(t.Location); compilationUnit.AddChild(newType); compilationUnit.BlockStart(newType); newType.Type = ClassType.Enum; Identifier(); #line 496 "VBNET.ATG" newType.Name = t.val; if (la.kind == 50) { lexer.NextToken(); NonArrayTypeName( #line 497 "VBNET.ATG" out typeRef, false); #line 497 "VBNET.ATG" SafeAdd(newType, newType.BaseTypes, typeRef); } EndOfStmt(); #line 499 "VBNET.ATG" newType.BodyStartLocation = t.Location; EnumBody( #line 500 "VBNET.ATG" newType); #line 502 "VBNET.ATG" compilationUnit.BlockEnd(); break; } case 129: { lexer.NextToken(); #line 507 "VBNET.ATG" m.Check(Modifiers.VBInterfacs); TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes); newType.StartLocation = m.GetDeclarationLocation(t.Location); compilationUnit.AddChild(newType); compilationUnit.BlockStart(newType); newType.Type = ClassType.Interface; Identifier(); #line 514 "VBNET.ATG" newType.Name = t.val; TypeParameterList( #line 515 "VBNET.ATG" newType.Templates); EndOfStmt(); #line 517 "VBNET.ATG" newType.BodyStartLocation = t.Location; while (la.kind == 127) { InterfaceBase( #line 518 "VBNET.ATG" out baseInterfaces); #line 518 "VBNET.ATG" newType.BaseTypes.AddRange(baseInterfaces); } InterfaceBody( #line 519 "VBNET.ATG" newType); #line 521 "VBNET.ATG" compilationUnit.BlockEnd(); break; } case 90: { lexer.NextToken(); #line 526 "VBNET.ATG" m.Check(Modifiers.VBDelegates); DelegateDeclaration delegateDeclr = new DelegateDeclaration(m.Modifier, attributes); delegateDeclr.ReturnType = new TypeReference("System.Void", true); delegateDeclr.StartLocation = m.GetDeclarationLocation(t.Location); List<ParameterDeclarationExpression> p = new List<ParameterDeclarationExpression>(); if (la.kind == 195) { lexer.NextToken(); Identifier(); #line 533 "VBNET.ATG" delegateDeclr.Name = t.val; TypeParameterList( #line 534 "VBNET.ATG" delegateDeclr.Templates); if (la.kind == 25) { lexer.NextToken(); if (StartOf(4)) { FormalParameterList( #line 535 "VBNET.ATG" p); } Expect(26); #line 535 "VBNET.ATG" delegateDeclr.Parameters = p; } } else if (la.kind == 114) { lexer.NextToken(); Identifier(); #line 537 "VBNET.ATG" delegateDeclr.Name = t.val; TypeParameterList( #line 538 "VBNET.ATG" delegateDeclr.Templates); if (la.kind == 25) { lexer.NextToken(); if (StartOf(4)) { FormalParameterList( #line 539 "VBNET.ATG" p); } Expect(26); #line 539 "VBNET.ATG" delegateDeclr.Parameters = p; } if (la.kind == 50) { lexer.NextToken(); #line 540 "VBNET.ATG" TypeReference type; TypeName( #line 540 "VBNET.ATG" out type); #line 540 "VBNET.ATG" delegateDeclr.ReturnType = type; } } else SynErr(231); #line 542 "VBNET.ATG" delegateDeclr.EndLocation = t.EndLocation; EndOfStmt(); #line 545 "VBNET.ATG" compilationUnit.AddChild(delegateDeclr); break; } default: SynErr(232); break; } }
void InterfaceBody( #line 620 "VBNET.ATG" TypeDeclaration newType) { while (la.kind == 1 || la.kind == 11) { EndOfStmt(); } while (StartOf(13)) { InterfaceMemberDecl(); while (la.kind == 1 || la.kind == 11) { EndOfStmt(); } } Expect(100); Expect(129); #line 626 "VBNET.ATG" newType.EndLocation = t.EndLocation; EndOfStmt(); }
void EnumBody( #line 606 "VBNET.ATG" TypeDeclaration newType) { #line 607 "VBNET.ATG" FieldDeclaration f; while (la.kind == 1 || la.kind == 11) { EndOfStmt(); } while (StartOf(12)) { EnumMemberDecl( #line 610 "VBNET.ATG" out f); #line 612 "VBNET.ATG" compilationUnit.AddChild(f); while (la.kind == 1 || la.kind == 11) { EndOfStmt(); } } Expect(100); Expect(102); #line 616 "VBNET.ATG" newType.EndLocation = t.EndLocation; EndOfStmt(); }
void StructureBody( #line 573 "VBNET.ATG" TypeDeclaration newType) { #line 574 "VBNET.ATG" AttributeSection section; while (la.kind == 1 || la.kind == 11) { EndOfStmt(); } while (StartOf(8)) { #line 577 "VBNET.ATG" List<AttributeSection> attributes = new List<AttributeSection>(); ModifierList m = new ModifierList(); while (la.kind == 28) { AttributeSection( #line 580 "VBNET.ATG" out section); #line 580 "VBNET.ATG" attributes.Add(section); } while (StartOf(9)) { MemberModifier( #line 581 "VBNET.ATG" m); } StructureMemberDecl( #line 582 "VBNET.ATG" m, attributes); while (la.kind == 1 || la.kind == 11) { EndOfStmt(); } } Expect(100); Expect(194); #line 585 "VBNET.ATG" newType.EndLocation = t.EndLocation; EndOfStmt(); }
void ModuleBody( #line 590 "VBNET.ATG" TypeDeclaration newType) { #line 591 "VBNET.ATG" AttributeSection section; while (la.kind == 1 || la.kind == 11) { EndOfStmt(); } while (StartOf(8)) { #line 594 "VBNET.ATG" List<AttributeSection> attributes = new List<AttributeSection>(); ModifierList m = new ModifierList(); while (la.kind == 28) { AttributeSection( #line 597 "VBNET.ATG" out section); #line 597 "VBNET.ATG" attributes.Add(section); } while (StartOf(9)) { MemberModifier( #line 598 "VBNET.ATG" m); } ClassMemberDecl( #line 599 "VBNET.ATG" m, attributes); while (la.kind == 1 || la.kind == 11) { EndOfStmt(); } } Expect(100); Expect(141); #line 602 "VBNET.ATG" newType.EndLocation = t.EndLocation; EndOfStmt(); }
public virtual object VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) { Debug.Assert((typeDeclaration != null)); Debug.Assert((typeDeclaration.Attributes != null)); Debug.Assert((typeDeclaration.BaseTypes != null)); Debug.Assert((typeDeclaration.Templates != null)); for (int i = 0; i < typeDeclaration.Attributes.Count; i++) { AttributeSection o = typeDeclaration.Attributes[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = (AttributeSection)nodeStack.Pop(); if (o == null) typeDeclaration.Attributes.RemoveAt(i--); else typeDeclaration.Attributes[i] = o; } for (int i = 0; i < typeDeclaration.BaseTypes.Count; i++) { TypeReference o = typeDeclaration.BaseTypes[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = (TypeReference)nodeStack.Pop(); if (o == null) typeDeclaration.BaseTypes.RemoveAt(i--); else typeDeclaration.BaseTypes[i] = o; } for (int i = 0; i < typeDeclaration.Templates.Count; i++) { TemplateDefinition o = typeDeclaration.Templates[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = (TemplateDefinition)nodeStack.Pop(); if (o == null) typeDeclaration.Templates.RemoveAt(i--); else typeDeclaration.Templates[i] = o; } for (int i = 0; i < typeDeclaration.Children.Count; i++) { INode o = typeDeclaration.Children[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = nodeStack.Pop(); if (o == null) typeDeclaration.Children.RemoveAt(i--); else typeDeclaration.Children[i] = o; } return null; }
void ClassBody( #line 559 "VBNET.ATG" TypeDeclaration newType) { #line 560 "VBNET.ATG" AttributeSection section; while (la.kind == 1 || la.kind == 11) { EndOfStmt(); } while (StartOf(8)) { #line 563 "VBNET.ATG" List<AttributeSection> attributes = new List<AttributeSection>(); ModifierList m = new ModifierList(); while (la.kind == 28) { AttributeSection( #line 566 "VBNET.ATG" out section); #line 566 "VBNET.ATG" attributes.Add(section); } while (StartOf(9)) { MemberModifier( #line 567 "VBNET.ATG" m); } ClassMemberDecl( #line 568 "VBNET.ATG" m, attributes); while (la.kind == 1 || la.kind == 11) { EndOfStmt(); } } }
public virtual object VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) { Debug.Assert((typeDeclaration != null)); Debug.Assert((typeDeclaration.Attributes != null)); Debug.Assert((typeDeclaration.BaseTypes != null)); Debug.Assert((typeDeclaration.Templates != null)); foreach (AttributeSection o in typeDeclaration.Attributes) { Debug.Assert(o != null); o.AcceptVisitor(this, data); } foreach (TypeReference o in typeDeclaration.BaseTypes) { Debug.Assert(o != null); o.AcceptVisitor(this, data); } foreach (TemplateDefinition o in typeDeclaration.Templates) { Debug.Assert(o != null); o.AcceptVisitor(this, data); } return typeDeclaration.AcceptChildren(this, data); }
public override object VisitTypeDeclaration(TypeDeclaration typeDeclaration, object data) { TypeDeclaration oldTypeDeclaration = currentTypeDeclaration; this.currentTypeDeclaration = typeDeclaration; CodeTypeDeclaration codeTypeDeclaration = new CodeTypeDeclaration(typeDeclaration.Name); codeTypeDeclaration.TypeAttributes = ConvTypeAttributes(typeDeclaration.Modifier); codeTypeDeclaration.IsClass = typeDeclaration.Type == ClassType.Class; codeTypeDeclaration.IsEnum = typeDeclaration.Type == ClassType.Enum; codeTypeDeclaration.IsInterface = typeDeclaration.Type == ClassType.Interface; codeTypeDeclaration.IsStruct = typeDeclaration.Type == ClassType.Struct; codeTypeDeclaration.IsPartial = (typeDeclaration.Modifier & Modifiers.Partial) != 0; if (typeDeclaration.BaseTypes != null) { foreach (TypeReference typeRef in typeDeclaration.BaseTypes) { codeTypeDeclaration.BaseTypes.Add(ConvType(typeRef)); } } typeDeclarations.Push(codeTypeDeclaration); typeDeclaration.AcceptChildren(this, data); typeDeclarations.Pop(); if (typeDeclarations.Count > 0) { typeDeclarations.Peek().Members.Add(codeTypeDeclaration); } else { namespaceDeclarations.Peek().Types.Add(codeTypeDeclaration); } currentTypeDeclaration = oldTypeDeclaration; return null; }