Skip to content

[PROPOSED] styles framework - change behavior for unset REQUIRED settings from error to warning #227

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

kswanson33
Copy link
Contributor

@kswanson33 kswanson33 commented Apr 21, 2023

Currently, when REQUIRED settings are left unset in a book file, the styles framework will error out at the first instance it encounters.

It might be more useful to change this error to a warning, so that the compiler will keep running, & devs get a full log of unset settings (with less extra error noise) and can fix them all at once.

Comment below has examples of the current error behavior & proposed warning behavior.

Note that with the current error behavior, the styles won't build if required settings are unset. However, with the proposed warning behavior, the styles will build and the unset values will be set to the string 'UNSET'.

image

@kswanson33 kswanson33 self-assigned this Apr 21, 2023
@kswanson33
Copy link
Contributor Author

Tested by commenting out a few required settings in biology:

image

Current (error):

> dart styles/build/build.dart ./styles/books/biology/book.scss out2.css
Unhandled exception:
Error: "Error [ENUM__Error:::INDEX_ERROR]: Unknown setting `EverydayConnectionNote:::group-border-color`."
    ╷
122 │   @return error(enum('Error:::INDEX_ERROR'), "Unknown setting `#{$name}`.");
    │           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ╵
  styles/framework/settings/_init.scss 122:11      settings()
  styles/framework/settings/_init.scss 128:21      settings-not-null()
  styles/framework/design-shape/_init.scss 253:13  resolve-declaration()
  styles/framework/design-shape/_init.scss 242:13  resolve-declaration()
  styles/framework/design-shape/_init.scss 310:27  use()
  styles/books/biology/book.scss 222:1             root stylesheet
