Skip to content

Commit 8ff528b

Browse files
committed
[EXPERIMENTAL]: Always populate cached entities when extracting in overlay mode.
1 parent 122cd03 commit 8ff528b

23 files changed

+55
-30
lines changed

csharp/extractor/Semmle.Extraction.CSharp/Entities/Attribute.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,15 @@ public override void Populate(TextWriter trapFile)
5959
{
6060
// In this case, we don't extract the attribute again, as it was extracted using * ID
6161
// originally and we re-use that.
62-
if (Context.OnlyScaffold && (ReportingLocation is null || !ReportingLocation.IsInSource))
62+
if (OnlyScaffold && (ReportingLocation is null || !ReportingLocation.IsInSource))
6363
{
6464
return;
6565
}
6666

6767
var type = Type.Create(Context, Symbol.AttributeClass);
6868
trapFile.attributes(this, kind, type.TypeRef, entity);
6969

70-
if (Context.OnlyScaffold)
70+
if (OnlyScaffold)
7171
{
7272
return;
7373
}

csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedEntity.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ protected CachedEntity(Context context) : base(context)
2525
public abstract void Populate(TextWriter trapFile);
2626

2727
public abstract bool NeedsPopulation { get; }
28+
29+
public abstract bool OnlyScaffold { get; }
2830
}
2931

3032
/// <summary>
@@ -70,8 +72,6 @@ protected static void WriteLocationsToTrap<T1>(Action<T1, Location> writeAction,
7072
}
7173
}
7274

73-
public override bool NeedsPopulation { get; }
74-
7575
public override int GetHashCode() => Symbol is null ? 0 : Symbol.GetHashCode();
7676

7777
public override bool Equals(object? obj)
@@ -81,6 +81,8 @@ public override bool Equals(object? obj)
8181
}
8282

8383
public override TrapStackBehaviour TrapStackBehaviour => TrapStackBehaviour.NoLabel;
84+
85+
public override bool OnlyScaffold => Context.OnlyScaffold;
8486
}
8587

8688
/// <summary>

csharp/extractor/Semmle.Extraction.CSharp/Entities/Base/CachedSymbol.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,9 @@ public ExpressionSyntax? ExpressionBody
140140

141141
public virtual bool IsSourceDeclaration => Symbol.IsSourceDeclaration();
142142

143-
// When scaffolding we always need to populate to ensure that
143+
// When extracting in overlay mode we always need to populate to ensure that
144144
// all transitive dependencies are extracted.
145-
public override bool NeedsPopulation => Context.Defines(Symbol) || Context.OnlyScaffold;
145+
//public override bool NeedsPopulation => Context.Defines(Symbol) || Context.IsOverlayMode;
146146

147147
public Location Location => Context.CreateLocation(ReportingLocation);
148148
}

csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentBlock.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ private CommentBlock(Context cx, Comments.CommentBlock init)
1010

