Skip to content

Commit dc48697

Browse files
committed
Do not require signature for subprogram attribute specification if it is unique
1 parent e0041fe commit dc48697

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

vhdl_lang/src/analysis/declarative.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,6 @@ impl<'a> AnalyzeContext<'a> {
363363
}
364364
}
365365
}
366-
// @TODO Ignored for now
367366
Attribute::Specification(ref mut attr_spec) => {
368367
let AttributeSpecification {
369368
ident,
@@ -441,6 +440,8 @@ impl<'a> AnalyzeContext<'a> {
441440
err.add_to(diagnostics)?;
442441
}
443442
}
443+
} else if let Some(ent) = overloaded.as_unique() {
444+
designator.set_unique_reference(ent);
444445
} else {
445446
diagnostics.push(Diagnostic::signature_required(designator));
446447
}

vhdl_lang/src/analysis/tests/typecheck_expression.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1287,11 +1287,14 @@ signal bad_sig : integer_vector(0 to 15);
12871287
attribute ram_style of good_sig : signal is 0;
12881288
attribute ram_style of bad_sig[return integer] : signal is 0;
12891289
1290-
function good_fun return natural;
1291-
function bad_fun1 return natural;
1292-
function bad_fun2 return natural;
1293-
1294-
attribute ram_style of good_fun[return natural] : signal is 0;
1290+
function good_fun1 return natural;
1291+
function good_fun2 return natural;
1292+
function bad_fun1 return natural;
1293+
function bad_fun1 return character;
1294+
function bad_fun2 return natural;
1295+
1296+
attribute ram_style of good_fun1 : signal is 0;
1297+
attribute ram_style of good_fun2[return natural] : signal is 0;
12951298
attribute ram_style of bad_fun1 : signal is 0;
12961299
attribute ram_style of bad_fun2[return boolean] : signal is 0;
12971300

0 commit comments

Comments
 (0)