brighterscript 0.66.0-alpha.4 → 0.66.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/dist/DiagnosticMessages.d.ts +6 -1
- package/dist/DiagnosticMessages.js +5 -0
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/LanguageServer.d.ts +1 -0
- package/dist/LanguageServer.js +8 -5
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Program.d.ts +3 -8
- package/dist/Program.js +3 -51
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.js +14 -2
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +1 -13
- package/dist/Scope.js +10 -65
- package/dist/Scope.js.map +1 -1
- package/dist/SymbolTable.d.ts +12 -10
- package/dist/SymbolTable.js +33 -24
- package/dist/SymbolTable.js.map +1 -1
- package/dist/astUtils/creators.js +5 -3
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +3 -1
- package/dist/astUtils/reflection.js +12 -1
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +2 -1
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.d.ts +3 -3
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +39 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.js +305 -3
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1369 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.d.ts +9 -4
- package/dist/bscPlugin/hover/HoverProcessor.js +64 -67
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +107 -4
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.js +18 -15
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +10 -1
- package/dist/bscPlugin/validation/ScopeValidator.js +85 -42
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +276 -0
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
- package/dist/diagnosticUtils.d.ts +7 -2
- package/dist/diagnosticUtils.js +43 -15
- package/dist/diagnosticUtils.js.map +1 -1
- package/dist/files/BrsFile.Class.spec.js +10 -8
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +3 -20
- package/dist/files/BrsFile.js +7 -355
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +2 -248
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +1 -6
- package/dist/files/XmlFile.js +0 -13
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +0 -36
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/interfaces.d.ts +8 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.d.ts +12 -0
- package/dist/lexer/Lexer.js +27 -2
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +40 -0
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/Token.d.ts +4 -0
- package/dist/lexer/Token.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +4 -0
- package/dist/lexer/TokenKind.js +10 -1
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/parser/AstNode.d.ts +8 -1
- package/dist/parser/AstNode.js +16 -0
- package/dist/parser/AstNode.js.map +1 -1
- package/dist/parser/Expression.d.ts +16 -1
- package/dist/parser/Expression.js +43 -1
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +7 -0
- package/dist/parser/Parser.js +46 -6
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +327 -3
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +1 -1
- package/dist/parser/Statement.d.ts +16 -3
- package/dist/parser/Statement.js +53 -15
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/tests/Parser.spec.js +2 -1
- package/dist/parser/tests/Parser.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +16 -8
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +12 -6
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/While.spec.js +8 -4
- package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +4 -4
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +13 -13
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +0 -33
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +1 -257
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +6 -3
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +5 -3
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Set.spec.js +26 -13
- package/dist/parser/tests/statement/Set.spec.js.map +1 -1
- package/dist/roku-types/data.json +158 -137
- package/dist/roku-types/index.d.ts +3 -38
- package/dist/types/ArrayType.d.ts +3 -1
- package/dist/types/ArrayType.js +42 -6
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +21 -2
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/BooleanType.d.ts +0 -3
- package/dist/types/BooleanType.js +5 -6
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BscType.d.ts +6 -2
- package/dist/types/BscType.js +20 -4
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BuiltInInterfaceAdder.d.ts +15 -0
- package/dist/types/BuiltInInterfaceAdder.js +93 -0
- package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
- package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
- package/dist/types/BuiltInInterfaceAdder.spec.js +109 -0
- package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
- package/dist/types/ClassType.d.ts +4 -0
- package/dist/types/ClassType.js +25 -1
- package/dist/types/ClassType.js.map +1 -1
- package/dist/types/DoubleType.d.ts +1 -4
- package/dist/types/DoubleType.js +5 -6
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DynamicType.js +2 -0
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/EnumType.d.ts +1 -3
- package/dist/types/EnumType.js +6 -5
- package/dist/types/EnumType.js.map +1 -1
- package/dist/types/FloatType.d.ts +1 -4
- package/dist/types/FloatType.js +5 -6
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FunctionType.js +5 -1
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/IntegerType.d.ts +1 -4
- package/dist/types/IntegerType.js +5 -6
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/InterfaceType.js +2 -1
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InvalidType.d.ts +1 -1
- package/dist/types/InvalidType.js +5 -1
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +1 -4
- package/dist/types/LongIntegerType.js +5 -6
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/ObjectType.js +2 -0
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +12 -0
- package/dist/types/ReferenceType.js +69 -12
- package/dist/types/ReferenceType.js.map +1 -1
- package/dist/types/ReferenceType.spec.js +15 -0
- package/dist/types/ReferenceType.spec.js.map +1 -1
- package/dist/types/StringType.d.ts +1 -4
- package/dist/types/StringType.js +4 -5
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/TypedFunctionType.js +9 -2
- package/dist/types/TypedFunctionType.js.map +1 -1
- package/dist/types/UnionType.d.ts +2 -0
- package/dist/types/UnionType.js +22 -1
- package/dist/types/UnionType.js.map +1 -1
- package/dist/types/UnionType.spec.js +43 -17
- package/dist/types/UnionType.spec.js.map +1 -1
- package/dist/types/VoidType.d.ts +1 -1
- package/dist/types/VoidType.js +5 -1
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/helpers.d.ts +1 -0
- package/dist/types/helpers.js +18 -3
- package/dist/types/helpers.js.map +1 -1
- package/dist/util.d.ts +10 -1
- package/dist/util.js +77 -1
- package/dist/util.js.map +1 -1
- package/package.json +1 -1
|
@@ -697,6 +697,181 @@ describe('ScopeValidator', () => {
|
|
|
697
697
|
//should have no errors
|
|
698
698
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
699
699
|
});
|
|
700
|
+
it('allows calling future function and save to same variable', () => {
|
|
701
|
+
program.setFile('source/util.brs', `
|
|
702
|
+
function getSomeInt() as integer
|
|
703
|
+
numVal = getUntypedNum()
|
|
704
|
+
numVal = cInt(numVal)
|
|
705
|
+
return numVal
|
|
706
|
+
end function
|
|
707
|
+
|
|
708
|
+
function getUntypedNum()
|
|
709
|
+
return 1
|
|
710
|
+
end function
|
|
711
|
+
`);
|
|
712
|
+
program.validate();
|
|
713
|
+
//should have no errors
|
|
714
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
715
|
+
});
|
|
716
|
+
it('allows union types of all compatible types as arg', () => {
|
|
717
|
+
program.setFile('source/util.bs', `
|
|
718
|
+
sub printIntNum(num as float or double or integer)
|
|
719
|
+
print cInt(num)
|
|
720
|
+
end sub
|
|
721
|
+
`);
|
|
722
|
+
program.validate();
|
|
723
|
+
//should have no errors
|
|
724
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
725
|
+
});
|
|
726
|
+
it('allows function calls of built-in members of primitives', () => {
|
|
727
|
+
program.setFile('source/util.brs', `
|
|
728
|
+
sub doSomething()
|
|
729
|
+
myStr = "Hello World"
|
|
730
|
+
myStr = myStr.replace("World", "You")
|
|
731
|
+
print myStr
|
|
732
|
+
end sub
|
|
733
|
+
`);
|
|
734
|
+
program.validate();
|
|
735
|
+
//should have no errors
|
|
736
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
737
|
+
});
|
|
738
|
+
it('validates union types of all compatible types as arg - when some do not work', () => {
|
|
739
|
+
program.setFile('source/util.bs', `
|
|
740
|
+
sub printIntNum(maybeNum as float or string)
|
|
741
|
+
print cInt(maybeNum)
|
|
742
|
+
end sub
|
|
743
|
+
`);
|
|
744
|
+
program.validate();
|
|
745
|
+
//should have no errors
|
|
746
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
747
|
+
DiagnosticMessages_1.DiagnosticMessages.argumentTypeMismatch('float or string', 'float').message
|
|
748
|
+
]);
|
|
749
|
+
});
|
|
750
|
+
it('validates function calls of built-in members of primitives', () => {
|
|
751
|
+
program.setFile('source/util.brs', `
|
|
752
|
+
sub doSomething()
|
|
753
|
+
myStr = "Hello World"
|
|
754
|
+
notAString = 3.14
|
|
755
|
+
myStr = myStr.replace("World", notAString)
|
|
756
|
+
print myStr
|
|
757
|
+
end sub
|
|
758
|
+
`);
|
|
759
|
+
program.validate();
|
|
760
|
+
//should have error - 2nd param should be a string, not a float
|
|
761
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
762
|
+
DiagnosticMessages_1.DiagnosticMessages.argumentTypeMismatch('float', 'string').message
|
|
763
|
+
]);
|
|
764
|
+
});
|
|
765
|
+
it('validates method calls of classes', () => {
|
|
766
|
+
program.setFile('source/util.bs', `
|
|
767
|
+
class Klass
|
|
768
|
+
sub test(input as string)
|
|
769
|
+
end sub
|
|
770
|
+
end class
|
|
771
|
+
|
|
772
|
+
sub doSomething()
|
|
773
|
+
k = new Klass()
|
|
774
|
+
k.test(3.14)
|
|
775
|
+
end sub
|
|
776
|
+
`);
|
|
777
|
+
program.validate();
|
|
778
|
+
//should have error - param should be a string, not a float
|
|
779
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
780
|
+
DiagnosticMessages_1.DiagnosticMessages.argumentTypeMismatch('float', 'string').message
|
|
781
|
+
]);
|
|
782
|
+
});
|
|
783
|
+
it('validates inside method calls of classes', () => {
|
|
784
|
+
program.setFile('source/util.bs', `
|
|
785
|
+
class Klass
|
|
786
|
+
sub test(input as string)
|
|
787
|
+
end sub
|
|
788
|
+
|
|
789
|
+
sub otherTest()
|
|
790
|
+
m.test(3.14)
|
|
791
|
+
end sub
|
|
792
|
+
end class
|
|
793
|
+
`);
|
|
794
|
+
program.validate();
|
|
795
|
+
//should have error - param should be a string, not a float
|
|
796
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
797
|
+
DiagnosticMessages_1.DiagnosticMessages.argumentTypeMismatch('float', 'string').message
|
|
798
|
+
]);
|
|
799
|
+
});
|
|
800
|
+
it('validates calls of a constructor', () => {
|
|
801
|
+
program.setFile('source/util.bs', `
|
|
802
|
+
class Klass
|
|
803
|
+
sub new(name as string)
|
|
804
|
+
end sub
|
|
805
|
+
end class
|
|
806
|
+
|
|
807
|
+
sub createKlass()
|
|
808
|
+
k = new Klass(3.14)
|
|
809
|
+
end sub
|
|
810
|
+
`);
|
|
811
|
+
program.validate();
|
|
812
|
+
//should have error - param should be a string, not a float
|
|
813
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
814
|
+
DiagnosticMessages_1.DiagnosticMessages.argumentTypeMismatch('float', 'string').message
|
|
815
|
+
]);
|
|
816
|
+
});
|
|
817
|
+
it('validates super calls in a constructor', () => {
|
|
818
|
+
program.setFile('source/util.bs', `
|
|
819
|
+
class Klass
|
|
820
|
+
sub new(name as string)
|
|
821
|
+
end sub
|
|
822
|
+
end class
|
|
823
|
+
|
|
824
|
+
class SubKlass extends Klass
|
|
825
|
+
sub new()
|
|
826
|
+
super(3.14)
|
|
827
|
+
end sub
|
|
828
|
+
end class
|
|
829
|
+
`);
|
|
830
|
+
program.validate();
|
|
831
|
+
//should have error - param should be a string, not a float
|
|
832
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
833
|
+
DiagnosticMessages_1.DiagnosticMessages.argumentTypeMismatch('float', 'string').message
|
|
834
|
+
]);
|
|
835
|
+
});
|
|
836
|
+
it('validates super calls in a class methods', () => {
|
|
837
|
+
program.setFile('source/util.bs', `
|
|
838
|
+
class Klass
|
|
839
|
+
sub test(name as string)
|
|
840
|
+
end sub
|
|
841
|
+
end class
|
|
842
|
+
|
|
843
|
+
class SubKlass extends Klass
|
|
844
|
+
sub test2()
|
|
845
|
+
super.test(3.14)
|
|
846
|
+
end sub
|
|
847
|
+
end class
|
|
848
|
+
`);
|
|
849
|
+
program.validate();
|
|
850
|
+
//should have error - param should be a string, not a float
|
|
851
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
852
|
+
DiagnosticMessages_1.DiagnosticMessages.argumentTypeMismatch('float', 'string').message
|
|
853
|
+
]);
|
|
854
|
+
});
|
|
855
|
+
it('validates a function passed as an arg', () => {
|
|
856
|
+
program.setFile('source/util.bs', `
|
|
857
|
+
sub foo()
|
|
858
|
+
getPi = function()
|
|
859
|
+
return 3.14
|
|
860
|
+
end function
|
|
861
|
+
bar(getPi)
|
|
862
|
+
end sub
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
sub bar(num as integer)
|
|
866
|
+
print num
|
|
867
|
+
end sub
|
|
868
|
+
`);
|
|
869
|
+
program.validate();
|
|
870
|
+
//should have error - param should be a string, not a float
|
|
871
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
872
|
+
DiagnosticMessages_1.DiagnosticMessages.argumentTypeMismatch('function () as dynamic', 'integer').message
|
|
873
|
+
]);
|
|
874
|
+
});
|
|
700
875
|
});
|
|
701
876
|
describe('cannotFindName', () => {
|
|
702
877
|
it('finds variables from assignments from member functions of primitive types', () => {
|
|
@@ -710,6 +885,107 @@ describe('ScopeValidator', () => {
|
|
|
710
885
|
//should have no errors
|
|
711
886
|
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
712
887
|
});
|
|
888
|
+
it('validates when lhs of compound assignment does not exist', () => {
|
|
889
|
+
program.setFile('source/util.brs', `
|
|
890
|
+
sub main()
|
|
891
|
+
expected += chr(10) + " version=""2.0"""
|
|
892
|
+
end sub
|
|
893
|
+
`);
|
|
894
|
+
program.validate();
|
|
895
|
+
//should have error - cannot find "expected"
|
|
896
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
897
|
+
DiagnosticMessages_1.DiagnosticMessages.cannotFindName('expected').message
|
|
898
|
+
]);
|
|
899
|
+
});
|
|
900
|
+
});
|
|
901
|
+
describe('returnTypeMismatch', () => {
|
|
902
|
+
it('finds when a function returns a type that is not what was declared', () => {
|
|
903
|
+
program.setFile('source/util.bs', `
|
|
904
|
+
function getPi() as float
|
|
905
|
+
return "apple" ' get it?
|
|
906
|
+
end function
|
|
907
|
+
`);
|
|
908
|
+
program.validate();
|
|
909
|
+
//should have error - return value should be a float, not a string
|
|
910
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
911
|
+
DiagnosticMessages_1.DiagnosticMessages.returnTypeMismatch('string', 'float').message
|
|
912
|
+
]);
|
|
913
|
+
});
|
|
914
|
+
it('finds all return statements that do not match', () => {
|
|
915
|
+
program.setFile('source/util.bs', `
|
|
916
|
+
function getPi(kind as integer) as float
|
|
917
|
+
if kind = 1
|
|
918
|
+
return "apple"
|
|
919
|
+
else if kind = 2
|
|
920
|
+
return false
|
|
921
|
+
else if kind = 3
|
|
922
|
+
return new Pie("lemon")
|
|
923
|
+
end if
|
|
924
|
+
return 3.14
|
|
925
|
+
end function
|
|
926
|
+
|
|
927
|
+
class Pie
|
|
928
|
+
kind as string
|
|
929
|
+
sub new(kind as string)
|
|
930
|
+
m.kind = kind
|
|
931
|
+
end sub
|
|
932
|
+
end class
|
|
933
|
+
`);
|
|
934
|
+
program.validate();
|
|
935
|
+
//should have error - return value should be a float, not whatever else
|
|
936
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
937
|
+
DiagnosticMessages_1.DiagnosticMessages.returnTypeMismatch('string', 'float').message,
|
|
938
|
+
DiagnosticMessages_1.DiagnosticMessages.returnTypeMismatch('boolean', 'float').message,
|
|
939
|
+
DiagnosticMessages_1.DiagnosticMessages.returnTypeMismatch('Pie', 'float').message
|
|
940
|
+
]);
|
|
941
|
+
});
|
|
942
|
+
it('allows returning compatible types', () => {
|
|
943
|
+
program.setFile('source/util.bs', `
|
|
944
|
+
function getPi() as float
|
|
945
|
+
return 3 ' integers are compatible with floats
|
|
946
|
+
end function
|
|
947
|
+
|
|
948
|
+
function getPie() as Pie
|
|
949
|
+
return new Tart("lemon") ' Tart extends Pie
|
|
950
|
+
end function
|
|
951
|
+
|
|
952
|
+
class Pie
|
|
953
|
+
kind as string
|
|
954
|
+
sub new(kind as string)
|
|
955
|
+
m.kind = kind
|
|
956
|
+
end sub
|
|
957
|
+
end class
|
|
958
|
+
|
|
959
|
+
class Tart extends Pie
|
|
960
|
+
size = "small"
|
|
961
|
+
end class
|
|
962
|
+
`);
|
|
963
|
+
program.validate();
|
|
964
|
+
//should have no errors
|
|
965
|
+
(0, testHelpers_spec_1.expectZeroDiagnostics)(program);
|
|
966
|
+
});
|
|
967
|
+
it('detects return types on void functions (subs)', () => {
|
|
968
|
+
program.setFile('source/util.bs', `
|
|
969
|
+
sub sayHello(name as string)
|
|
970
|
+
return "hello " + name ' return should be void in subs
|
|
971
|
+
end sub
|
|
972
|
+
`);
|
|
973
|
+
program.validate();
|
|
974
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
975
|
+
DiagnosticMessages_1.DiagnosticMessages.returnTypeMismatch('string', 'void').message
|
|
976
|
+
]);
|
|
977
|
+
});
|
|
978
|
+
it('detects return types on void functions', () => {
|
|
979
|
+
program.setFile('source/util.bs', `
|
|
980
|
+
function sayHello(name as string) as void
|
|
981
|
+
return "hello " + name ' return should be void in subs
|
|
982
|
+
end function
|
|
983
|
+
`);
|
|
984
|
+
program.validate();
|
|
985
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [
|
|
986
|
+
DiagnosticMessages_1.DiagnosticMessages.returnTypeMismatch('string', 'void').message
|
|
987
|
+
]);
|
|
988
|
+
});
|
|
713
989
|
});
|
|
714
990
|
});
|
|
715
991
|
//# sourceMappingURL=ScopeValidator.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeValidator.spec.js","sourceRoot":"","sources":["../../../src/bscPlugin/validation/ScopeValidator.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScopeValidator.spec.js","sourceRoot":"","sources":["../../../src/bscPlugin/validation/ScopeValidator.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { Chalk } from 'chalk';
|
|
|
2
2
|
import type { BsConfig } from './BsConfig';
|
|
3
3
|
import { DiagnosticSeverity } from 'vscode-languageserver';
|
|
4
4
|
import type { BsDiagnostic } from '.';
|
|
5
|
+
import type { Range } from 'vscode-languageserver';
|
|
5
6
|
/**
|
|
6
7
|
* Prepare print diagnostic formatting options
|
|
7
8
|
*/
|
|
@@ -16,9 +17,13 @@ export declare function getPrintDiagnosticOptions(options: BsConfig): {
|
|
|
16
17
|
/**
|
|
17
18
|
* Format output of one diagnostic
|
|
18
19
|
*/
|
|
19
|
-
export declare function printDiagnostic(options: ReturnType<typeof getPrintDiagnosticOptions>, severity: DiagnosticSeverity, filePath: string, lines: string[], diagnostic: BsDiagnostic
|
|
20
|
+
export declare function printDiagnostic(options: ReturnType<typeof getPrintDiagnosticOptions>, severity: DiagnosticSeverity, filePath: string, lines: string[], diagnostic: BsDiagnostic, relatedInformation?: Array<{
|
|
21
|
+
range: Range;
|
|
22
|
+
filePath: string;
|
|
23
|
+
message: string;
|
|
24
|
+
}>): void;
|
|
20
25
|
export declare function getDiagnosticLine(diagnostic: BsDiagnostic, diagnosticLine: string, colorFunction: Chalk): string;
|
|
21
26
|
/**
|
|
22
27
|
* Given a diagnostic, compute the range for the squiggly
|
|
23
28
|
*/
|
|
24
|
-
export declare function getDiagnosticSquigglyText(
|
|
29
|
+
export declare function getDiagnosticSquigglyText(line: string, startCharacter: number, endCharacter: number): string;
|
package/dist/diagnosticUtils.js
CHANGED
|
@@ -44,8 +44,8 @@ exports.getPrintDiagnosticOptions = getPrintDiagnosticOptions;
|
|
|
44
44
|
/**
|
|
45
45
|
* Format output of one diagnostic
|
|
46
46
|
*/
|
|
47
|
-
function printDiagnostic(options, severity, filePath, lines, diagnostic) {
|
|
48
|
-
var _a, _b, _c, _d;
|
|
47
|
+
function printDiagnostic(options, severity, filePath, lines, diagnostic, relatedInformation) {
|
|
48
|
+
var _a, _b, _c, _d, _e;
|
|
49
49
|
let { includeDiagnostic, severityTextMap, typeColor } = options;
|
|
50
50
|
if (!includeDiagnostic[severity]) {
|
|
51
51
|
return;
|
|
@@ -68,6 +68,26 @@ function printDiagnostic(options, severity, filePath, lines, diagnostic) {
|
|
|
68
68
|
// default to an empty string so it doesn't crash the error printing below
|
|
69
69
|
let diagnosticLine = (_d = lines[(_c = (_b = (_a = diagnostic.range) === null || _a === void 0 ? void 0 : _a.start) === null || _b === void 0 ? void 0 : _b.line) !== null && _c !== void 0 ? _c : -1]) !== null && _d !== void 0 ? _d : '';
|
|
70
70
|
console.log(getDiagnosticLine(diagnostic, diagnosticLine, typeColor[severity]));
|
|
71
|
+
//print related information if present (only first few rows)
|
|
72
|
+
const relatedInfoList = relatedInformation !== null && relatedInformation !== void 0 ? relatedInformation : [];
|
|
73
|
+
let indent = ' ';
|
|
74
|
+
for (let i = 0; i < relatedInfoList.length; i++) {
|
|
75
|
+
let relatedInfo = relatedInfoList[i];
|
|
76
|
+
//only show the first 5 relatedInfo links
|
|
77
|
+
if (i < 5) {
|
|
78
|
+
console.log('');
|
|
79
|
+
console.log(indent, chalk_1.default.cyan((_e = relatedInfo.filePath) !== null && _e !== void 0 ? _e : '<unknown file>') +
|
|
80
|
+
':' +
|
|
81
|
+
chalk_1.default.yellow(relatedInfo.range
|
|
82
|
+
? (relatedInfo.range.start.line + 1) + ':' + (relatedInfo.range.start.character + 1)
|
|
83
|
+
: 'line?:col?'));
|
|
84
|
+
console.log(indent, relatedInfo.message);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
console.log('\n', indent, `...and ${relatedInfoList.length - i + 1} more`);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
71
91
|
console.log('');
|
|
72
92
|
}
|
|
73
93
|
exports.printDiagnostic = printDiagnostic;
|
|
@@ -76,10 +96,18 @@ function getDiagnosticLine(diagnostic, diagnosticLine, colorFunction) {
|
|
|
76
96
|
//only print the line information if we have some
|
|
77
97
|
if (diagnostic.range && diagnosticLine) {
|
|
78
98
|
const lineNumberText = chalk_1.default.bgWhite(' ' + chalk_1.default.black((diagnostic.range.start.line + 1).toString()) + ' ') + ' ';
|
|
79
|
-
const blankLineNumberText = chalk_1.default.bgWhite(' ' + chalk_1.default.white('
|
|
80
|
-
|
|
99
|
+
const blankLineNumberText = chalk_1.default.bgWhite(' ' + chalk_1.default.white(' '.repeat((diagnostic.range.start.line + 1).toString().length)) + ' ') + ' ';
|
|
100
|
+
//remove tabs in favor of spaces to make diagnostic printing more consistent
|
|
101
|
+
let leadingText = diagnosticLine.slice(0, diagnostic.range.start.character);
|
|
102
|
+
let leadingTextNormalized = leadingText.replace(/\t/g, ' ');
|
|
103
|
+
let actualText = diagnosticLine.slice(diagnostic.range.start.character, diagnostic.range.end.character);
|
|
104
|
+
let actualTextNormalized = actualText.replace(/\t/g, ' ');
|
|
105
|
+
let startIndex = leadingTextNormalized.length;
|
|
106
|
+
let endIndex = leadingTextNormalized.length + actualTextNormalized.length;
|
|
107
|
+
let diagnosticLineNormalized = diagnosticLine.replace(/\t/g, ' ');
|
|
108
|
+
const squigglyText = getDiagnosticSquigglyText(diagnosticLineNormalized, startIndex, endIndex);
|
|
81
109
|
result +=
|
|
82
|
-
lineNumberText +
|
|
110
|
+
lineNumberText + diagnosticLineNormalized + '\n' +
|
|
83
111
|
blankLineNumberText + colorFunction(squigglyText);
|
|
84
112
|
}
|
|
85
113
|
return result;
|
|
@@ -88,36 +116,36 @@ exports.getDiagnosticLine = getDiagnosticLine;
|
|
|
88
116
|
/**
|
|
89
117
|
* Given a diagnostic, compute the range for the squiggly
|
|
90
118
|
*/
|
|
91
|
-
function getDiagnosticSquigglyText(
|
|
92
|
-
var _a
|
|
119
|
+
function getDiagnosticSquigglyText(line, startCharacter, endCharacter) {
|
|
120
|
+
var _a;
|
|
93
121
|
let squiggle;
|
|
94
122
|
//fill the entire line
|
|
95
123
|
if (
|
|
96
124
|
//there is no range
|
|
97
|
-
|
|
125
|
+
typeof startCharacter !== 'number' || typeof endCharacter !== 'number' ||
|
|
98
126
|
//there is no line
|
|
99
127
|
!line ||
|
|
100
128
|
//both positions point to same location
|
|
101
|
-
|
|
129
|
+
startCharacter === endCharacter ||
|
|
102
130
|
//the diagnostic starts after the end of the line
|
|
103
|
-
|
|
131
|
+
startCharacter >= line.length) {
|
|
104
132
|
squiggle = ''.padStart((_a = line === null || line === void 0 ? void 0 : line.length) !== null && _a !== void 0 ? _a : 0, '~');
|
|
105
133
|
}
|
|
106
134
|
else {
|
|
107
|
-
let endIndex = Math.max(
|
|
135
|
+
let endIndex = Math.max(endCharacter, line.length);
|
|
108
136
|
endIndex = endIndex > 0 ? endIndex : 0;
|
|
109
137
|
if ((line === null || line === void 0 ? void 0 : line.length) < endIndex) {
|
|
110
138
|
endIndex = line.length;
|
|
111
139
|
}
|
|
112
|
-
let leadingWhitespaceLength =
|
|
140
|
+
let leadingWhitespaceLength = startCharacter;
|
|
113
141
|
let squiggleLength;
|
|
114
|
-
if (
|
|
142
|
+
if (endCharacter === Number.MAX_VALUE) {
|
|
115
143
|
squiggleLength = line.length - leadingWhitespaceLength;
|
|
116
144
|
}
|
|
117
145
|
else {
|
|
118
|
-
squiggleLength =
|
|
146
|
+
squiggleLength = endCharacter - startCharacter;
|
|
119
147
|
}
|
|
120
|
-
let trailingWhitespaceLength = endIndex -
|
|
148
|
+
let trailingWhitespaceLength = endIndex - endCharacter;
|
|
121
149
|
//opening whitespace
|
|
122
150
|
squiggle =
|
|
123
151
|
''.padStart(leadingWhitespaceLength, ' ') +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnosticUtils.js","sourceRoot":"","sources":["../src/diagnosticUtils.ts"],"names":[],"mappings":";;;AACA,iCAA0B;AAE1B,iEAA2D;
|
|
1
|
+
{"version":3,"file":"diagnosticUtils.js","sourceRoot":"","sources":["../src/diagnosticUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -143,7 +143,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
143
143
|
end sub
|
|
144
144
|
end class
|
|
145
145
|
class Duck extends Bird
|
|
146
|
-
sub new()
|
|
146
|
+
sub new(name)
|
|
147
147
|
thing = { m: "m"}
|
|
148
148
|
print thing.m
|
|
149
149
|
name = "Donald" + "Duck"
|
|
@@ -157,18 +157,20 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
157
157
|
it('allows non-`m` expressions and statements before the super call', () => {
|
|
158
158
|
program.setFile('source/main.bs', `
|
|
159
159
|
class Bird
|
|
160
|
-
|
|
160
|
+
name as string
|
|
161
|
+
sub new(name as string)
|
|
162
|
+
m.name = name
|
|
161
163
|
end sub
|
|
162
164
|
end class
|
|
163
165
|
class Duck extends Bird
|
|
164
166
|
sub new()
|
|
165
167
|
m.name = m.name + "Duck"
|
|
166
|
-
super()
|
|
168
|
+
super("Flappy")
|
|
167
169
|
end sub
|
|
168
170
|
end class
|
|
169
171
|
`);
|
|
170
172
|
program.validate();
|
|
171
|
-
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.classConstructorIllegalUseOfMBeforeSuperCall()), { range: vscode_languageserver_1.Range.create(
|
|
173
|
+
(0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.classConstructorIllegalUseOfMBeforeSuperCall()), { range: vscode_languageserver_1.Range.create(9, 24, 9, 25) }), Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.classConstructorIllegalUseOfMBeforeSuperCall()), { range: vscode_languageserver_1.Range.create(9, 33, 9, 34) })]);
|
|
172
174
|
});
|
|
173
175
|
});
|
|
174
176
|
describe('transpile', () => {
|
|
@@ -192,14 +194,14 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
192
194
|
class Animal
|
|
193
195
|
species1 = "Animal"
|
|
194
196
|
sub new()
|
|
195
|
-
print "From Animal: " + m.
|
|
197
|
+
print "From Animal: " + m.species1
|
|
196
198
|
end sub
|
|
197
199
|
end class
|
|
198
200
|
class Duck extends Animal
|
|
199
201
|
species2 = "Duck"
|
|
200
202
|
sub new()
|
|
201
203
|
super()
|
|
202
|
-
print "From Duck: " + m.
|
|
204
|
+
print "From Duck: " + m.species2
|
|
203
205
|
end sub
|
|
204
206
|
end class
|
|
205
207
|
`, `
|
|
@@ -207,7 +209,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
207
209
|
instance = {}
|
|
208
210
|
instance.new = sub()
|
|
209
211
|
m.species1 = "Animal"
|
|
210
|
-
print "From Animal: " + m.
|
|
212
|
+
print "From Animal: " + m.species1
|
|
211
213
|
end sub
|
|
212
214
|
return instance
|
|
213
215
|
end function
|
|
@@ -222,7 +224,7 @@ describe('BrsFile BrighterScript classes', () => {
|
|
|
222
224
|
instance.new = sub()
|
|
223
225
|
m.super0_new()
|
|
224
226
|
m.species2 = "Duck"
|
|
225
|
-
print "From Duck: " + m.
|
|
227
|
+
print "From Duck: " + m.species2
|
|
226
228
|
end sub
|
|
227
229
|
return instance
|
|
228
230
|
end function
|