#0      throwWithTrace (package:sass/src/utils.dart:433:3)
#1      _EvaluateVisitor._addErrorSpan (package:sass/src/visitor/evaluate.dart:3463:7)
#2      _EvaluateVisitor.visitFunctionExpression (package:sass/src/visitor/evaluate.dart:2467:18)
#3      FunctionExpression.accept (package:sass/src/ast/sass/expression/function.dart:54:15)
#4      _EvaluateVisitor.visitReturnRule (package:sass/src/visitor/evaluate.dart:1855:37)
#5      ReturnRule.accept (package:sass/src/ast/sass/statement/return_rule.dart:26:55)
#6      _EvaluateVisitor._runFunctionCallable.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2585:39)
#7      _EvaluateVisitor._runUserDefinedCallable.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2554:27)
#8      Environment.scope (package:sass/src/environment.dart:774:22)
#9      _EvaluateVisitor._runUserDefinedCallable.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2512:29)
#10     _EvaluateVisitor._withEnvironment (package:sass/src/visitor/evaluate.dart:3139:26)
#11     _EvaluateVisitor._runUserDefinedCallable.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2511:14)
#12     _EvaluateVisitor._withStackFrame (package:sass/src/visitor/evaluate.dart:3325:26)
#13     _EvaluateVisitor._runUserDefinedCallable (package:sass/src/visitor/evaluate.dart:2508:18)
#14     _EvaluateVisitor._runFunctionCallable (package:sass/src/visitor/evaluate.dart:2583:14)
#15     _EvaluateVisitor.visitFunctionExpression.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2468:21)
#16     _EvaluateVisitor._addErrorSpan (package:sass/src/visitor/evaluate.dart:3460:22)
#17     _EvaluateVisitor.visitFunctionExpression (package:sass/src/visitor/evaluate.dart:2467:18)
#18     FunctionExpression.accept (package:sass/src/ast/sass/expression/function.dart:54:15)
#19     _EvaluateVisitor.visitVariableDeclaration (package:sass/src/visitor/evaluate.dart:2091:47)
#20     VariableDeclaration.accept (package:sass/src/ast/sass/statement/variable_declaration.dart:90:15)
#21     _EvaluateVisitor._runFunctionCallable.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2585:39)
#22     _EvaluateVisitor._runUserDefinedCallable.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2554:27)
#23     Environment.scope (package:sass/src/environment.dart:774:22)
#24     _EvaluateVisitor._runUserDefinedCallable.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2512:29)
#25     _EvaluateVisitor._withEnvironment (package:sass/src/visitor/evaluate.dart:3139:26)
#26     _EvaluateVisitor._runUserDefinedCallable.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2511:14)
#27     _EvaluateVisitor._withStackFrame (package:sass/src/visitor/evaluate.dart:3325:26)
#28     _EvaluateVisitor._runUserDefinedCallable (package:sass/src/visitor/evaluate.dart:2508:18)
#29     _EvaluateVisitor._runFunctionCallable (package:sass/src/visitor/evaluate.dart:2583:14)
#30     _EvaluateVisitor.visitFunctionExpression.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2468:21)
#31     _EvaluateVisitor._addErrorSpan (package:sass/src/visitor/evaluate.dart:3460:22)
#32     _EvaluateVisitor.visitFunctionExpression (package:sass/src/visitor/evaluate.dart:2467:18)
#33     FunctionExpression.accept (package:sass/src/ast/sass/expression/function.dart:54:15)
#34     _EvaluateVisitor.visitVariableDeclaration (package:sass/src/visitor/evaluate.dart:2091:47)
#35     VariableDeclaration.accept (package:sass/src/ast/sass/statement/variable_declaration.dart:90:15)
#36     _EvaluateVisitor.visitIfRule.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1472:30)
#37     _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#38     _EvaluateVisitor.visitIfRule.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1470:15)
#39     Environment.scope (package:sass/src/environment.dart:774:22)
#40     _EvaluateVisitor.visitIfRule (package:sass/src/visitor/evaluate.dart:1469:25)
#41     IfRule.accept (package:sass/src/ast/sass/statement/if_rule.dart:42:55)
#42     _EvaluateVisitor._runFunctionCallable.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2585:39)
#43     _EvaluateVisitor._runUserDefinedCallable.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2554:27)
#44     Environment.scope (package:sass/src/environment.dart:774:22)
#45     _EvaluateVisitor._runUserDefinedCallable.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2512:29)
#46     _EvaluateVisitor._withEnvironment (package:sass/src/visitor/evaluate.dart:3139:26)
#47     _EvaluateVisitor._runUserDefinedCallable.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2511:14)
#48     _EvaluateVisitor._withStackFrame (package:sass/src/visitor/evaluate.dart:3325:26)
#49     _EvaluateVisitor._runUserDefinedCallable (package:sass/src/visitor/evaluate.dart:2508:18)
#50     _EvaluateVisitor._runFunctionCallable (package:sass/src/visitor/evaluate.dart:2583:14)
#51     _EvaluateVisitor.visitFunctionExpression.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2468:21)
#52     _EvaluateVisitor._addErrorSpan (package:sass/src/visitor/evaluate.dart:3460:22)
#53     _EvaluateVisitor.visitFunctionExpression (package:sass/src/visitor/evaluate.dart:2467:18)
#54     FunctionExpression.accept (package:sass/src/ast/sass/expression/function.dart:54:15)
#55     _EvaluateVisitor.visitReturnRule (package:sass/src/visitor/evaluate.dart:1855:37)
#56     ReturnRule.accept (package:sass/src/ast/sass/statement/return_rule.dart:26:55)
#57     _EvaluateVisitor.visitIfRule.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1472:30)
#58     _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#59     _EvaluateVisitor.visitIfRule.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1470:15)
#60     Environment.scope (package:sass/src/environment.dart:774:22)
#61     _EvaluateVisitor.visitIfRule (package:sass/src/visitor/evaluate.dart:1469:25)
#62     IfRule.accept (package:sass/src/ast/sass/statement/if_rule.dart:42:55)
#63     _EvaluateVisitor._runFunctionCallable.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2585:39)
#64     _EvaluateVisitor._runUserDefinedCallable.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2554:27)
#65     Environment.scope (package:sass/src/environment.dart:774:22)
#66     _EvaluateVisitor._runUserDefinedCallable.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2512:29)
#67     _EvaluateVisitor._withEnvironment (package:sass/src/visitor/evaluate.dart:3139:26)
#68     _EvaluateVisitor._runUserDefinedCallable.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2511:14)
#69     _EvaluateVisitor._withStackFrame (package:sass/src/visitor/evaluate.dart:3325:26)
#70     _EvaluateVisitor._runUserDefinedCallable (package:sass/src/visitor/evaluate.dart:2508:18)
#71     _EvaluateVisitor._runFunctionCallable (package:sass/src/visitor/evaluate.dart:2583:14)
#72     _EvaluateVisitor.visitFunctionExpression.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2468:21)
#73     _EvaluateVisitor._addErrorSpan (package:sass/src/visitor/evaluate.dart:3460:22)
#74     _EvaluateVisitor.visitFunctionExpression (package:sass/src/visitor/evaluate.dart:2467:18)
#75     FunctionExpression.accept (package:sass/src/ast/sass/expression/function.dart:54:15)
#76     _EvaluateVisitor.visitVariableDeclaration (package:sass/src/visitor/evaluate.dart:2091:47)
#77     VariableDeclaration.accept (package:sass/src/ast/sass/statement/variable_declaration.dart:90:15)
#78     _EvaluateVisitor.visitIfRule.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1472:30)
#79     _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#80     _EvaluateVisitor.visitIfRule.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1470:15)
#81     Environment.scope (package:sass/src/environment.dart:774:22)
#82     _EvaluateVisitor.visitIfRule (package:sass/src/visitor/evaluate.dart:1469:25)
#83     IfRule.accept (package:sass/src/ast/sass/statement/if_rule.dart:42:55)
#84     _EvaluateVisitor.visitIfRule.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1472:30)
#85     _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#86     _EvaluateVisitor.visitIfRule.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1470:15)
#87     Environment.scope (package:sass/src/environment.dart:774:22)
#88     _EvaluateVisitor.visitIfRule (package:sass/src/visitor/evaluate.dart:1469:25)
#89     IfRule.accept (package:sass/src/ast/sass/statement/if_rule.dart:42:55)
#90     _EvaluateVisitor.visitEachRule.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1180:45)
#91     _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#92     _EvaluateVisitor.visitEachRule.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1179:16)
#93     _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#94     _EvaluateVisitor.visitEachRule.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1177:14)
#95     Environment.scope (package:sass/src/environment.dart:774:22)
#96     _EvaluateVisitor.visitEachRule (package:sass/src/visitor/evaluate.dart:1176:25)
#97     EachRule.accept (package:sass/src/ast/sass/statement/each_rule.dart:33:55)
#98     _EvaluateVisitor.visitEachRule.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1180:45)
#99     _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#100    _EvaluateVisitor.visitEachRule.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1179:16)
#101    _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#102    _EvaluateVisitor.visitEachRule.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1177:14)
#103    Environment.scope (package:sass/src/environment.dart:774:22)
#104    _EvaluateVisitor.visitEachRule (package:sass/src/visitor/evaluate.dart:1176:25)
#105    EachRule.accept (package:sass/src/ast/sass/statement/each_rule.dart:33:55)
#106    _EvaluateVisitor.visitStyleRule.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1912:17)
#107    _EvaluateVisitor._withStyleRule (package:sass/src/visitor/evaluate.dart:3291:26)
#108    _EvaluateVisitor.visitStyleRule.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1910:7)
#109    Environment.scope (package:sass/src/environment.dart:762:24)
#110    _EvaluateVisitor._withParent (package:sass/src/visitor/evaluate.dart:3249:31)
#111    _EvaluateVisitor.visitStyleRule (package:sass/src/visitor/evaluate.dart:1909:5)
#112    StyleRule.accept (package:sass/src/ast/sass/statement/style_rule.dart:30:55)
#113    _EvaluateVisitor.visitEachRule.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1180:45)
#114    _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#115    _EvaluateVisitor.visitEachRule.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1179:16)
#116    _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#117    _EvaluateVisitor.visitEachRule.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1177:14)
#118    Environment.scope (package:sass/src/environment.dart:774:22)
#119    _EvaluateVisitor.visitEachRule (package:sass/src/visitor/evaluate.dart:1176:25)
#120    EachRule.accept (package:sass/src/ast/sass/statement/each_rule.dart:33:55)
#121    _EvaluateVisitor.visitEachRule.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1180:45)
#122    _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#123    _EvaluateVisitor.visitEachRule.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1179:16)
#124    _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#125    _EvaluateVisitor.visitEachRule.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1177:14)
#126    Environment.scope (package:sass/src/environment.dart:774:22)
#127    _EvaluateVisitor.visitEachRule (package:sass/src/visitor/evaluate.dart:1176:25)
#128    EachRule.accept (package:sass/src/ast/sass/statement/each_rule.dart:33:55)
#129    _EvaluateVisitor.visitIfRule.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1472:30)
#130    _EvaluateVisitor._handleReturn (package:sass/src/visitor/evaluate.dart:3129:28)
#131    _EvaluateVisitor.visitIfRule.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1470:15)
#132    Environment.scope (package:sass/src/environment.dart:762:24)
#133    _EvaluateVisitor.visitIfRule (package:sass/src/visitor/evaluate.dart:1469:25)
#134    IfRule.accept (package:sass/src/ast/sass/statement/if_rule.dart:42:55)
#135    _EvaluateVisitor.visitIncludeRule.<anonymous closure>.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1740:59)
#136    _EvaluateVisitor._addErrorSpan (package:sass/src/visitor/evaluate.dart:3460:22)
#137    _EvaluateVisitor.visitIncludeRule.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1740:15)
#138    Environment.asMixin (package:sass/src/environment.dart:734:13)
#139    _EvaluateVisitor.visitIncludeRule.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1738:24)
#140    Environment.withContent (package:sass/src/environment.dart:726:13)
#141    _EvaluateVisitor.visitIncludeRule.<anonymous closure> (package:sass/src/visitor/evaluate.dart:1737:22)
#142    _EvaluateVisitor._runUserDefinedCallable.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2554:27)
#143    Environment.scope (package:sass/src/environment.dart:774:22)
#144    _EvaluateVisitor._runUserDefinedCallable.<anonymous closure>.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2512:29)
#145    _EvaluateVisitor._withEnvironment (package:sass/src/visitor/evaluate.dart:3139:26)
#146    _EvaluateVisitor._runUserDefinedCallable.<anonymous closure> (package:sass/src/visitor/evaluate.dart:2511:14)
#147    _EvaluateVisitor._withStackFrame (package:sass/src/visitor/evaluate.dart:3325:26)
#148    _EvaluateVisitor._runUserDefinedCallable (package:sass/src/visitor/evaluate.dart:2508:18)
#149    _EvaluateVisitor.visitIncludeRule (package:sass/src/visitor/evaluate.dart:1736:7)
#150    IncludeRule.accept (package:sass/src/ast/sass/statement/include_rule.dart:62:55)
#151    _EvaluateVisitor.visitStylesheet (package:sass/src/visitor/evaluate.dart:938:13)
#152    _EvaluateVisitor._execute.<anonymous closure> (package:sass/src/visitor/evaluate.dart:746:7)
#153    _EvaluateVisitor._withEnvironment (package:sass/src/visitor/evaluate.dart:3139:26)
#154    _EvaluateVisitor._execute (package:sass/src/visitor/evaluate.dart:716:5)
#155    _EvaluateVisitor.run.<anonymous closure> (package:sass/src/visitor/evaluate.dart:532:20)
#156    _rootRun (dart:async/zone.dart:1398:13)
#157    _CustomZone.run (dart:async/zone.dart:1300:19)
#158    _runZoned (dart:async/zone.dart:1803:10)
#159    runZoned (dart:async/zone.dart:1746:10)
#160    withEvaluationContext (package:sass/src/evaluation_context.dart:57:5)
#161    _EvaluateVisitor.run (package:sass/src/visitor/evaluate.dart:525:12)
#162    evaluate (package:sass/src/visitor/evaluate.dart:97:10)
#163    _compileStylesheet (package:sass/src/compile.dart:151:24)
#164    compile (package:sass/src/compile.dart:68:16)
#165    compileToResult (package:sass/sass.dart:109:7)
#166    main (file:///code/styles/build/build.dart:29:21)
#167    _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:295:33)
#168    _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:192:26)

