Skip to content

Commit c2a24e0

Browse files
committed
Made AttributeNode less confusing and fragile.
1 parent 6314c0a commit c2a24e0

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

Rubberduck.Parsing/VBA/Attributes.cs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,37 +20,35 @@ public enum Instancing
2020

2121
public class AttributeNode : IEquatable<AttributeNode>
2222
{
23-
private readonly string _name;
2423
private readonly IList<string> _values;
2524

2625
public AttributeNode(VBAParser.AttributeStmtContext context)
2726
{
2827
Context = context;
28+
Name = Context?.attributeName().GetText() ?? String.Empty;
29+
_values = Context?.attributeValue().Select(a => a.GetText()).ToList() ?? new List<string>();
2930
}
3031

3132
public AttributeNode(string name, IEnumerable<string> values)
3233
{
33-
_name = name;
34+
Name = name;
3435
_values = values.ToList();
3536
}
3637

3738
public VBAParser.AttributeStmtContext Context { get; }
3839

39-
public string Name => Context?.attributeName().GetText() ?? _name;
40-
40+
public string Name { get; }
41+
4142
public void AddValue(string value)
4243
{
43-
_values?.Add(value);
44+
_values.Add(value);
4445
}
4546

46-
public IReadOnlyList<string> Values
47-
{
48-
get { return Context?.attributeValue().Select(a => a.GetText()).ToArray() ?? _values.ToArray(); }
49-
}
47+
public IReadOnlyCollection<string> Values => _values.AsReadOnly();
5048

5149
public bool HasValue(string value)
5250
{
53-
return Values.Any(item => item.Equals(value, StringComparison.OrdinalIgnoreCase));
51+
return _values.Any(item => item.Equals(value, StringComparison.OrdinalIgnoreCase));
5452
}
5553

5654
public bool Equals(AttributeNode other)

0 commit comments

Comments
 (0)