1111
public override void Populate(TextWriter trapFile)
1212
{
13-
if (Context.OnlyScaffold)
13+
if (OnlyScaffold)
1414
{
1515
return;
1616
}
@@ -31,7 +31,7 @@ public override void WriteId(EscapingTextWriter trapFile)
3131

3232
public void BindTo(Label entity, CommentBinding binding)
3333
{
34-
if (Context.OnlyScaffold)
34+
if (OnlyScaffold)
3535
{
3636
return;
3737
}

csharp/extractor/Semmle.Extraction.CSharp/Entities/CommentLine.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ private CommentLine(Context cx, Microsoft.CodeAnalysis.Location loc, CommentLine
2121

2222
public override void Populate(TextWriter trapFile)
2323
{
24-
if (Context.OnlyScaffold)
24+
if (OnlyScaffold)
2525
{
2626
return;
2727
}

csharp/extractor/Semmle.Extraction.CSharp/Entities/Constructor.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public override void Populate(TextWriter trapFile)
3737
}
3838
ExtractCompilerGenerated(trapFile);
3939

40-
if (Context.OnlyScaffold)
40+
if (OnlyScaffold)
4141
{
4242
return;
4343
}
@@ -60,7 +60,7 @@ protected override void ExtractInitializers(TextWriter trapFile)
6060
// Do not extract initializers for constructed types.
6161
// Extract initializers for constructors with a body, primary constructors
6262
// and default constructors for classes and structs declared in source code.
63-
if (Block is null && ExpressionBody is null && !MakeSynthetic || Context.OnlyScaffold)
63+
if (Block is null && ExpressionBody is null && !MakeSynthetic || OnlyScaffold)
6464
{
6565
return;
6666
}
@@ -187,7 +187,7 @@ Symbol.ContainingType.TypeKind is TypeKind.Class or TypeKind.Struct &&
187187
/// </summary>
188188
private bool IsBestSourceLocation => ReportingLocation is not null && Context.IsLocationInContext(ReportingLocation);
189189

190-
private bool MakeSynthetic => (IsPrimary || (IsDefault && IsBestSourceLocation)) && !Context.OnlyScaffold;
190+
private bool MakeSynthetic => (IsPrimary || (IsDefault && IsBestSourceLocation)) && !OnlyScaffold;
191191

192192
[return: NotNullIfNotNull(nameof(constructor))]
193193
public static new Constructor? Create(Context cx, IMethodSymbol? constructor)

csharp/extractor/Semmle.Extraction.CSharp/Entities/Event.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ public override void WriteId(EscapingTextWriter trapFile)
2020
trapFile.Write(";event");
2121
}
2222

23+
public override bool NeedsPopulation => Context.Defines(Symbol) || Context.IsOverlayMode;
24+
25+
public override bool OnlyScaffold => base.OnlyScaffold || !Context.Defines(Symbol);
26+
2327
public override void Populate(TextWriter trapFile)
2428
{
2529
PopulateNullability(trapFile, Symbol.GetAnnotatedType());
@@ -50,7 +54,7 @@ public override void Populate(TextWriter trapFile)
5054
TypeMention.Create(Context, syntax.ExplicitInterfaceSpecifier!.Name, this, explicitInterface);
5155
}
5256

53-
if (Context.OnlyScaffold)
57+
if (OnlyScaffold)
5458
{
5559
return;
5660
}

csharp/extractor/Semmle.Extraction.CSharp/Entities/Field.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ private Field(Context cx, IFieldSymbol init)
2121
// Do not populate backing fields.
2222
// Populate Tuple fields.
2323
public override bool NeedsPopulation =>
24-
(base.NeedsPopulation && !Symbol.IsImplicitlyDeclared) || Symbol.ContainingType.IsTupleType;
24+
((Context.Defines(Symbol) || Context.IsOverlayMode) && !Symbol.IsImplicitlyDeclared) || Symbol.ContainingType.IsTupleType;
2525

2626
public override void Populate(TextWriter trapFile)
2727
{
@@ -49,7 +49,7 @@ public override void Populate(TextWriter trapFile)
4949
}
5050
}
5151

52-
if (Context.OnlyScaffold)
52+
if (OnlyScaffold)
5353
{
5454
return;
5555
}

csharp/extractor/Semmle.Extraction.CSharp/Entities/Indexer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public override void Populate(TextWriter trapFile)
5454
TypeMention.Create(Context, syntax.ExplicitInterfaceSpecifier!.Name, this, explicitInterface);
5555
}
5656

57-
if (Context.OnlyScaffold)
57+
if (OnlyScaffold)
5858
{
5959
return;
6060
}

csharp/extractor/Semmle.Extraction.CSharp/Entities/LocalVariable.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ public sealed override void WriteQuotedId(EscapingTextWriter trapFile)
2020

2121
public override void Populate(TextWriter trapFile) { }
2222

23+
// Populated by calling "PopulateManual".
24+
public override bool NeedsPopulation => false;
25+
2326
public void PopulateManual(Expression parent, bool isVar)
2427
{
2528
var trapFile = Context.TrapWriter.Writer;
@@ -41,7 +44,7 @@ public void PopulateManual(Expression parent, bool isVar)
4144
trapFile.localvars(this, Kinds.VariableKind.None, Symbol.Name, @var, Type.Create(Context, parent.Type).TypeRef, parent);
4245
}
4346

44-
if (Context.OnlyScaffold)
47+
if (OnlyScaffold)
4548
{
4649
return;
4750
}

0 commit comments

Comments
 (0)