Proposed (warning):

> dart styles/build/build.dart ./styles/books/biology/book.scss out.css
WARNING: Unknown setting `EverydayConnectionNote:::group-border-color`.
    styles/framework/settings/_init.scss 123:3       settings()
    styles/framework/settings/_init.scss 128:21      settings-not-null()
    styles/framework/design-shape/_init.scss 253:13  resolve-declaration()
    styles/framework/design-shape/_init.scss 242:13  resolve-declaration()
    styles/framework/design-shape/_init.scss 310:27  use()
    styles/books/biology/book.scss 222:1             root stylesheet

WARNING: Unknown setting `EverydayConnectionNote:::Title:::color`.
    styles/framework/settings/_init.scss 123:3       settings()
    styles/framework/settings/_init.scss 128:21      settings-not-null()
    styles/framework/design-shape/_init.scss 253:13  resolve-declaration()
    styles/framework/design-shape/_init.scss 310:27  use()
    styles/books/biology/book.scss 222:1             root stylesheet

WARNING: Unknown setting `EverydayConnectionNote:::Title:::font-family`.
    styles/framework/settings/_init.scss 123:3       settings()
    styles/framework/settings/_init.scss 128:21      settings-not-null()
    styles/framework/design-shape/_init.scss 253:13  resolve-declaration()
    styles/framework/design-shape/_init.scss 310:27  use()
    styles/books/biology/book.scss 222:1             root stylesheet

compile time is: 0:00:09.276950

@kswanson33 kswanson33 changed the title change behavior for unset REQUIRED settings from error to warning [PROPOSED] change behavior for unset REQUIRED settings from error to warning Apr 21, 2023
@kswanson33 kswanson33 changed the title [PROPOSED] change behavior for unset REQUIRED settings from error to warning [PROPOSED] styles framework - change behavior for unset REQUIRED settings from error to warning Apr 21, 2023
Base automatically changed from iconic.iconology to main May 8, 2023 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants